Arduino

Arduinoとは、「Arduinoボード」、および「Arduino IDE」から構成されるシステムである。Arduinoボードは、AVRマイコン、入出力ポートを備えた基板であり、Arduino IDEはC言語風の「Arduino言語」によってプログラムを制作・コンパイル・デバッグ等し、それをArduinoボードに転送　等々するための「統合開発環境」と呼ばれる、PC上で作動させる一種のソフトウェアである。

また「Arduino」という名称は広義には、それらの開発・改良を行う一連のプロジェクトや、その結果生まれた会社、またその多くの開発者らによるコミュニティまでも指すことがある。

もともと2005年にイタリアで5人の人物によって、「もっとシンプルに、もっと安価に、技術者でない学生でもデジタルなものを作ることができるようにする」という目的を据えたプロジェクトとして「Arduinoプロジェクト」が立ち上がり、彼らが、きわめて安価で、テクノロジーには縁遠い人でも理解でき使えるほどシンプルで、オープンな　ハードとソフトのまとまり、を生み出すことに成功し、それが人々に歓迎され、数年のうちに全世界に普及した。「Arduino IDE」の管理を行い開発コミュニティの窓口となる非営利団体Arduino Foundation、およびArduino関連品の販売の一元管理を行う営利団体Arduino Holdingが関わっている。

1. 概要
-----

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

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

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

2. 歴史
-----

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

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、という体制にする、とされ、全世界のユーザらから歓迎され よりすっきりとした環境が整った。

2.1. 名称の経緯
----------

このプロジェクトを立ち上げたメンバーのひとりMassimo Banziが、いわゆる「いきつけ」にしていたバーの店名が「Bar di Re Arduino」であったので、その店に敬意を表しつつ、プロジェクト名や製品名に「Arduino」という名を使わせてもらうことにした。Re Arduinoは「アルドゥイーノ・ディヴレーア」でも呼ばれ、西暦1002年にイヴレーアの王になり神聖ローマ帝国のハインリッヒ二世と闘った人物であり、このパブはこの王に敬意を払うためにその名を冠していたわけである。なおイヴレーアには「via Arduino アルドゥイーノ通り」という名の道もあり、このバーは、この道を下方に下り終えたあたりに ある/あった。

3. ハードウェア
---------

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

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

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

3.1. 公式のボード
-----------

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

これまでに商用製品として製造されたArduinoハードウェアには、以下の物がある。

[2] 従来のDuemilanoveと同じATmega328を使用しているが、シリアルコンバーターにはあらかじめプログラムされたATmega8U2を使用している点がFTDIのチップを使用していた従来のモデルと異なっている。このため、コントロールパネルから簡単にUNOを確認できる。 [3] 32ビットの Atmel SAM3X8E  を使用したArduino Mega2560 フォームファクタの発展モデル。Flash 512KB, SRAM 96KB。2012年10月22日発売開始。 [4] ATmega32U4を使用したArduino UNOの廉価版。従来搭載していたFT232RLが無くなっている。2012年6月発売開始。 [5] 表面実装されたATmega2560を使用し、Flash メモリサイズは256kBになった。Unoと同様に、シリアルコンバーターにはあらかじめプログラムされたATmega8U2を使用している。 [6] ATmega2560をベースモデルとして、「MAX3421e」 チップを追加してAndroid OSを搭載した携帯電話との接続機能を統合したモデル。Arduino UNO同様に 「ATmega8U2」 チップをシリアルコンバーターとして使用している。 [7] 小型版。ATmega32U4使用。同じCPUを使用したArduino Leonardoと機能は同等だが、形状はArduino Nanoとほぼ同じ。Micro USB接続。Adafruitとの共同開発製品。 [8] 小型版。ATmega168使用。スケッチのアップロードにArduino miniUSBが必要。ブレッドボードに接続することができる。最初期のモデルは02型でStamp02のラベルがある。03型では02型と比べて通信ピンの横にデジタル7番ピンが追加されている。03型と04型ではGNDピンの位置が異なる。04型ではリセットピンが追加されている。 [9] 小型版。自動リセット機能搭載。USBインタフェースを装備。表面実装されたATmega168使用のものとATmega328使用のものがある。ブレッドボードに接続することができる。Arduino Nano
v1及びv2では三層構造の基板が使用されていたがv3では両面基板になったことでパターンを追えるようになった。v3からATmega328に変更された。米国Gravitech社が、Arduinoの名称使用の許諾を得て製造。 [10] Arduino UNOに、Wiznet社製 「W5100」 チップを加えてイーサネット接続機能を統合したモデル。 [11] [12] Bluetoothインタフェースを装備。ATmega168使用。Arduino NGをベースにATmega168とBluetoothモジュールのBluegiga WT11, iWrapバージョンを搭載した。ステップアップDC-DCコンバータ MAX1676によってTTLレベルの5Vを供給し、Bluetoothモジュールで使用する3.3Vは三端子レギュレータ MC33269D-3.0によって供給する。入力電圧は1.2V～5.5Vである。通信速度は115200 baud に固定されている。Bluetoothモジュールの初期設定は、名前が「ARDUINOBT」でパスワードが「12345」である。このモデルは電波法により日本国内での使用が禁じられている。 [13] [14] [15] [16] 表面実装されたATmega168V使用のものとATmega328V使用のものがある。ウェアラブルな用途に特化した最小の構成。初期モデルでは自動リセット機能が無かったが、改良型では自動リセット機能を搭載している。その為、通信用のピンの数も従来の4ピンから6ピンに増えた。スケッチのアップロードにUSB TTL-232ケーブルなどの3.3V対応品が必要だが、前述の理由により初期モデルと改良型では使用するUSB TTL-232ケーブルが異なる。04型からATmega328Vに変更された。設計と開発は、MITのLeah BuechleyとSparkFun Electronics社による。 [17] [18] [19] [20] [21] [22] [23] [24]

3.1.1. 生産終了
-----------

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

3.2. シールド
---------

Arduino の上に積み上げて使用するシールドが Arduino およびサードパーティーから発売されている。下記は Arduino から発売されている物。

[25] 第2世代携帯電話のGSMのシールド [26] イーサーネットのシールド [27] Wi-Fiのシールド [28] [29] USBのホスト側になるシールド [30] モーターコントローラを搭載したシールド [31] XBeeのシールド [32]下記は サードパーティー から発売されている物。

[33] 近藤化学株式会社の、「RCB-4 HV」「RCB-4 mini」と Arduino を繋ぐ為の中継基板を繋ぐのに便利。

4. ソフトウェア
---------

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

4.1. Sketch
-----------

Arduino上のプログラムはSketchと呼ばれる。C言語のような構文のプログラミング言語である。もとはWiring から派生した言語であり、制限の多い基板向けに最適化されている。ファイル拡張子は .ino であり、テキストファイルとして保存される。

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

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

入門者が典型的に試みる最初のスケッチは、単純にLEDを点滅させる「blink」というものである。 。

define LED_PIN 13void setup { pinMode ; // 13番ピンをデジタル出力に設定する }

void loop { digitalWrite; // LEDを点灯する delay; // 1秒待機する digitalWrite; // LEDを消灯する delay; // 1秒待機する }<WtXmlEndTag />

4.2. Arduino IDE
----------------

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

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

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

4.3. PlatformIO
---------------

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

4.4. Firmataによる制御
-----------------

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

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

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

5. オープンハードウェアとオープンソース
---------------------

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

5.1. 名称の制限
----------

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

5.2. 互換機
--------

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

5.3. Arduino AtHeart
--------------------

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

5.4. Arduino Certified
----------------------

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

5.5. 非認可の互換機
------------

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

5.6. 非公式クローン
------------

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

6. Arduino as ISP
-----------------

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

7. 開発企業
-------

設計はアメリカの企業 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. の間で裁判が発生した。

8. 入手
-----

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

9. 脚注
-----

9.1. 注釈
-------

9.2. 出典
-------

10. 参考文献
--------

11. 関連項目
--------

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

12. 外部リンク
---------

[41] Arduino wiki
Comprehensive [42]
[43]
"Wiring" software project: http://wiring.org.co/
Arduino photos on Flickr: https://www.flickr.com/photos/tags/arduino/
[44]
[45] - Weekend Project Podcast
[46]: "Getting Started" pages and sequenced programming tutorials, with help on hardware.
[47] – in portuguese, but with source codes and videos.