Arduino

**Arduino**（**アルドゥイーノ、アルデュイーノ、アルディーノ）**とは、マイクロコントローラを搭載したマイコンボードと、そのプログラムを作成・書き込むための統合開発環境から構成されるオープンソースの電子工作プラットフォームである。

2005年にイタリアで教育用途のプロトタイピングを目的として開始されたプロジェクトに由来し、現在では組み込みシステムやロボット、IoT機器などの試作・開発に広く用いられている。簡略化されたC/C++系プログラミング仕様と標準化された入出力構造を備えることで、低コストかつ迅速な電子機器開発を可能にする点を特徴とする。関連する開発者コミュニティや派生製品群を含む技術的エコシステムを指す場合もある。

また、「Arduino IDE」の管理や開発コミュニティの窓口機能には非営利団体の Arduino Foundation が関与し、Arduino関連製品の販売体制の管理には営利企業の Arduino Holding が関わっている。

## 概要
Arduino はワンボードマイコンの一種であり、I/Oポートを備え、インタラクティブな装置として用いることができる。スタンドアローンで作動させることもでき、また他のコンピュータと常時連携させ、そこで動くソフトウェアをホスト役に設定して、それに従属しコントロールされる形などで用いることも可能である。

オープンソースハードウェアであり、オープンソースのごく簡単な規定を守りさえすれば誰でも自由に用いることができ、ハードウェア設計情報のEAGLEファイルは無料でネット上で公開されている。組み立て済みの基板を購入することもできるほか、自分自身の手で Arduinoのハードウェア を組み立てることもできる。Arduino が「オープンソースハードウェアという概念を広めるきっかけとなった」と評価する声もある。

Arduinoボードは入出力ポートの数、ボードの大きさなどが異なる様々なタイプが用意されており、それらの中から用途や好みに応じて選ぶことができる。

## 歴史
Arduinoを生みだすことになった「Arduinoプロジェクト」は2005年に北イタリアのイヴレーアという街での:en:Interaction Design Institute Ivrea (IDII)において始まった。当時、ロボットのデジタル制御装置の試作をするために学生が用いることが可能だったのは主にBASIC Stampであり、これは価格が当時$50ほどもし、学生たちにとっては相当な経済的負担で、もっと安価な制御装置の出現が望まれていた。こうしたことを背景に、:it:Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellisという5人のグループが、「もっとシンプルに、もっと安価に、技術者でない学生でもデジタルなものを作ることができるようにする」という目的を据えた「Arduinoプロジェクト」を立ち上げ、他の同様の目的の品々よりも、遥かに安価で簡単に使用できるものの開発に成功した。

Arduinoプロジェクトは2006年度のアルス・エレクトロニカ賞で名誉言及を受けた。

Arduinoボードは、2008年10月までに5万ユニット以上が販売され、その後も順調に普及が進み、2011年2月までに約15万台、2013年時点で約70万台（公式分のみ。加えて、非公式クローンが同数以上販売されていると予測されている）販売された。

Arduinoは「デジタル制御用のボード」というジャンルで、非常に安価で、シンプルで、消費電力が非常に小さく、こうしたボードの中では世界的に一番普及している。さらに「メイカームーブメント」（デジタルなモノの自作を推進する運動）が盛り上がるとともに、その便利なツールとして一層活用されるようになった。

2010年以降、「IoT」への注目が集まるにつれ、Arduinoはその入門用装置の定番としても扱われるようになっている。

なおプロジェクトの比較的初期から「Arduino」という商標の権利を持つと主張し その設計・製造・ソフト開発を行う組織は、4人が立ち上げたArduino LLC社 および Gianluca Martinoの立ち上げたArduin SRL社の2つに分裂し対立し（商標使用を巡り）訴訟が起きていたが、2016年に10月に両者の和解が正式に発表され、2社は統合し、「Arduino IDE」の管理を行い開発コミュニティの窓口となる非営利団体Arduino Foundation、およびArduino関連品の販売の一元管理を行う営利団体Arduino Holding、という体制にする、とされた。

### 名称の経緯
このプロジェクトを立ち上げたメンバーのひとりMassimo Banziがいきつけにしていたバーの店名が「Bar di Re Arduino」（バー・ディ・レ・アルドゥイーノ ＝「アルドゥイーノ王のバー」）であったので、その店に敬意を表しつつ、プロジェクト名や製品名に「Arduino」という名を使うことにした。Re Arduino（アルドゥイーノ王）は「アルドゥイーノ・ディヴレーア」（意味的には「イヴレーアのアルデゥイーノ」という呼び方）でも呼ばれ、西暦1002年にイヴレーアの王になり神聖ローマ帝国のハインリッヒ二世と闘った人物である。イヴレーアには「via Arduino アルドゥイーノ通り」という名の道がある。

## ハードウェア

Arduino 基板上には、Atmel AVR マイクロコントローラ（ATmega8, ATmega168, ATmega328P, ATMega644P, ATmega1280, SAM3X）を中心とした回路がある。少なくとも5Vシリーズレギュレータと8MHzもしくは16MHzもしくは84MHzの水晶振動子（またはセラミック発振子）が含まれる。マイクロコントローラにはブートローダが事前にプログラムされている。
概念レベルでは、RS-232シリアル接続でプログラムされるが、ハードウェアの実装はバージョンによって異なる。シリアルArduino基板には、RS-232レベルの信号をTTLレベルの信号に変換する単純な回路が含まれる。Arduinoのほとんどの現行モデルはUSB経由でプログラムされるため、USB-to-serial アダプタチップ（FTDI FT232RLなど）が表面実装され、USB BタイプかミニBタイプの端子が付いている。Arduino Mini や非公式の Boarduino といった基板では、ホストコンピューターとの接続を基板外の USB-to-serial アダプタやケーブルに任せている。

Arduino 基板はマイクロコントローラーのI/Oピンのほとんどを他の回路で使えるようにそのまま開放している。Arduinoの主要モデル（現在はUno）では、14本のデジタルI/Oピンが利用可能で、そのうち6本はパルス幅変調信号を生成でき、他に6本のアナログ入力（デジタルI/Oピンとしても使用可能）がある。これらのピンは基板の一方の端にあるコネクターに集約されている。ここに接続するシールドと呼ばれる応用基板も発売されている。

Arduino Duemilanoveの後継機、Arduino UnoではFTDI製のUSB-シリアル変換ICを使わずに、USBインタフェースを装備したAVRマイコンを搭載し、このマイコンにプログラムすることで様々なUSBデバイスとして動作させることが出来るようになった。

### 公式のボード

オリジナルのArduinoハードウェアは Arudino SRL が製造している。

これまでに商用製品として製造されたArduinoハードウェアには、以下の物がある。
; Arduino UNO R4 Minima / WiFi
: Renesas RA4M1
: - ARM Cortex-M4 (32bit), RAM 32kB, Flash 256kB
: Arduino UNOの最新版。2023年5月 発売。基本構成のMinimaとWi-Fiモジュールを搭載したWiFiの2種類が用意されている。
: RTC機能をもつものの水晶発振器を使用していないため時間のズレが大きく、補正機能を使ってボードごとに調整する必要がある。Minimaでは水晶発信器の配線パターンがあり後付けできる。WiFiでは水晶発信器の接続ピンをLEDマトリックスに割り当ていて使用できないものの、RTC バッテリー 電源ピン(VRTC)を備える。
; Arduino UNO / R2 / R3
: Atmel ATmega328
: Duemilanoveの後継。DuemilanoveからUSBシリアル変換チップをFTDI FT232RLからプログラム済みのAtmel ATmega8U2、R3ではAtmel ATmega16U2に置き換えた。これによりArduino UNOの接続をWindowsのコントロール パネルから簡単に確認できるようになった。R3ではSCL, SDA, IOREF, 未使用ピンが追加されている。
; Arduino Due
: Atmel SAM3X8E
: - Cortex-M3 (32bit) 84MHz, RAM 96kB, Flash 512kB
: Arduino Mega2560 フォームファクタの発展モデル。2012年10月22日 発売。
; Arduino Leonardo
: Atmel ATmega32U4
: Arduino UNOの廉価版でUSBシリアル変換 FTDI FT232RLを無くしている。2012年6月 発売。
; Arduino Mega 2560
: Atmel ATmega2560
: - Flash 256kB
: Arduino UNOと同様にUSBシリアル変換にATmega8U2を使用している。
; Arduino Mega ADK
: Atmel ATmega2560
: Arduino Mega 2560にMAX3421eを追加してAndroid OSとの連携を強化したモデル。Arduino UNOと同様にUSBシリアル変換にATmega8U2を使用している。
; Arduino Micro
: Atmel ATmega32U4
: 小型版。Arduino Leonardoと機能は同等で形状はArduino Nanoとほぼ同じ。Micro USB接続。Adafruitとの共同開発。
; Arduino Mini
: Atmel ATmega168
: 小型版。スケッチのアップロードにArduino miniUSB(USBシリアル変換)を必要。最初期のモデルは02型でStamp02のラベルがある。03型では通信ピンの横にデジタル7番ピンを追加、04型ではGNDピンの位置を変更しリセット ピンを追加している。
; Arduino Nano
: Atmel ATmega168 / ATmega328 
: 小型版。USB Mini Type-Bを装備。自動リセット機能を搭載。v1とv2ではATmega168を使用した3層基板、v3ではATmega328を使用した両面2基板に変更されている。米国Gravitech社がArduinoの名称使用の許諾を得て製造。
; Arduino Ethernet
: Atmel ATmega328
: Arduino UNOにWiznet社 W5100を追加してイーサネット接続に対応している。
; Arduino Esplora
; Arduino BT
: Atmel ATmega168
: Bluetoothに対応。Arduino NGをベースにATmega168とBluetoothモジュールのBluegiga WT11, iWrapバージョンを搭載している。入力電圧は1.2V～5.5V、通信速度は115200 baud に固定されている。入力電圧をステップアップDC-DCコンバータ MAX1676を使用して5Vに昇圧してATmega168へ供給、そこから3端子レギュレータ MC33269D-3.0を使用して3.3Vに降圧してBluetoothモジュールへ供給している。Bluetoothモジュールの初期設定は、名前が「ARDUINOBT」でパスワードが「12345」である。このモデルは電波法により日本国内での使用が禁じられている。
; Arduino Fio
; Arduino Pro
; Arduino Pro Mini
; LilyPad Arduino
: Atmel ATmega168V / ATmega328V
: ウェアラブルな用途に特化した最小の機能を持ち円形の花模様をしている。初期モデル(00型から02型には自動リセット機能が無く、後期モデル(03型以降)で自動リセット機能を搭載、04型からATmega328Vに変更している。スケッチのアップロードに使用するシリアル通信ピンが初期モデルでは4ピン、後期モデルでは6ピンになっており、対応するUSBシリアル変換ケーブルが異なる。設計と開発は、MITのLeah BuechleyとSparkFun Electronics社が行った。
; LilyPad Arduino USB
; LilyPad Arduino Simple
; LilyPad Arduino SimpleSnap
; Arduino Yún
; Arduino Robot
; Arduino TRE
; Arduino Zero
; Arduino Gemma

#### 生産終了
; Serial Arduino
: Atmel ATmega8
: DB9シリアルインタフェース装備。完成品の販売はなくキットとしてPCBが売られている。Original ArduinoはMassimo BanziとDavid Cuartiellesの二人によって設計されたArduino Serial v1.0である。Gianluca MartinoとDavid Mellisも開発に加わったArduino Serial v2.0から派生したArduino Single-Sided Serial v2 (Arduino S3V2)も基本設計は全く同じで、他にTom IgoeがデザインしたArduino Serial v2.0aとAdilson Akashiによってデザインされた自動リセット機能を搭載したArduino S3V3 (Severino) がある。RS232CレベルからTTLレベルへは2つのトランジスタ、BC547(NPN,CBE)とBC577(PNP,CBE)を使ってレベルシフト変換している。同等品にはFreeduino v1を含め多くの互換機が作られたが、Freeduino v2などではMAX232を使用して部品点数を減らし安価にする方向で開発されている。
; Arduino Extreme
: Atmel ATmega8
: USBインタフェース装備 (FTDI FT232BM)。もともとあったArduino USBというキットを完成品として売り出したもので、Arduino USB v1及びv2と基本設計は同じでMassimo Banzi, David Cuartielles, Gianluca Martino, David Mellisの四人による。大きな違いは表面実装パーツを使い始めたことである。Arduino Extreme v2からArduino シリーズの特徴であるgridded ground planeが採用された。Arduino USBにはなかった特殊な端子がArduino Extreme v1には用意されている。Arduino Extreme v2から以降のUSBモデルでも共通の「x3」というラベルの付いたFT232BMへのアクセス用端子に変更された。この端子を使用することでFT232BMのBit-bang modeが利用出来るが、GPL v2ライセンスではバイナリーコードを含むことを認めていないため、この機能はArduino の標準機能ではない。
; Arduino NG
: Atmel ATmega8
: USBインタフェースを装備。NGの名称は「Nuova Generazione」を意味する。従来使用されていたFT232BMからFT232RLに変更したことに伴い外部パーツの部品点数を減らすことに成功したモデル。13番ピンにLEDが追加されSPI通信を視覚化した最初のモデルでもある。rev. Cでは13番ピンのLEDが後付けするようになっていた。基板に記載される開発チームメンバーにTom Igoeが加わった。
; Arduino NG plus
: Atmel ATmega168
: USBインタフェースを装備。Arduino NGとの違いはATmega168に変わったこと、及び13番ピンのLEDが再び装着された状態で販売されたことである。
; Arduino Diecimila
: Atmel ATmega168
: USBインタフェースを装備。自動リセット機能搭載。Diecimilaの名称は10,000を意味する。低消費電力化を目指して従来の三端子レギュレータ7805を変更してMC33269D-5.0とMC33269ST-5.0T3を採用した。初めてリセッタブル・ポリヒューズが採用されUSB端子への保護回路となっている。3.3VやAREFポートが搭載されたのもこのモデルからである。
; Arduino Duemilanove
: Atmel ATmega168 / ATmega328P
: Diecimilaの後継。電源自動選択機能を搭載。自動リセット機能搭載。Duemilanoveの名称は2009を意味する。電源自動選択機能の為にPチャンネルMOSFET NDT2955や単電源タイプのオペアンプ LM358Dなどが追加され部品点数が増えた。Diecimilaでは搭載されていたMC33269ST-5.0T3が削除されている。従来のシンプルなモデルからやや回路が複雑化した意欲作。
; Arduino Mega
: Atmel ATmega1280。
: I/Oピンが52個に増え、 メモリサイズが大きくなった。また、使用可能な割り込みが8個になり、従来の製品ラインから大きく進歩している。電源自動選択機能を搭載。自動リセット機能搭載。電源自動選択機能にPチャンネルMOSFET FDN340Pが追加された。Duemilanoveでは削除されていたMC33269ST-5.0T3が再び搭載されている。

### シールド
Arduino の上に積み上げて使用するシールドが Arduino およびサードパーティーから発売されている。下記は Arduino から発売されている物。
; Arduino GSM Shield
: 第2世代携帯電話のGSMのシールド
; Arduino Ethernet Shield
: イーサーネットのシールド
; Arduino WiFi Shield
: Wi-Fiのシールド
; Wireless SD Shield
; Arduino USB Host Shield
: USBのホスト側になるシールド
; Arduino Motor Shield
: モーターコントローラを搭載したシールド
; Wireless Proto Shield
: XBeeのシールド
; LilyPad Arduino SimpleSnap
下記は サードパーティー から発売されている物。
; KONDO-UART Shield
: 近藤科学株式会社の、「RCB-4 HV」「RCB-4 mini」と Arduino を繋ぐ為の中継基板を繋ぐのに便利。

## ソフトウェア

Arduinoを動かすためのプログラムを「Sketch　スケッチ」と言い、このスケッチを編集・転送するためのソフトウェア（統合開発環境）の代表がArduino IDEである。

### Sketch
Arduino上のプログラムはSketch（スケッチ、以下「スケッチ」と記載）と呼ばれる。C言語のような構文（シンタックス）のプログラミング言語である。もとは から派生した言語であり、制限の多い基板向けに最適化されている。ファイル拡張子は **.ino** であり、テキストファイルとして保存される。

最小限のスケッチは、2つの特別な関数で構成する。

*  : 電源がオン、またはリセットした後、最初の一度だけ実行される関数。
*  : 関数が終了した後、繰り返し実行される関数。ボードの電源がオフ、またはリセットされるまで、ボードを制御し続ける。

**[[発光ダイオード|LED]]点滅の例**

入門者が典型的に試みる最初のスケッチは、単純にLEDを点滅させる「blink」というものである。
（ほとんどのArduinoボードには、最初から表面にLEDが実装され抵抗器も組み込まれている）。


```arduino
#define LED_PIN 13

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 IDE
sketchの編集・転送用のプログラムであり、Arduinoの統合開発環境の代表格。エディター（編集画面）、コンパイラ、sketchの転送（ハードウェアへのファームウェア転送）機能などを含む。ソフトウェア開発に不慣れなユーザーでも容易にプログラミングできるよう設計されている。
そのために初期のバージョン1.xはクロスプラットフォームのJavaアプリケーションとして実装されていたクリエイティブ・コーディング環境のProcessingをベースにしており、IDEの見た目も非常に似通っていた。

バージョン2.0でJavaScriptを用いたWebベースのスタンドアロンアプリケーションとして再構築され、デバッガを用いたステップ実行や、クラウド上のスケッチ保存、読み込みに対応するなど機能も大幅にアップデートされた。

内部ではC言語のコンパイラGCCやアップロードプログラムavrdudeが使用されている。

### PlatformIO

PlatformIOは、主にPlatformIO Labs社が開発するオープンソースのマイクロコントローラの統合開発環境で、Visual Studio Codeの拡張機能として提供される。Arduinoに使用されるAVR単体の開発にも使える高機能な環境だが、Arduinoの開発に用いるユーザーも多い。

### Firmataによる制御

FirmataはMIDIをベースにした、マイクロコントローラをシリアル通信経由(もっぱらUSBを介する)で制御するための汎用プロトコルである。このプロトコルを使用するためのスケッチはサンプルとしてArduino IDEに付属しているため、一度書き込みをした後は、Firmataに対応する環境を使うことでArduino IDEを使わずにインタラクティブにIO制御をすることができる。ただし、スタンドアロンでArduinoを使用できなくなるため、ラップトップやデスクトップPCから手軽に電子部品の制御するといった用途に適している。

Firmataに対応した環境としては、Processing のFirmataライブラリや、音声信号処理を得意とするビジュアルプログラミング環境Cycling' 74 MaxでのMaxuinoや、Pure Data(Pd)におけるPduinoのような例がある。

MaxuinoやPduinoを使用すると、画面上にグラフィックとしてArduinoのデジタルポートやアナログ入力ポートが表示され、GUIによって各ポートのデータの流れをプログラムできる。非常に簡易にフィジカル・コンピューティングが実現できるため、映像・音楽方面のアーティストによって利用されている。

## オープンハードウェアとオープンソース
Arduino のハードウェア設計は Creative Commons Attribution Share-Alike 2.5 ライセンスで提供されており、Arduino のWebサイトで入手可能である。レイアウトなどの情報もいくつかのバージョンが公開されている。統合開発環境のソースコードと基板上のライブラリはGPL v2ライセンスで提供されている。

### 名称の制限
ハードウェア設計もソフトウェアもコピーレフトライセンスで提供されているが、開発者は 「Arduino」 という名称が商標の普通名称化となることを避けたいと考えており、許諾無く派生製品に使うことを禁じている。Arduino という名称の使用に関する公式方針文書では、プロジェクトが第三者による作業結果を公式な製品に組み入れることについてオープンであることを強調している。

### 互換機
ハードウェア設計もソフトウェア製品もオープンソースであるため、他の設計者・製造業者も互換機製品をリリースしている。なお、前述の名称問題のため「Arduino」という名前は使っていない。公式のウィキサイトArduino Playgroundには、互換機の情報を掲載する場が設けられている。

### Arduino AtHeart
Arduino AtHeart プログラムに参加し、売上の5%以下を支払うことで、互換機として紹介され、Arduino IDE のサポートをうけられる。現状、AVR の ATMega328, ATMega1280, ATMega2560, ATMega32U4, SAM3X を利用していることが条件。

### Arduino Certified
Arduino Certified として、公式の認証を受けた Arduino 商品として、Intel Galileo や Intel Edison があり、Arduino IDE でもサポートされている。AVR 以外の CPU でも認証を受けられる。

### 非認可の互換機
Arduino IDE の hardware フォルダ内の boards.txt を書き換えることで、対応するマイコンボードを増やすことが出来る。このような例にアーテックの Studuino などがある。

### 非公式クローン
正確には把握されていないが、公式ボードの非公式クローンの販売台数は公式分よりも多いと予想されており、中国などの製造会社が安価な商品を生産している。

## Arduino as ISP
Arduino を使い、Atmel AVR のマイクロコントローラに、Arduino IDE で書いたプログラムを転送することが出来る。まず、Arduino ボード自体に、「ArduinoISP」プログラムを「スケッチの例」から選んで転送し、Arduino ボードと AVR マイクロコントローラを適切に配線し、ArduinoIDE の書き込み装置の設定を「Arduino as ISP」にすることで転送が出来る。Arduino で使われている ATmega328 などのマイクロコントローラだけでなく、AVR の ATtiny などのより安価で小型のマイクロコントローラにも転送できる。

## 開発企業
設計はアメリカの企業 Arduino, LLC が行っている。会社の創業者は、Massimo Banzi、David Cuartielles、Tom Igoe、David Mellis。

生産はイタリアの企業 Arduino S.R.L. が行っていた。Arduino S.R.L. の創業者は Gianluca Martino。2015年1月23日にArduinoの権利を巡り Arduino, LLC. と Arduino S.R.L. の間で裁判が発生した。

## 入手
国内正規販売代理店が2008年に大幅に増え、入手性は大幅に改善された。Megaの発売日の2009年3月26日には、日本を含め、はじめて世界同時発売となった。

## 脚注

### 注釈

### 出典

## 参考文献
* 
* 

## 関連項目

* 電子工作
* ワンボードマイコン
* IoT
* Arduinome
* Make Controller Kit
* BASIC Stamp
* OOPic
* PICAXE
* Parallax Propeller
* Processing
* Fritzing（関連ツール）
* 8pino - 世界最小クラスのArduino互換機
* PLEN - Arduino互換のコントロールボードを使用した二足歩行ロボット（PLEN2）
* Intel Galileo
* Intel Edison
* Lazurite
* M5Stack

## 外部リンク
* 
* 
* Playground Arduino wiki
* Comprehensive Arduino Tutorial
* Make Magazine article on the Arduino 
* "Wiring" software project: http://wiring.org.co/
* Arduino photos on Flickr: https://www.flickr.com/photos/tags/arduino/
* Arduino tutorial
* Introduction to the Arduino - Weekend Project Podcast
* Sheepdog Software's Introduction to Arduino: "Getting Started" pages and sequenced programming tutorials, with help on hardware.
* Arduino tutorial – in portuguese, but with source codes and videos.