Arduino
出典: フリー百科事典『ウィキペディア(Wikipedia)』
| Arduino Software | |
|---|---|
簡単なプログラム例を表示中のArduino IDE のスクリーンショット。
|
|
| 開発元 | Arduino Software |
| 最新版 | 0016 / 2009年06月04日 |
| プログラミング言語 | Java |
| プラットフォーム | クロスプラットフォーム |
| 種別 | 統合開発環境 |
| ライセンス | LGPLまたはGPLライセンス |
| 公式サイト | http://www.arduino.cc |
Arduino は、単純な入出力を備えた基板と Processing/Wiring 言語を実装した開発環境から構成されるシステム。Arduino はスタンドアロン型のインタラクティブ・オブジェクト開発にも使え、ホストコンピュータ上のソフトウェア(例えば、Adobe Flash、Processing、Max/MSP、Pure Data、SuperCollider)で制御することもできる。現在、組み立て済みの基板を購入することもできるが、ハードウェア設計情報は無料で公開されており、誰でも自分の手で Arduino を組み立てることができる(オープンソースハードウェア)。
Arduinoプロジェクトは2006年度のPrix Ars Electronicaにおいて名誉言及を受けている。[1][2]
Arduinoプロジェクトは2005年にイタリアで始まり、当時入手可能であった他の学生向けのロボット製造用コントロールデバイスよりも安価なプロトタイピング・システムを製造することを目的にスタ-トした。設計グループは多くの競合製品よりも遥かに安価で簡単に使用できるプラットフォームの開発に成功した。Arduinoボードは、2008年の10月までに50,000ユニット以上が販売されている。[3]
目次 |
[編集] 実装
[編集] ハードウェア
Arduino 基板上には、Atmel AVR マイクロコントローラ(ATmega8, ATmega168, ATmega328P, ATMega644P, ATmega1280)を中心とした回路がある。少なくとも5Vシリーズレギュレータと16MHz水晶発振子(またはセラミック発振子)が含まれる。マイクロコントローラにはブートローダが事前にプログラムされている。
概念レベルでは、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の主要モデル(現在はDuemilanove)では、14本のデジタルI/Oピンが利用可能で、そのうち6本はパルス幅変調信号を生成でき、他に6本のアナログ入力がある。これらのピンは基板の一方の端にあるコネクタに集約されている。ここに接続するシールドと呼ばれる応用基板も発売されている。
[編集] ソフトウェア
[編集] Arduino IDE
Arduinoの統合開発環境はクロスプラットフォームのJavaアプリケーションであり、エディタ、コンパイラ、基板へのファームウェア転送機能などを含む。その内部ではC言語のコンパイラgccやアップロードプログラムavrdudeが使用されている。
開発環境は Processing ベースで、ソフトウェア開発に不慣れなアーティストでも容易にプログラミングできるよう設計されている。プログラミング言語は Wiring[4] という言語から派生したもので、C言語/C++風の構文で制限の多い基板向けに最適化されている。
典型的な最初のスケッチは、単純に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秒待機する }
上記のスケッチはgccコンパイラに直接には正しいソースコードとして認識されないが、ユーザーがArduino開発環境で"Upload to I/O board" ボタンを押した際に必要な修正が施されたコードに変換されて一時ファイルに自動的に書き込まれる:
#include "WProgram.h" #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秒待機する } int main(void) { init(); setup(); for (;;) loop(); return 0; }
"WProgram.h"はWiringライブラリの主要ヘッダーファイルで、main()関数は3つの関数、init()、setup()、loop()を呼び出す。init()関数はWiringライブラリで定義されているもので、setup()関数とloop()関数はユーザがスケッチで定義したものである。上述スケッチに先頭の#includeと末尾のmain()関数が追加された一時ファイルがgccによってコンパイルされ、hexファイルが作成される。リセット信号がトリガーとなって、ホストコンピュータのアップローダavrdudeとarduinoのマイクロコントローラに事前にプログラムされているブートローダが通信を開始し、hexファイルのアップロードが実行される。
Arduino IDEを使用せずにgccを使用して直接hexファイルを作成し、avrdudeを手動で使用してhexファイルをアップロードすることもできる。日本で作成されたavrdude用のGUIプログラムがあり、これを使用することでアップロード作業が容易に行えるようになっている。
[編集] Pduino
Pduinoとは、ビジュアルプログラミング言語Pure Data(Pd)をもとに開発されたArduino IDE相当の開発環境である。ホストPC側でMaxまたはPure Data(Pd)を使用し、Arduinoの開発にPduinoを使用することで、一貫したビジュアルプログラミング環境が提供される。画面上にグラフィックとしてArduinoのデジタルポートやアナログ入力ポートが表示され、GUIによって各ポートのデータの流れをプログラムする。非常に簡易にフィジカル・コンピューティングが実現できるため、映像・音楽方面のアーティストによって利用されている。
[編集] オリジナルのArduinoハードウェアのバージョン
オリジナルのArduinoハードウェアは Smart Projects が製造している。
これまでに商用製品として製造されたArduinoハードウェアには、11のバージョンがある[5]。
- Serial Arduino - DB9シリアルインタフェース装備。ATmega8使用。
- Arduino Extreme - USBインタフェース装備。ATmega8使用。
- Arduino Mini - 小型版。ATmega168使用。スケッチのアップロードにArduino miniUSBが必要。ブレッドボードに接続することができる。最初期のモデルは02型でStamp02のラベルがある。03型では02型と比べて通信ピンの横にデジタル7番ピンが追加されている。03型と04型ではGNDピンの位置が異なる。04型ではリセットピンが追加されている。
- Arduino Nano - 小型版。自動リセット機能搭載。USBインタフェース(ミニBコネクタ)を装備。ATmega168使用。米国Gravitech社が、Arduinoの名称使用の許諾を得て製造。ブレッドボードに接続することができる。
- The LilyPad Arduino - 表面実装されたATmega168を使用。ウェアラブルな用途に特化した最小の構成。初期モデル(00型から02型)では自動リセット機能が無かったが、改良型(03型)では自動リセット機能を搭載している。その為、通信用のピンの数も従来の4ピンから6ピンに増えた。スケッチのアップロードにUSB TTL-232ケーブルなどの3.3V対応品が必要だが、前述の理由により初期モデルと改良型では使用するUSB TTL-232ケーブルが異なる。設計と開発は、MITのLeah BuechleyとSparkFun Electronics社による。
- Arduino NG - USBインタフェースを装備。ATmega8使用。NGの名称は"Nuova Generazione"を意味する。
- Arduino NG plus - USBインタフェースを装備。ATmega168使用。
- Arduino BT - Bluetoothインタフェースを装備。ATmega168使用。
- Arduino Diecimila - USBインタフェースを装備。ATmega168使用。自動リセット機能搭載。「Diecimila」は10,000の意味。
- Arduino Duemilanove - Diecimilaの後継。電源自動選択機能を搭載。自動リセット機能搭載。ATmega168使用のものとATmega328P使用のものがある。「Duemilanove」は2009の意味。
- Arduino Mega - 表面実装されたATmega1280を使用。 I/Oピンが52個に増え、 メモリサイズが大きくなった。また、使用可能な割り込みが8個になり、従来の製品ラインから大きく進歩している。電源自動選択機能を搭載。自動リセット機能搭載。
[編集] Arduinoクローン
ハードウェア設計もソフトウェア製品もオープンソースであるため、他の製造業者もクローン製品をリリースしている(後述する名称問題のため "Arduino" という名前は使っていない)。
[編集] シールド互換クローン
- Freeduino MaxSerial - DB9シリアルインタフェース装備。Serial Arduino互換機だが、ATmega168またはATmega328Pを使用している。RESETピンと3.3Vピンを装備しているなどの点でArduino Duemilanove相当の機能を搭載している。MAX232互換チップのDS14C232CNを搭載している。Fundamental Logic社が組み立てキットとして製造販売。
- Freeduino Through-Hole - 表面実装のはんだ付けをしなくて済むような設計のArduino互換基板。NKC Electronics社がキットとして製造販売。
- metaboard - シンプルな設計で低価格を目指した製品。ハードウェアとファームウェアが共にオープンソース。ウィーンのハッカーグループであるMetalabが開発。
- SeeeduinoはDiecimilaの互換機。ATmega168は表面実装されている。ユニバーサルボードをシールドに使える工夫が施されている。自動リセット機能搭載。Seeed Studio(Seeed Technology Inc.)が製造販売。
- eJackinoは日本のCQ出版株式会社によるキット。Seeeduino同様、ユニバーサルボードをシールドに使える。Arduinoの裏側にイタリアの地図がシルク印刷されているように、秋葉原駅がシルク印刷されている。
- MRC28 - ロシア製Serial Arduino互換機、MRC28 v1.4.1。ATmega8使用。RS-232シリアルチップにMAX232CPEを使用。
- Arduelo Libero - チェコ製のDiecimilaの互換機。
[編集] ブートローダー互換クローン
これらの機種ではソフトウェアは互換だがシールドがそのままでは装着できない。ピンが下向きに出ていてブレッドボードに差し込んでプロトタイプを作成するようになっているものや、特定用途向けのピンを装備しているものがある。
- Boarduino - Diecimila 互換の安価な基板。直接ブレッドボードに差し込めるようにピンがついている。自動リセット機能搭載。Adafruit社が組み立てキットとして製造販売。
- Freeduino Bare Bones Board と Really Bare Bones Board - 直接ブレッドボードに差し込めるようにピンがついている。Modern Device Company社が組み立てキットとして製造販売。
- iDuino - 直接ブレッドボードに差し込めるようにピンがついている。自動リセット機能搭載。Fundamental Logic社が組み立てキットとして製造販売。
- Stickduino - USB Aメス端子に直接差し込んで使用するタイプ。バージョン1.1まではATmega168だったがバージョン1.2ではATmega328Pに変更されている。自動リセット機能搭載。Fundamental Logic社が組み立てキットまたは完成品として製造販売。
- LEDuino - 鉄道模型用に特化したクローンで、enhanced I2C, DCC decoder, CAN bus インターフェースを備えていた。Siliconrailway社が製造販売。
- Roboduino - ロボティックス向けに特化したクローン。各I/Oポートの隣にパワーバスが用意されていてセンサーやサーボを接続して使えるように設計されている。シリアル通信用のポートはそれらとは別に用意されている。Curious Inventor, L.L.Cが開発。
[編集] Sanguino
- Sanguino - オープンソース拡張されたArdiunoクローン。 ATMega644P(DIP)使用。 I/Oピンが32個(40ピン中)。64Kフラッシュ, 4K RAM。RepRap Projectを念頭に作られたものから派生して出来た製品である。直接ブレッドボードに差し込めるようにピンがついている。
- Illuminato - 表面実装されたATMega645を使用. 64Kフラッシュ, 4K RAM。I/Oピンが32個。 ハードウェア、ファームウェア共オープンソース。ボードはスラリと見えるようにデザインされており、10個のLEDが搭載されていて隠し機能でコントロールするようになっている。シールド互換クローン。開発はLiquidware社。
- REDUINO-GHOST644U - ATMEGA644P(DIP)使用。直接ブレッドボードに差し込めるようにピンがついている。日本のマイクロファン ネットショップ(株式会社ピープルメディア)が製造販売。
[編集] Non-ATmega boards
これらのボードはArduino用シールドを利用可能になっているが、ATmegaマイクロコントローラを使用していないためArduino開発環境と互換性はない。その代わりに既存のPICマイクロプロセッサーの資産を流用できたり、ARMベースで開発してLinuxへ移行したりするためのベースボードとして活用する。
- ARMmitePRO - ARMベース(ARM7@60MHz-LPC2103)のシールド互換ボード。 Coridium社が製造。BASICかC言語でプログラムする。
- Cortino - 32-bit ARM Cortex M3 マイクロプロセッサー用開発システム。CPUは3種類ある(72MHz STM32F103RE, 72MHz STM32F103RB, 36MHz STM32F101R6)。開発環境はgccである。
- Pinguino - PICマイクロプロセッサー用開発システム。USBインタフェースを装備。Pythonで作成された独自の開発環境(Arduino開発環境互換)。
- Teensy USB Board - Atmel社のUSBコントローラ内蔵ワンチップマイコンAT90USBを使用。CPUは2種類ある(AT90USB162, AT90USB646)。TeensyduinoというArduino IDEのアドオンを使用する。
[編集] オープンハードウェアとオープンソース
Arduino のハードウェア設計は Creative Commons Attribution Share-Alike 2.5 ライセンスで提供されており、Arduino のWebサイトで入手可能である。レイアウトなどの情報もいくつかのバージョンのものが公開されている[5]。統合開発環境のソースコードと基板上のライブラリはGPL v2ライセンスで提供されている[6]。
[編集] 名称の制限
ハードウェア設計もソフトウェアもコピーレフトライセンスで提供されているが、開発者は "Arduino" という名称が商標の普通名称化となることを避けたいと考えており、許諾無く派生製品に使うことを禁じている。Arduino という名称の使用に関する公式方針文書では、プロジェクトが第三者による作業結果を公式な製品に組み入れることについてオープンであることを強調している[7]。
Arduino という名称が使えないため、Arduino ユーザーは Arduino Diecimila をリバースエンジニアリングで解析し、同等の基板を Freeduino としてリリースした[8]。
[編集] 開発チーム
開発チームの主要メンバーは、Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis、Nicholas Zambetti。
[編集] 入手
国内正規販売代理店が2008年に大幅に増え、入手性は大幅に改善された。Megaの発売日(2009年3月26日)には、日本を含め、はじめて世界同時発売となった。
[編集] 関連項目
[編集] 脚注
- ^ "Ars Electronica Archiv" (German). 2009-02-18 閲覧。
- ^ "Ars Electronica Archiv / ANERKENNUNG" (German). 2009-02-18 閲覧。
- ^ Thompson, Clive (2008-10-20). “Build It. Share It. Profit. Can Open Source Hardware Work?”. Wired 16 (11): 166–176. 2009-04-30 閲覧。
- ^ Wiring project
- ^ a b Arduino - Hardware
- ^ Arduino - Software
- ^ Arduino - Policy
- ^ "Freeduino Open Designs". 2008年3月3日 閲覧。
[編集] 外部リンク
- Arduino プロジェクト公式サイト
- Playground Arduino wiki
- Comprehensive Arduino Tutorial
- Make Magazine article on the Arduino
- "Wiring" software project: http://wiring.org.co/
- Arduino photos on Flickr: http://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.

