Arduino

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索
Arduino
Arduino Logo.svg
Arduino Uno - R3.jpg
Arduino Uno SMD R3
開発元 Arduino
製造元 多数
種別 ワンボードマイコン
OS 無し
CPU Atmel AVR (8-bit),
ARM Cortex-M0+ (32-bit),
ARM Cortex-M3 (32-bit),
Intel Quark (x86) (32-bit)
メモリ SRAM
ストレージ Flash, EEPROM
ウェブサイト www.arduino.cc
www.arduino.org

Arduino(アルドゥイーノ[1])は、AVRマイコン入出力ポートを備えた基板、C++風のArduino言語とそれの統合開発環境から構成されるシステム。Arduino LLC および Arduino SRL が設計・製造を行い、登録商標を持っている。

概要[編集]

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

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

2010年以降のIoTの流行に伴い、センサーデバイスの1つとしてArduinoが大きな注目を集めている。

ハードウェア[編集]

Arduino Uno
Arduino Duemilanove

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 Software
スクリーンショット
簡単なプログラム例を表示中のArduino IDE のスクリーンショット。
開発元 Arduino LLC
最新版 1.8.3 / 2017年5月31日(6か月前) (2017-05-31[9]
リポジトリ github.com/arduino/Arduino
プログラミング言語 Java
プラットフォーム クロスプラットフォーム
種別 統合開発環境
ライセンス LGPLまたはGPLライセンス
公式サイト www.arduino.cc
テンプレートを表示

Arduino IDE[編集]

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

開発環境は Processing ベースで、ソフトウェア開発に不慣れなアーティストでも容易にプログラミングできるよう設計されている。プログラミング言語は Wiring から派生したもので、C言語風の構文で制限の多い基板向けに最適化されている。Arduinoではプログラムをスケッチと呼ぶ。

典型的な最初のスケッチは、単純にLEDを点滅させる"blink"というものである。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開発環境で "マイコンボードに書き込む" ボタンを押した際に必要な修正が施されたコードに変換されて一時ファイルに自動的に書き込まれる。

#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 Mega2560
Arduino Pro Mini。サイズが18mmx33mmと小さい。
LilyPad Arduino。Lily(ユリ)のような形のアルドゥイーノ。衣服やカバン 等々に縫い付けて使用することなどを想定したもの。花弁の穴に導電性の糸を通して衣服等に縫いつけることで回路をつくる。

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

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

Arduino Uno
従来のDuemilanoveと同じATmega328を使用しているが、シリアルコンバーターにはあらかじめプログラムされたATmega8U2(最新のRevision 3ではATmega16U2に変更)を使用している点がFTDIのチップを使用していた従来のモデルと異なっている。このため、コントロールパネルから簡単にUNOを確認できる。
Arduino Due
32ビットの Atmel SAM3X8E (Cortex-M3, 84MHz) を使用したArduino Mega2560 フォームファクタの発展モデル。Flash 512KB, SRAM 96KB。2012年10月22日発売開始。
Arduino Leonardo
ATmega32U4を使用したArduino UNOの廉価版。従来搭載していたFT232RLが無くなっている。2012年6月発売開始。
Arduino Mega 2560
表面実装されたATmega2560を使用し、Flash メモリサイズは256kBになった。Unoと同様に、シリアルコンバーターにはあらかじめプログラムされたATmega8U2を使用している。
Arduino Mega ADK
ATmega2560をベースモデルとして、"MAX3421e" チップを追加してAndroid OSを搭載した携帯電話との接続機能を統合したモデル。Arduino UNO同様に "ATmega8U2" チップをシリアルコンバーターとして使用している。
Arduino Micro
小型版。ATmega32U4使用。同じCPUを使用したArduino Leonardoと機能は同等だが、形状はArduino Nanoとほぼ同じ。Micro USB接続。Adafruitとの共同開発製品。
Arduino Mini
小型版。ATmega168使用。スケッチのアップロードにArduino miniUSBが必要。ブレッドボードに接続することができる。最初期のモデルは02型でStamp02のラベルがある。03型では02型と比べて通信ピンの横にデジタル7番ピンが追加されている。03型と04型ではGNDピンの位置が異なる。04型ではリセットピンが追加されている。
Arduino Nano
小型版。自動リセット機能搭載。USBインタフェース(ミニBコネクタ)を装備。表面実装されたATmega168使用のものとATmega328使用のものがある。ブレッドボードに接続することができる。Arduino Nano v1及びv2では三層構造の基板が使用されていたがv3では両面基板になったことでパターンを追えるようになった。v3からATmega328に変更された。米国Gravitech社が、Arduinoの名称使用の許諾を得て製造。
Arduino Ethernet
Arduino UNOに、Wiznet社製 "W5100" チップを加えてイーサネット接続機能を統合したモデル。
Arduino Esplora
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 Fio
Arduino Pro
Arduino Pro Mini
LilyPad Arduino
表面実装されたATmega168V使用のものとATmega328V使用のものがある。ウェアラブルな用途に特化した最小の構成。初期モデル(00型から02型)では自動リセット機能が無かったが、改良型(03型以降)では自動リセット機能を搭載している。その為、通信用のピンの数も従来の4ピンから6ピンに増えた。スケッチのアップロードにUSB TTL-232ケーブルなどの3.3V対応品が必要だが、前述の理由により初期モデルと改良型では使用するUSB TTL-232ケーブルが異なる。04型からATmega328Vに変更された。設計と開発は、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
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を使用して部品点数を減らし安価にする方向で開発されている。
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 の標準機能ではない。
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が再び搭載されている。

シールド[編集]

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

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

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

名称の制限[編集]

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

互換機[編集]

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

Arduino AtHeart[編集]

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

Arduino Certified[編集]

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

非認可の互換機[編集]

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

非公式クローン[編集]

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

Arduino as ISP[編集]

Arduino を使い、Atmel AVR のマイクロコントローラに、Arduino IDE で書いたプログラムを転送することが出来る。まず、Arduino ボード自体に、"ArduinoISP" プログラムを "スケッチの例" から選んで転送し、Arduino ボードと AVR マイクロコントローラを適切に配線し、ArduinoIDE の書き込み装置の設定を "Arduino as ISP" にすることで転送が出来る[15]。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. の間で裁判が発生した[16]

入手[編集]

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

脚注[編集]

参考文献[編集]

関連項目[編集]

Arduino Unoに加えてブレッドボードセンサーリレーなどを用いて、音に反応してモータが動くシステムを試作している様子。
Arduinoを用いてhexapodの動きを制御している様子(動画)。
Fritzing

外部リンク[編集]