Arduino(アルドゥイーノ/ ɑː r ˈ d w iː n oʊ /)は、クアルコム、プロジェクト、およびユーザーコミュニティが所有するイタリアのオープンソースハードウェアおよびソフトウェア企業であり、デジタルデバイスの構築用のシングルボードマイクロコントローラとマイクロコントローラキットの設計と製造を行っています。ハードウェア製品はCC BY-SAライセンスの下でライセンスされており、ソフトウェアはGNU Lesser General Public License(LGPL)またはGNU General Public License(GPL)の下でライセンスされており、[1]誰でもArduinoボードの製造とソフトウェアの配布が可能です。Arduinoボードは、公式ウェブサイトまたは正規代理店から市販されています。[2]
Arduino ボードの設計では、さまざまなマイクロプロセッサとコントローラが使用されています。ボードには、さまざまな拡張ボード (「シールド」) やブレッドボード(プロトタイプ用)、その他の回路に接続できるデジタルおよびアナログ入出力(I/O) ピンのセットが装備されています。ボードには、一部のモデルでプログラムのロードにも使用されるユニバーサル シリアル バス(USB) を含むシリアル通信インターフェイスが搭載されています。マイクロコントローラは、 Processing 言語に触発され、Processing IDE の修正バージョンで使用される、 Arduino プログラミング言語としても知られる標準 API を使用して、 CおよびC++プログラミング言語(Embedded C) を使用してプログラムできます。Arduinoプロジェクトでは、従来のコンパイラツールチェーンの使用に加えて、 Goで開発された統合開発環境(IDE) とコマンド ラインツールも提供しています。
Arduinoプロジェクトは、イタリアのイヴレーアにあるインタラクションデザイン研究所[3]の学生向けのツールとして2005年に始まりました。その目的は、初心者から専門家までが、センサーとアクチュエータを用いて環境と相互作用するデバイスを低コストで簡単に作成できるようにすることです。メーカー向けのデバイスの一般的な例としては、シンプルなロボット、サーモスタット、モーションセンサーなどが挙げられます。
Arduinoという名前は、プロジェクトの創設者の何人かが集まっていたBar di Re Arduinoに由来しています。このバーはイタリアのイヴレーアにあり、Arduinにちなんで名付けられました。[4] [5]

ArduinoプロジェクトはイタリアのイヴレアにあるInteraction Design Institute Ivrea(IDII)で始まりました。[3]当時、学生たちは50ドルのBASIC Stampマイクロコントローラを使用していました。2004年にHernando BarragánはMassimo BanziとCasey Reasの指導の下、IDIIでの修士論文プロジェクトとして開発プラットフォームWiringを作成しました。Casey ReasはBen FryとProcessing開発プラットフォームを共同開発したことで知られています。プロジェクトの目標は、エンジニア以外の人がデジタルプロジェクトを作成するためのシンプルで低コストのツールを作成することでした。Wiringプラットフォームは、ATmega 128マイクロコントローラを搭載したプリント基板(PCB)、Processingに基づくIDE、マイクロコントローラを簡単にプログラムするためのライブラリ関数で構成されていました。[6] 2005年、マッシモ・バンジは、同じくIDIIの学生であるデイビッド・メリス、そしてデイビッド・クアルティエルスと共に、より安価なATmega8マイクロコントローラのサポートを追加することでWiringを拡張しました。Wiringから分岐したこの新しいプロジェクトはArduinoと呼ばれました。[6]
初期のArduinoコアチームは、Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellisで構成されていました。[3]
プラットフォームの完成後、オープンソースコミュニティではより軽量で安価なバージョンが配布されました。2011年半ばには、公式Arduinoが30万台以上商用生産されたと推定され、[7] 2013年には70万台の公式ボードがユーザーの手に渡りました。[8]
2008年初頭、Arduinoプロジェクトの共同創設者5人は、Arduino関連の商標を保有する会社、Arduino LLC [9]を設立しました。ボードの製造と販売は外部企業に委託され、Arduino LLCはそれら企業からロイヤルティを受け取ることになりました。Arduino LLCの設立規約には、創設者5人それぞれがArduinoブランドの所有権を新たに設立された会社に譲渡することが規定されていました。[要出典]
2008年末、ジャンルカ・マルティーノ氏の会社スマートプロジェクトはイタリアでArduinoの商標を登録したが、他の共同設立者には約2年間秘密にしていた。この事実は、Arduino社が世界の他の地域で商標を登録しようとした際に(当初は米国のみで登録していた)、すでにイタリアで登録されていることが判明したことで発覚した。商標を元のArduino社の管理下に置くためのマルティーノ氏と彼の会社との交渉は失敗に終わった。2014年、スマートプロジェクトはロイヤリティの支払いを拒否し始めた。その後、フェデリコ・ムスト氏を新CEOに任命し、社名をArduino SRLに変更してウェブサイトarduino.orgを作成し、元のarduino.ccのグラフィックとレイアウトをコピーした。これがArduino開発チームに亀裂を生じさせた。[10] [11] [12]
2015年1月、Arduino LLCはArduino SRLに対して訴訟を起こした。[13]
2015年5月、Arduino LLCは世界的商標「Genuino」を作成し、米国以外ではブランド名として使用されるようになりました。[14]
2016年10月1日、ニューヨークで開催されたワールドメーカーフェアにおいて、Arduino LLCの共同創業者兼CEOであるマッシモ・バンツィ氏とArduino SRLのCEOであるフェデリコ・ムスト氏は、両社の合併によりArduino AGを設立することを発表しました。 [15]同じ頃、マッシモ・バンツィ氏は、同社に加えて「Arduinoの新たな始まり」として新たなArduino財団を設立すると発表したが、この決定は後に撤回された。[16] [17] [18]
2017年4月、Wired誌はムスト氏が「学歴を捏造していた…会社のウェブサイト、個人のLinkedInアカウント、さらにはイタリアのビジネス文書でさえ、最近までマサチューセッツ工科大学で博士号を取得していると記載されていた。経歴書の中には、ニューヨーク大学でMBAを取得したと記載されていたものもあった」と報じた。Wired誌によると、どちらの大学にもムスト氏の在籍記録はなく、ムスト氏は後にWired誌のインタビューでこれらの学位を取得したことはないと認めた。[19]ムスト氏をめぐる論争は、2017年7月に彼がArduinoのウェブサイトから多くのオープンソースライセンス、回路図、コードを削除したと報じられ、調査と抗議を引き起こしたことでさらに続いた。[20]
2017年までに、Arduino AGは多くのArduino商標を所有していました。2017年7月、マッシモ・バンジ、ダヴィッド・クアルティエルス、ダヴィッド・メリス、トム・イゴエによって設立されたBCMIがArduino AGとすべてのArduino商標を買収しました。ファビオ・ヴィオランテが新CEOに就任し、フェデリコ・ムストはArduino AGを退社しました。[21] [22]
2017年10月、ArduinoはArm Holdings (ARM)との提携を発表しました。発表では、「ARMはArduinoの中核的価値として独立性を認識しており、ARMアーキテクチャへのロックインは一切行いません」と述べられていました。Arduinoは、今後もあらゆる技術ベンダーおよびアーキテクチャと連携していく意向です。[23]ヴィオランテ氏の指導の下、同社は再び成長し、新たな設計をリリースし始めました。Genuino商標は廃止され、すべての製品が再びArduinoの名称でブランド化されました。
2018年8月、Arduinoは新しいオープンソースのコマンドラインツール(arduino-cli)を発表しました。これはIDEの代わりに使用してシェルからボードをプログラムすることができます。[24]
2019年2月、ArduinoはCreateオンライン環境の拡張としてIoTクラウドサービスを発表しました。[25]
2020年2月現在、ArduinoコミュニティにはIDEのダウンロード数に基づいて約3000万人のアクティブユーザーがいます。[26]
2025年10月、Arduinoがアメリカの半導体多国籍企業Qualcommに買収されたことが発表されたが、買収額はまだ公表されていない。[27]

Arduinoはオープンソースハードウェアです。ハードウェアのリファレンスデザインは、クリエイティブ・コモンズ表示・継承2.5ライセンスに基づいて配布されており、Arduinoのウェブサイトで入手できます。また、一部のハードウェアバージョンのレイアウトファイルと製品ファイルも入手可能です。[要出典]
ハードウェアとソフトウェアの設計はコピーレフトライセンスの下で自由に利用可能ですが、開発者はArduinoという名称を公式製品専用とし、許可なく派生作品に使用しないことを要求しています。Arduinoという名称の使用に関する公式ポリシー文書では、プロジェクトは他者の成果物を公式製品に組み込むことにオープンであることを強調しています。[28]市販されているArduino互換製品の中には、 -duinoで終わる様々な名称を使用することで、プロジェクト名を避けているものもあります。[29]

ほとんどのArduinoボードは、フラッシュメモリ、ピン数、機能が異なるAtmel 8ビットAVRマイクロコントローラ(ATmega8、[31] ATmega168、ATmega328 、ATmega1280、またはATmega2560)で構成されています。 [32] Atmel SAM3X8Eをベースにした32ビットArduino Dueは、 2012年に導入されました。[33]ボードは、プログラミングや他の回路への組み込みのための接続を容易にする、単列または2列のピンまたはメスヘッダーを使用しています。これらは、シールドと呼ばれるアドオンモジュールと接続できます。複数の、場合によっては積み重ねられたシールドは、 I²Cシリアルバスを介して個別にアドレス指定できます。ほとんどのボードには、5Vリニアレギュレータと16MHzの水晶発振器またはセラミック共振器が含まれています。 LilyPad [34]などの一部の設計では、 8MHzで動作し、特定のフォームファクタの制限によりオンボード電圧レギュレータが省略されています。
Arduinoマイクロコントローラには、オンチップフラッシュメモリへのプログラムのアップロードを簡素化するブートローダがあらかじめプログラムされている。Arduino UnoのデフォルトのブートローダはOptibootブートローダである。[35]ボードには、別のコンピュータへのシリアル接続を介してプログラムコードがロードされる。一部のシリアルArduinoボードには、RS-232ロジックレベルとトランジスタ-トランジスタロジック(TTLシリアル)レベル信号間を変換するレベルシフタ回路が搭載されている。現在のArduinoボードは、 FTDI FT232などのUSB-シリアルアダプタチップを使用して実装されたユニバーサルシリアルバス(USB)経由でプログラムされる。後期モデルのUnoボードなど一部のボードでは、FTDIチップの代わりに、独自のICSPヘッダーを介して再プログラム可能なUSB-シリアルファームウェアを搭載した別のAVRチップが搭載されている。 Arduino Miniや非公式のBoarduinoなどの他の派生モデルでは、取り外し可能なUSB-シリアル変換ボードまたはケーブル、Bluetooth、その他の接続方法を使用します。Arduino IDEではなく、従来のマイクロコントローラツールと併用する場合は、標準的なAVRインシステムプログラミング(ISP)を使用します。[要出典]

Arduinoボードは、マイクロコントローラのほとんどのI/Oピンを他の回路で使用できるように公開しています。Diecimila [ a ] 、 Duemilanove [b]、および現在のUno [c]は、14本のデジタルI/Oピン(そのうち6本はパルス幅変調(PWM)信号を生成可能)と6本のアナログ入力(6本はデジタルI/Oピンとしても使用可能)を提供します。これらのピンは、メス型0.1インチ(2.54 mm)ヘッダーを介してボード上面にあります。いくつかのプラグインアプリケーションシールドも市販されています。Arduino NanoおよびArduino互換のBare Bones Board [36]とBoarduino [37]ボードでは、はんだ付け不要のブレッドボードに差し込むことができるオス型ヘッダーピンがボード下面に用意されている場合があります。
Arduino互換ボードやArduino派生ボードは数多く存在します。中にはArduinoと機能的に同等で、互換性のあるものもあります。また、出力ドライバを追加することで基本的なArduinoを拡張したものも多く、学校教育での使用を目的としたものが多くあります[38] 。これにより、バギーや小型ロボットの製作が容易になります。電気的には同等ですが、フォームファクタが異なるものもあり、シールドとの互換性が維持される場合もあれば、維持されない場合もあります。また、互換性の異なるプロセッサを搭載した派生ボードもあります。
ハードウェアのバリエーションに加えて、EDAツールでArduinoハードウェアをサポートするためのオープンソースライブラリも開発されています。そのようなプロジェクトの1つは、 Arduinoモジュール、拡張ボード、コネクタ用のKiCad回路図シンボルとPCBフットプリントを提供しており、エンジニアがArduinoを設計に統合しやすくしています。[39]
オリジナルのArduinoハードウェアはイタリアの会社Smart Projectsによって製造されました。[40]いくつかのArduinoブランドのボードはアメリカの会社SparkFun ElectronicsとAdafruit Industriesによって設計されました。[41] 2016年現在[アップデート]、17バージョンのArduinoハードウェアが商業的に生産されています。
ArduinoおよびArduino互換ボードは、シールドと呼ばれるプリント回路拡張ボードを使用し、通常付属のArduinoピンヘッダーに差し込みます。[58]シールドは、 3Dプリントなどのアプリケーション用のモーター制御、 GNSS(衛星航法)、イーサネット、液晶ディスプレイ(LCD)、ブレッドボード(プロトタイピング)などへの応用が可能です。また、いくつかのシールドはDIY(自作)も可能です。 [ 59] [60] [61]
Arduinoハードウェア用のプログラムは、対象プロセッサ用のバイナリマシンコードを生成するコンパイラを用いて、任意のプログラミング言語で記述できます。Atmelは、8ビットAVRおよび32ビットARM Cortex-Mベースのマイクロコントローラ向けに、AVR Studio(旧バージョン)とAtmel Studio(新バージョン)という開発環境を提供しています。[62] [63] [64]
Arduino統合開発環境(IDE)は、Javaで書かれたProcessing IDEをベースにしたクロスプラットフォームアプリケーション(Microsoft Windows、macOS、Linux用)です。プログラミングスタイルとHALとしてWiring APIを使用しています。テキストの切り取りと貼り付け、テキストの検索と置換、自動インデント、括弧の一致、構文の強調表示などの機能を備えたコードエディタが含まれており、プログラムをコンパイルしてArduinoボードにアップロードするためのシンプルなワンクリックメカニズムを提供しています。また、メッセージエリア、テキストコンソール、共通機能のボタンと階層構造の操作メニューを備えたツールバーも含まれています。IDEのソースコードは、GNU General Public Licenseバージョン2の下で公開されています。 [66]
Arduino IDEは、特別なコード構造化ルールを用いてC言語とC++言語をサポートしています。Arduino IDEは、 Wiringプロジェクトのソフトウェアライブラリを提供しており、多くの一般的な入出力手順を提供しています。ユーザーが記述するコードに必要なのは、スケッチの開始とメインプログラムループの2つの基本関数だけです。これらは、 IDEディストリビューションに含まれるGNUツールチェーンを使用して、プログラムスタブmain()とコンパイルおよびリンクされ、実行可能な循環実行プログラムになります。Arduino IDEは、 avrdudeプログラムを使用して実行コードを16進数エンコードのテキストファイルに変換し、ボードのファームウェア内のローダープログラムによってArduinoボードにロードします。伝統的に、Arduino IDEはAtmel AVRマイクロコントローラをベースにしたArduinoの公式ボードをプログラムするために使用されていましたが、時間の経過とともにArduinoの人気が高まり、オープンソースコンパイラが利用可能になると、PIC、STM32、TI MSP430、ESP32などのさらに多くのプラットフォームがArduino IDEを使用してコーディングできるようになりました。[67]
新しいArduino IDEの最初のアルファプレビューは、2019年10月18日にArduino Pro IDEとしてリリースされました。ベータプレビューは2021年3月1日にIDE 2.0に改名されてリリースされました。2022年9月14日には、Arduino IDE 2.0が正式に安定版としてリリースされました。[69]
このシステムは依然としてArduino CLI(コマンドラインインターフェース)を使用していますが、より専門的な開発環境と自動補完のサポートなどの改良が加えられています。[70]アプリケーションのフロントエンドはEclipse TheiaオープンソースIDEに基づいています。主な新機能は以下のとおりです。[71]
Arduino IDE 2.0が提供する重要な機能の一つはデバッグ機能です。[72]これにより、シングルステップ実行、ブレークポイントの挿入、メモリの表示が可能になります。デバッグには、デバッグポートとデバッグプローブを備えたターゲットチップが必要です。公式Arduino Zeroボードはそのままデバッグ可能です。その他の公式Arduino SAMD21ボードでは、別途SEGGER J-LinkまたはAtmel-ICEが必要です。
サードパーティ製のボードでも、GDB、OPENOCDをサポートし、デバッグプローブを備えている限り、Arduino IDE 2.0でのデバッグが可能です。コミュニティは、ATMega328PベースのArduino [73]やCH32 RISC-Vボード[74]など のデバッグに貢献しています。
スケッチはArduino IDEで書かれたプログラムです。[75]スケッチは開発用コンピュータに.inoという拡張子のテキストファイルとして保存されます。Arduinoソフトウェア(IDE)1.0より前のバージョンでは、スケッチは.pdeという拡張子で保存されていました。
最小限のArduino C/C++プログラムは2つの関数のみで構成されています。[76]
setup(): この関数は、スケッチが電源投入またはリセット後に起動したときに一度呼び出されます。変数、入力ピンと出力ピンのモード、およびスケッチに必要なその他のライブラリを初期化するために使用されます。これは関数に類似していますmain()。[77]loop():setup()関数が終了した後、loop()関数はメインプログラム内で繰り返し実行されます。この関数は、ボードの電源がオフになるかリセットされるまでボードを制御します。これは関数に類似していますwhile(1)。[78]
ほとんどのArduinoボードには、発光ダイオード(LED)と、ピン13とグランド間に接続された電流制限抵抗器が搭載されており、多くのテストやプログラム機能に便利な機能です。[79]初心者が使用する典型的なプログラムは、Hello, World!に似た「blink」で、Arduinoボードに統合されたオンボードLEDを繰り返し点滅させます。このプログラムは、IDE環境に含まれる内部ライブラリによって提供される関数pinMode()、、digitalWrite()およびを使用します。 [80] [81] [82]このプログラムは通常、メーカーによって新しいArduinoボードにロードされます。
delay()
const int LED_PIN = 13 ; // LED に取り付けられたピン番号。
void setup () { pinMode ( LED_PIN , OUTPUT ); // ピン13をデジタル出力として設定します。}
void loop () { digitalWrite ( LED_PIN , HIGH ); // LED をオンにします。delay ( 1000 ); // 1 秒 (1000 ミリ秒) 待機します。digitalWrite ( LED_PIN , LOW ) ; // LEDをオフにします。delay ( 1000 ) ; // 1 秒待機します。}
スイープの例 Arduinoでサーボをスイープするとは、指定された動作範囲でサーボを前後に動かすことを意味します。これは通常、 ArduinoのServoライブラリを用いて行われます。Arduinoでサーボをスイープするには、サーボのVCC(赤線)を5Vに、GND(黒/茶線)をGNDに、信号線(黄/白線)をPWM対応ピン(例:ピン9)に接続します。動きを制御するにはServoライブラリを使用します。以下のコードは、サーボを0°から180°まで徐々に動かし、ループで元に戻します。
#include <Servo.h>
Servo myServo ; // Servoオブジェクトを作成する
void setup () { myServo . attach ( 9 ); // サーボをピン9に接続する}
void loop () { for ( int pos = 0 ; pos <= 180 ; pos ++ ) { // 0 °から 180° へ移動myServo.write ( pos ) ; delay ( 15 ); } for ( int pos = 180 ; pos >= 0 ; pos -- ) { // 180°から0° へ戻るmyServo.write ( pos ) ; delay ( 15 ); } }
Arduino プロジェクトのオープン ソースの性質により、他の開発者がプロジェクトを拡張するために使用する多くの無料ソフトウェア ライブラリの公開が促進されました。
ATmega328P(Arduino Unoなど、同じチップを搭載したOS)用のXinu OSポートがあり、基本的な機能のほとんどが含まれています。 [83]このバージョンのソースコードは無料で入手できます。[84]
Protothreadsというスレッドツールもあります。Protothreadsは、「小型の組み込みシステムや無線センサーネットワークノードなど、メモリ制約が厳しいシステム向けに設計された、極めて軽量なスタックレススレッド」と説明されています。[85]
Arduino用のFreeRTOSの移植版があります。 [86]これはArduinoライブラリマネージャーから入手できます。Unoを含む多くのボードと互換性があります。
Arduinoプロジェクトは、2006年のアルスエレクトロニカ賞のデジタルコミュニティ部門で優秀賞を受賞しました。[91]
Arduinoエンジニアリングキットは、2020年に「高等教育または継続教育デジタルサービス」部門のベット賞を受賞しました。[92]