「Arduino」の版間の差分
Floe~jawiki (会話 | 投稿記録) +ノートでの提案の告知 +クローン節の中立性タグ |
|||
1行目: | 1行目: | ||
{{告知|提案|クローンなど派生活動の掲載に中立的な検証可能性を求めることについて}} |
|||
{{宣伝|date=2012年5月}} |
{{宣伝|date=2012年5月}} |
||
116行目: | 117行目: | ||
== Arduinoクローン == |
== Arduinoクローン == |
||
{{観点|date=2012年6月|section=1}} |
|||
ハードウェア設計もソフトウェア製品もオープンソースであるため、他の製造業者もクローン製品をリリースしている(後述する名称問題のため "Arduino" という名前は使っていない)。 |
ハードウェア設計もソフトウェア製品もオープンソースであるため、他の製造業者もクローン製品をリリースしている(後述する名称問題のため "Arduino" という名前は使っていない)。 |
||
2012年6月6日 (水) 04:31時点における版
このページのノートに、このページに関する提案があります。 提案の要約:クローンなど派生活動の掲載に中立的な検証可能性を求めることについて |
この記事は広告・宣伝活動のような記述内容になっています。(2012年5月) |
簡単なプログラム例を表示中のArduino IDE のスクリーンショット。 | |
開発元 | Arduino Software |
---|---|
最新版 |
1.0.1
/ 2012年5月21日[1] |
プログラミング 言語 | Java |
プラットフォーム | クロスプラットフォーム |
種別 | 統合開発環境 |
ライセンス | LGPLまたはGPLライセンス |
公式サイト | http://www.arduino.cc/ |
Arduino(アルドゥイーノ[2])は、AVRマイコン、入出力ポートを備えた基板、C言語風のArduino言語とそれの統合開発環境から構成されるシステム。Arduino はスタンドアロン型のインタラクティブデバイス開発だけでなく、ホストコンピュータ上のソフトウェア(例えば、Adobe Flash、Processing、Max/MSP、Pure Data、SuperCollider)で制御することもできる。組み立て済みの基板を購入することもできるが、オープンソースハードウェアであり、ハードウェア設計情報のEAGLEファイルは無料で公開されており、誰でも自分の手で Arduino を組み立てることができる。
Arduinoプロジェクトは2005年にイタリアで始まり、当時入手可能であった他の学生向けのロボット製造用コントロールデバイスよりも安価なプロトタイピング・システムを製造することを目的にスタートした。設計グループは多くの競合製品よりも遥かに安価で簡単に使用できるプラットフォームの開発に成功した。Arduinoボードは、2008年10月までに5万ユニット以上[3]が、2011年2月で約15万台[4]販売されている。Arduinoプロジェクトは2006年度のアルス・エレクトロニカ賞において名誉言及を受けている。[5][6][7]
実装
ハードウェア
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本のアナログ入力がある。これらのピンは基板の一方の端にあるコネクタに集約されている。ここに接続するシールドと呼ばれる応用基板も発売されている。
Arduino Duemilanoveの後継機、Arduino UnoではFTDIを使わずAVRマイコンにUSBシリアル変換機能を搭載し、このマイコンにプログラムすることで様々なUSBデバイスとして動作させることが出来るようになった。
ソフトウェア
Arduino IDE
Arduinoの統合開発環境はクロスプラットフォームのJavaアプリケーションであり、エディタ、コンパイラ、基板へのファームウェア転送機能などを含む。その内部ではC言語のコンパイラgccやアップロードプログラムavrdudeが使用されている。
開発環境は Processing ベースで、ソフトウェア開発に不慣れなアーティストでも容易にプログラミングできるよう設計されている。プログラミング言語は Wiring[8] という言語から派生したもので、C言語/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とは、ビジュアルプログラミング言語Pure Data(Pd)をもとに開発されたArduino IDE相当の開発環境である。ホストPC側でMaxまたはPure Data(Pd)を使用し、Arduinoの開発にPduinoを使用することで、一貫したビジュアルプログラミング環境が提供される。画面上にグラフィックとしてArduinoのデジタルポートやアナログ入力ポートが表示され、GUIによって各ポートのデータの流れをプログラムする。非常に簡易にフィジカル・コンピューティングが実現できるため、映像・音楽方面のアーティストによって利用されている。
オリジナルのArduinoハードウェアのバージョン
オリジナルのArduinoハードウェアは Smart Projects が製造している。
これまでに商用製品として製造されたArduinoハードウェアには、16のバージョンがある[9]。
- Serial Arduino - DB9シリアルインタフェース装備。ATmega8使用。完成品の販売はなくキットとしてPCBが売られている。Original ArduinoはMassimo BanziとDavid Cuartiellesの二人によって設計されたArduino Serial v1.0である。Gianluca MartinoとDavid Mellisも開発に加わったAruino Serial v2.0から派生したArduino Single-Sided Serial v2 (Arduino S3V2)も基本設計は全く同じで、他にTom IgoeがデザインしたAruino Serial v2.0aとAdilson Akashiによってデザインされた自動リセット機能を搭載したArduino S3V3 (Severino) がある。RS232CレベルからTTLレベルへは2つのトランジスタ、BC547(NPN,CBE)とBC577(PNP,CBE)を使ってレベルシフト変換している。同等品にはFreeduino v1を含め多くのクローンが作られたが、Freeduino v2などではMAX232を使用して部品点数を減らし安価にする方向で開発されている。
- Arduino Extreme - USBインタフェース装備(FTDI FT232BM)。ATmega8使用。もともとあったAruino USBというキットを完成品として売り出したもので、Arduino USB v1及びv2と基本設計は同じでMassimo Banzi, David Cuartielles, Gianluca Martino, David Mellisの四人による。大きな違いは表面実装パーツを使い始めたことである。Arduino Extreme v2からAruinoシリーズの特徴であるgridded ground planeが採用された。Aruino USBにはなかった特殊な端子がArduino Extreme v1には用意されている。Arduino Extreme v2から以降のUSBモデルでも共通の"x3"というラベルの付いたFT232BMへのアクセス用端子に変更された。この端子を使用することでFT232BMのBit-bang modeが利用出来るが、GPL v2ライセンスではバイナリーコードを含むことを認めていないため、この機能はAruinoの標準機能ではない。
- Arduino Mini - 小型版。ATmega168使用。スケッチのアップロードにArduino miniUSBが必要。ブレッドボードに接続することができる。最初期のモデルは02型でStamp02のラベルがある。03型では02型と比べて通信ピンの横にデジタル7番ピンが追加されている。03型と04型ではGNDピンの位置が異なる。04型ではリセットピンが追加されている。
- Arduino Nano - 小型版。自動リセット機能搭載。USBインタフェース(ミニBコネクタ)を装備。表面実装されたATmega168使用のものとATmega328使用のものがある。ブレッドボードに接続することができる。Aruino Nano v1及びv2では三層構造の基板が使用されていたがv3では両面基板になったことでパターンを追えるようになった。v3からATmega328に変更された。米国Gravitech社が、Arduinoの名称使用の許諾を得て製造。
- LilyPad Arduino - 表面実装されたATmega168V使用のものとATmega328V使用のものがある。ウェアラブルな用途に特化した最小の構成。初期モデル(00型から02型)では自動リセット機能が無かったが、改良型(03型以降)では自動リセット機能を搭載している。その為、通信用のピンの数も従来の4ピンから6ピンに増えた。スケッチのアップロードにUSB TTL-232ケーブルなどの3.3V対応品が必要だが、前述の理由により初期モデルと改良型では使用するUSB TTL-232ケーブルが異なる。04型からATmega328Vに変更された。設計と開発は、MITのLeah BuechleyとSparkFun Electronics社による。
- 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 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"である。このモデルは電波法により日本国内での使用が禁じられている。
- 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が再び搭載されている。
- Arduino Uno - 従来のDuemilanoveと同じATmega328を使用しているが、シリアルコンバーターにはあらかじめプログラムされたATmega8U2を使用している点がFTDIのチップを使用していた従来のモデルと異なっている。
- Arduino Mega 2560 - 表面実装されたATmega2560を使用し、Flash メモリサイズは256kBになった。Unoと同様に、シリアルコンバーターにはあらかじめプログラムされたATmega8U2を使用している。
- Arduino Ethernet - Arduino UNOに、Wiznet社製 "W5100" チップを加えてイーサネット接続機能を統合したモデル。
- Arduino Mega ADK for Android - ATmega2560をベースモデルとして、"MAX3421e" チップを追加してAndroid OSを搭載した携帯電話との接続機能を統合したモデル。Ardduino UNO同様に "ATmega8U2" チップをシリアルコンバーターとして使用している。
- Arduino Leonardo - ATmega32U4を使用したArduino UNOの廉価版 (2011年末にマーケティングを予定)。従来搭載していたFT232RLが無くなっている。
- Arduino DUE - 32ビットの Atmel SAM3U (Cortex-M3) を使用したArduino Mega2560 フォームファクターの発展モデル (2011年末にマーケティングを予定)。
Arduinoクローン
この節は中立的な観点に基づく疑問が提出されているか、議論中です。(2012年6月) |
ハードウェア設計もソフトウェア製品もオープンソースであるため、他の製造業者もクローン製品をリリースしている(後述する名称問題のため "Arduino" という名前は使っていない)。
シールド互換クローン
- Freeduino MaxSerial - DB9シリアルインタフェース装備。Serial Arduino互換機だが、ATmega168またはATmega328Pを使用している。RESETピンと3.3Vピンを装備しているなどの点でArduino Duemilanove相当の機能を搭載している。MAX232互換チップのDS14C232CNを搭載している。Fundamental Logic社が組み立てキットとして製造販売。
- Freeduino Through-Hole - 表面実装のはんだ付けをしなくて済むような設計のArduino互換基板。NKC Electronics社がキットとして製造販売。
- Freeduino SB - Arduino Diecimila互換の半完成キット。HVW Technologeis社が製造販売。ver 2.2から従来のUSBタイプのFreeduinoでは省略されていたArduinoの"X3"相当の端子が設けられた。
- metaboard - シンプルな設計で低価格を目指した製品。ハードウェアとファームウェアが共にオープンソース。ウィーンのハッカーグループであるMetalabが開発。
- SeeeduinoはDiecimilaの互換機。ATmega168は表面実装されている。ユニバーサルボードをシールドに使える工夫が施されている。自動リセット機能搭載。Seeed Studio(Seeed Technology Inc.)が製造販売。
- 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が開発。
- FIO - Funnel[10]ツールキット向けのクローン。リチウムポリマー電池を接続できUSBから給電する充電回路を内蔵。ボードの下面にXBee用のソケットを装備している。日本のFunnelプロジェクトで開発されSparkFun Electronics社が製造販売。
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のアドオンを使用する。
- FEZ Domino - ARMベース(ARM7-LPC2388)のシールド互換ボード。Microsoft .NET Micro Framework をサポートしており、Visual Studioで開発する。
オープンハードウェアとオープンソース
Arduino のハードウェア設計は Creative Commons Attribution Share-Alike 2.5 ライセンスで提供されており、Arduino のWebサイトで入手可能である。レイアウトなどの情報もいくつかのバージョンのものが公開されている[9]。統合開発環境のソースコードと基板上のライブラリはGPL v2ライセンスで提供されている[11]。
名称の制限
ハードウェア設計もソフトウェアもコピーレフトライセンスで提供されているが、開発者は "Arduino" という名称が商標の普通名称化となることを避けたいと考えており、許諾無く派生製品に使うことを禁じている。Arduino という名称の使用に関する公式方針文書では、プロジェクトが第三者による作業結果を公式な製品に組み入れることについてオープンであることを強調している[12]。
Arduino という名称が使えないため、Arduino ユーザーは Arduino Diecimila をリバースエンジニアリングで解析し、同等の基板を Freeduino としてリリースした[13]。
開発チーム
開発チームの主要メンバーは、Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis、Nicholas Zambetti。
入手
国内正規販売代理店が2008年に大幅に増え、入手性は大幅に改善された。Megaの発売日(2009年3月26日)には、日本を含め、はじめて世界同時発売となった。
脚注
- ^ “Arduino Software Release Notes”. Arduino Project. 2012年5月21日閲覧。
- ^ Arduino_Duemilanove.wav
- ^ Thompson, Clive (2008-10-20). “Build It. Share It. Profit. Can Open Source Hardware Work?”. Wired 16 (11): 166–176 2009年4月30日閲覧。.
- ^ MAKE: Japan : なぜArduinoが勝利して今も生き続けているのか
- ^ “Ars Electronica Archiv” (German). 2009年2月18日閲覧。
- ^ “Ars Electronica Archiv / ANERKENNUNG” (German). 2009年2月18日閲覧。
- ^ Prix Ars Electronicaの2006年Honorary Mentionsを参照。
- ^ Wiring project
- ^ a b Arduino - Hardware
- ^ Funnel HomePage
- ^ 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.