Arduino

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
Arduino Software
スクリーンショット
簡単なプログラム例を表示中のArduino IDE のスクリーンショット。
開発元 Arduino Software
最新版 1.0.5 / 2013年05月15日(13か月前) (2013-05-15[1]
プログラミング言語 Java
プラットフォーム クロスプラットフォーム
種別 統合開発環境
ライセンス LGPLまたはGPLライセンス
公式サイト http://www.arduino.cc/
テンプレートを表示

Arduino(アルドゥイーノ[2])は、AVRマイコン入出力ポートを備えた基板、C++風のArduino言語とそれの統合開発環境から構成されるシステム。

概要[編集]

Arduino はスタンドアロン型のインタラクティブデバイス開発だけでなく、ホストコンピュータ上のソフトウェア(例えば、Adobe FlashProcessingMax/MSPPure DataSuperCollider)で制御することもできる。オープンソースハードウェアでありハードウェア設計情報のEAGLEファイルは無料で公開されており、組み立て済みの基板を購入することもできるほか、誰でも自分の手で Arduino を組み立てることができる。

Arduinoプロジェクトは2005年にイタリアで始まり、当時入手可能だった他の学生向けのロボット製造用コントロールデバイスよりも安価なプロトタイピング・システムを製造することを目的にスタートした。設計グループは多くの競合製品よりも遥かに安価で簡単に使用できるプラットフォームの開発に成功した。Arduinoボードは、2008年10月までに5万ユニット以上[3]が、2011年2月で約15万台[4]販売されている。Arduinoプロジェクトは2006年度のアルス・エレクトロニカ賞で名誉言及を受けている。[5][6][7]

実装[編集]

ハードウェア[編集]

Arduino Duemilanove

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の主要モデル(現在はUno)では、14本のデジタルI/Oピンが利用可能で、そのうち6本はパルス幅変調信号を生成でき、他に6本のアナログ入力(デジタルI/Oピンとしても使用可能)がある。これらのピンは基板の一方の端にあるコネクターに集約されている。ここに接続するシールドと呼ばれる応用基板も発売されている。

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

ソフトウェア[編集]

Arduino IDE[編集]

Arduinoの統合開発環境クロスプラットフォームJavaアプリケーションであり、エディター、コンパイラー、基板へのファームウェア転送機能などを含む。その内部ではC言語のコンパイラーgccやアップロードプログラムavrdudeが使用されている。

開発環境は Processing ベースで、ソフトウェア開発に不慣れなアーティストでも容易にプログラミングできるよう設計されている。プログラミング言語は Wiring から派生したもので、C言語風の構文で制限の多い基板向けに最適化されている。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秒待機する
}

上記のスケッチはgccコンパイラに直接には正しいソースコードとして認識されないが、ユーザーがArduino開発環境で"Upload to I/O board(0017ではUpload)" ボタンを押した際に必要な修正が施されたコードに変換されて一時ファイルに自動的に書き込まれる。

#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

Pduinoとは、ビジュアルプログラミング言語Pure Data(Pd)をもとに開発されたArduino IDE相当の開発環境である。ホストPC側でMaxまたはPure Data(Pd)を使用し、Arduinoの開発にPduinoを使用することで、一貫したビジュアルプログラミング環境が提供される。画面上にグラフィックとしてArduinoのデジタルポートやアナログ入力ポートが表示され、GUIによって各ポートのデータの流れをプログラムする。非常に簡易にフィジカル・コンピューティングが実現できるため、映像・音楽方面のアーティストによって利用されている。

オリジナルのArduinoハードウェアのバージョン[編集]

Arduino NG
Arduino Diecimila

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

これまでに商用製品として製造されたArduinoハードウェアには、17のバージョンがある[8]

  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 (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を使用して部品点数を減らし安価にする方向で開発されている。
  2. Arduino Extreme - USBインタフェース装備(FTDI FT232BM)。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 の標準機能ではない。
  3. Arduino Mini - 小型版。ATmega168使用。スケッチのアップロードにArduino miniUSBが必要。ブレッドボードに接続することができる。最初期のモデルは02型でStamp02のラベルがある。03型では02型と比べて通信ピンの横にデジタル7番ピンが追加されている。03型と04型ではGNDピンの位置が異なる。04型ではリセットピンが追加されている。
  4. Arduino Nano - 小型版。自動リセット機能搭載。USBインタフェース(ミニBコネクタ)を装備。表面実装されたATmega168使用のものとATmega328使用のものがある。ブレッドボードに接続することができる。Arduino Nano v1及びv2では三層構造の基板が使用されていたがv3では両面基板になったことでパターンを追えるようになった。v3からATmega328に変更された。米国Gravitech社が、Arduinoの名称使用の許諾を得て製造。
  5. LilyPad Arduino - 表面実装されたATmega168V使用のものとATmega328V使用のものがある。ウェアラブルな用途に特化した最小の構成。初期モデル(00型から02型)では自動リセット機能が無かったが、改良型(03型以降)では自動リセット機能を搭載している。その為、通信用のピンの数も従来の4ピンから6ピンに増えた。スケッチのアップロードにUSB TTL-232ケーブルなどの3.3V対応品が必要だが、前述の理由により初期モデルと改良型では使用するUSB TTL-232ケーブルが異なる。04型からATmega328Vに変更された。設計と開発は、MITのLeah BuechleyとSparkFun Electronics社による。
  6. Arduino NG - USBインタフェースを装備。ATmega8使用。NGの名称は"Nuova Generazione"を意味する。従来使用されていたFT232BMからFT232RLに変更したことに伴い外部パーツの部品点数を減らすことに成功したモデル。13番ピンにLEDが追加されSPI通信を視覚化した最初のモデルでもある。rev. Cでは13番ピンのLEDが後付けするようになっていた。基板に記載される開発チームメンバーにTom Igoeが加わった。
  7. Arduino NG plus - USBインタフェースを装備。ATmega168使用。Arduino NGとの違いはATmega168に変わったこと、及び13番ピンのLEDが再び装着された状態で販売されたことである。
  8. Arduino BT - 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"である。このモデルは電波法により日本国内での使用が禁じられている。
  9. Arduino Diecimila - USBインタフェースを装備。ATmega168使用。自動リセット機能搭載。Diecimilaの名称は10,000を意味する。低消費電力化を目指して従来の三端子レギュレータ7805を変更してMC33269D-5.0とMC33269ST-5.0T3を採用した。初めてリセッタブル・ポリヒューズが採用されUSB端子への保護回路となっている。3.3VやAREFポートが搭載されたのもこのモデルからである。
  10. Arduino Duemilanove - Diecimilaの後継。電源自動選択機能を搭載。自動リセット機能搭載。ATmega168使用のものとATmega328P使用のものがある。Duemilanoveの名称は2009を意味する。電源自動選択機能の為にPチャンネルMOSFET NDT2955や単電源タイプのオペアンプ LM358Dなどが追加され部品点数が増えた。Diecimilaでは搭載されていたMC33269ST-5.0T3が削除されている。従来のシンプルなモデルからやや回路が複雑化した意欲作。
  11. Arduino Mega - 表面実装されたATmega1280を使用。 I/Oピンが52個に増え、 メモリサイズが大きくなった。また、使用可能な割り込みが8個になり、従来の製品ラインから大きく進歩している。電源自動選択機能を搭載。自動リセット機能搭載。電源自動選択機能にPチャンネルMOSFET FDN340Pが追加された。Duemilanoveでは削除されていたMC33269ST-5.0T3が再び搭載されている。
  12. Arduino Uno - 従来のDuemilanoveと同じATmega328を使用しているが、シリアルコンバーターにはあらかじめプログラムされたATmega8U2(最新のRevision 3ではATmega16U2に変更)を使用している点がFTDIのチップを使用していた従来のモデルと異なっている。
  13. Arduino Mega 2560 - 表面実装されたATmega2560を使用し、Flash メモリサイズは256kBになった。Unoと同様に、シリアルコンバーターにはあらかじめプログラムされたATmega8U2を使用している。
  14. Arduino Ethernet - Arduino UNOに、Wiznet社製 "W5100" チップを加えてイーサネット接続機能を統合したモデル。
  15. Arduino Mega ADK for Android - ATmega2560をベースモデルとして、"MAX3421e" チップを追加してAndroid OSを搭載した携帯電話との接続機能を統合したモデル。Ardduino UNO同様に "ATmega8U2" チップをシリアルコンバーターとして使用している。
  16. Arduino Leonardo - ATmega32U4を使用したArduino UNOの廉価版。従来搭載していたFT232RLが無くなっている。2012年6月発売開始。
  17. Arduino Due - 32ビットの Atmel SAM3X8E (Cortex-M3, 84MHz) を使用したArduino Mega2560 フォームファクターの発展モデル。Flash 512KB, SRAM 96KB。2012年10月22日発売開始。

オープンハードウェアとオープンソース[編集]

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

名称の制限[編集]

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

互換機[編集]

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

開発チーム[編集]

開発チームの主要メンバーは、Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis、Nicholas Zambetti。

入手[編集]

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

脚注[編集]

  1. ^ Arduino Software Release Notes”. Arduino Project. 2013年4月25日閲覧。
  2. ^ Arduino_Duemilanove.wav
  3. ^ Thompson, Clive (2008-10-20). “Build It. Share It. Profit. Can Open Source Hardware Work?”. Wired 16 (11): 166–176. http://www.wired.com/techbiz/startups/magazine/16-11/ff_openmanufacturing 2009年4月30日閲覧。. 
  4. ^ MAKE: Japan : なぜArduinoが勝利して今も生き続けているのか
  5. ^ Ars Electronica Archiv” (German). 2009年2月18日閲覧。
  6. ^ Ars Electronica Archiv / ANERKENNUNG” (German). 2009年2月18日閲覧。
  7. ^ Prix Ars Electronica2006年Honorary Mentionsを参照。
  8. ^ a b Arduino - Hardware
  9. ^ Arduino - Software
  10. ^ Arduino - Policy

参考文献[編集]

関連項目[編集]

Fritzing

外部リンク[編集]