Arduino

Arduino（アルドゥイーノ もしくは アルデュイーノまたはアルディーノ）とは、（ハードウェアの）「Arduinoボード」、および（ソフトウェアの）「Arduino IDE」から構成されるシステムである。Arduinoボードは、AVRマイコン、入出力ポートを備えた基板であり、Arduino IDEはC言語風の「Arduino言語」によってプログラムを制作・コンパイル・デバッグ等し、それをArduinoボードに転送　等々するための「統合開発環境」と呼ばれる、PC上で作動させる一種のソフトウェアである。 また「Arduino」という名称は広義には、それらの開発・改良を行う一連のプロジェクトや、その結果生まれた会社、またその多くの開発者らによるコミュニティまでも指すことがある。 もともと2005年にイタリアで5人の人物によって、「もっとシンプルに、もっと安価に、技術者でない学生でもデジタルなものを作ることができるようにする」という目的を据えたプロジェクトとして「Arduinoプロジェクト」が立ち上がり、彼らが、きわめて安価で、テクノロジーには縁遠い人でも理解でき使えるほどシンプルで（simplicity）、オープンな　ハードとソフトのまとまり、を生み出すことに成功し、それが人々に歓迎され、数年のうちに全世界に普及した。「Arduino IDE」の管理を行い開発コミュニティの窓口となる非営利団体Arduino Foundation、およびArduino関連品の販売の一元管理を行う営利団体Arduino Holdingが関わっている。 Arduino はワンボードマイコンの一種であり、I/Oポートを備え、インタラクティブな（つまりセンサ類を追加して外界の物理的変化を感知させたり、アクチュエータを追加して外界に物理的な変化を起こさせることが可能な）装置として用いることができるものである。スタンドアローン型で（つまり、Arduino単体で、一度設定・作動させ始めたら他のコンピュータは一切無しに）作動させることもでき、また他のコンピュータと常時連携させ、そこで動くソフトウェア（例えば、Adobe Flash、Processing、Max/MSP、Pure Data、SuperCollider 等）をホスト役に設定して、それに従属しコントロールされる形などで用いることも可能なものである。 オープンソースハードウェアであり、オープンソースのごく簡単な規定を守りさえすれば誰でも自由に用いることができ、ハードウェア設計情報のEAGLEファイルは無料でネット上で公開されている。組み立て済みの基板を購入することもできるほか、誰でも（AVRのICや他の部品となる半導体素子やブレッドボードなどを電子部品店などで購入するなどして）自分自身の手で Arduinoのハードウェア を組み立てることもできる。Arduino が「オープンソースハードウェアという概念を広めるきっかけとなった」と評価する声もある。 Arduinoボードは入出力ポートの数、ボードの大きさなどが異なる様々なタイプが用意されており、それらの中から用途や好みに応じて選ぶことができる。 Arduinoを生みだすことになった「Arduinoプロジェクト」は2005年に北イタリアのイヴレーアという街でのen:Interaction Design Institute Ivrea (IDII)において始まった。当時、ロボットのデジタル制御装置の試作をするために学生が用いることが可能だったのは主に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、という体制にする、とされ、全世界のユーザらから歓迎され （ユーザ心理、開発者心理的にも）よりすっきりとした環境が整った。 このプロジェクトを立ち上げたメンバーのひとりMassimo Banziが、いわゆる「いきつけ」にしていたバーの店名が「Bar di Re Arduino」（バー・ディ・レ・アルドゥイーノ ＝「アルドゥイーノ王のバー」）であったので、その店に敬意を表しつつ、プロジェクト名や製品名に「Arduino」という名を使わせてもらうことにした。Re Arduino（アルドゥイーノ王）は「アルドゥイーノ・ディヴレーア」（意味的には「イヴレーアのアルデゥイーノ」という呼び方）でも呼ばれ、西暦1002年にイヴレーアの王になり神聖ローマ帝国のハインリッヒ二世と闘った人物であり（よって、この街の人々には知られている王であり）、このパブはこの王に敬意を払うためにその名を冠していたわけである。なおイヴレーアには「via Arduino アルドゥイーノ通り」という名の（石畳の）道もあり、このバーは、この道を下方に下り終えたあたり（その後に「Via E. Guarnotta」と名前が変更された区間に入ったあたり、街を流れるドラ・バルテア川（it:Dora Baltea）へと近づいたあたり）に ある/あった。 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ハードウェアは Arudino SRL が製造している。 これまでに商用製品として製造されたArduinoハードウェアには、以下の物がある。 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 下記は サードパーティー から発売されている物。 KONDO-UART Shield 近藤化学株式会社の、「RCB-4 HV」「RCB-4 mini」と Arduino を繋ぐ為の中継基板を繋ぐのに便利。 Arduinoを動かすためのプログラムを「Sketch　スケッチ」と言い、このスケッチを編集・転送するためのソフトウェア（統合開発環境）の代表がArduino IDEである。 Arduino上のプログラムはSketch（スケッチ、以下「スケッチ」と記載）と呼ばれる。C言語のような構文（シンタックス）のプログラミング言語である。もとはWiring（ワイアリング）（英語版） から派生した言語であり、制限の多い基板向けに最適化されている。ファイル拡張子は .ino であり、テキストファイルとして保存される。 最小限のスケッチは、2つの特別な関数で構成する。 setup() : 電源がオン、またはリセットした後、最初の一度だけ実行される関数。 loop() : setup()関数が終了した後、繰り返し実行される関数。ボードの電源がオフ、またはリセットされるまで、ボードを制御し続ける。 LED点滅の例 入門者が典型的に試みる最初のスケッチは、単純にLEDを点滅させる「blink」というものである。 （ほとんどのArduinoボードには、最初から表面にLEDが実装され適切な抵抗器も組み込まれていて、追加部品一切無しでも即時 点灯可能なので、これを一番手軽な出力装置として入門者は利用する）。 #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秒待機する } sketchの編集・転送用のプログラムであり、Arduinoの統合開発環境の代表格。エディター（編集画面）、コンパイラ、sketchの転送（ハードウェアへのファームウェア転送）機能などを含む。ソフトウェア開発に不慣れなユーザーでも容易にプログラミングできるよう設計されている。 そのために初期のバージョン1.xはクロスプラットフォームのJavaアプリケーションとして実装されていたクリエイティブ・コーディング環境のProcessing をベースにしており、IDEの見た目も非常に似通っていた。 バージョン2.0でJavascriptを用いたWebベースのスタンドアロンアプリケーションとして再構築され、デバッガを用いたステップ実行や、クラウド上のスケッチ保存、読み込みに対応するなど機能も大幅にアップデートされた。 内部ではC言語のコンパイラGCCやアップロードプログラムavrdudeが使用されている。 PlatformIOは、主にPlatformIO Labs社が開発するオープンソースのマイクロコントローラの統合開発環境で、Visual Studio Codeの拡張機能として提供される。Arduinoに使用されるAVR単体の開発にも使える高機能な環境だが、Visual Studio Codeを日常的に使っている人にとっては同じ環境の開発ができるので、Arduinoの開発に用いるユーザーも多い。 FirmataはMIDIをベースにした、マイクロコントローラをシリアル通信経由(もっぱらUSBを介する)で制御するための汎用プロトコルである。このプロトコルを使用するためのスケッチはサンプルとしてArduino IDEに付属しているため、一度書き込みをした後は、Firmataに対応する環境を使うことでArduino IDEを使わずにインタラクティブにIO制御をすることができる。ただし、スタンドアロンでArduinoを使用できなくなるため、ラップトップやデスクトップPCから手軽に電子部品の制御するといった用途に適している。 Firmataに対応した環境としては、Processing のFirmataライブラリや、音声信号処理を得意とするビジュアルプログラミング環境Cycling' 74 MaxでのMaxuinoや、Pure Data(Pd)におけるPduinoのような例がある。 MaxuinoやPduinoを使用すると、画面上にグラフィックとしてArduinoのデジタルポートやアナログ入力ポートが表示され、GUIによって各ポートのデータの流れをプログラムできる。非常に簡易にフィジカル・コンピューティングが実現できるため、映像・音楽方面のアーティストによって利用されている。 Arduino のハードウェア設計は Creative Commons Attribution Share-Alike 2.5 ライセンスで提供されており、Arduino のWebサイトで入手可能である。レイアウトなどの情報もいくつかのバージョンのものが公開されている。統合開発環境のソースコードと基板上のライブラリはGPL v2ライセンスで提供されている。 ハードウェア設計もソフトウェアもコピーレフトライセンスで提供されているが、開発者は 「Arduino」 という名称が商標の普通名称化となることを避けたいと考えており、許諾無く派生製品に使うことを禁じている。Arduino という名称の使用に関する公式方針文書では、プロジェクトが第三者による作業結果を公式な製品に組み入れることについてオープンであることを強調している。 ハードウェア設計もソフトウェア製品もオープンソースであるため、他の設計者・製造業者も互換機製品をリリースしている。なお、前述の名称問題のため「Arduino」という名前は使っていない。公式のウィキサイトArduino Playgroundには、互換機の情報を掲載する場が設けられている。 Arduino AtHeart プログラムに参加し、売上の5%以下を支払うことで、互換機として紹介され、Arduino IDE のサポートをうけられる。現状、AVR の ATMega328, ATMega1280, ATMega2560, ATMega32U4, SAM3X を利用していることが条件。 Arduino Certified として、公式の認証を受けた Arduino 商品として、Intel Galileo や Intel Edison があり、Arduino IDE でもサポートされている。AVR 以外の CPU でも認証を受けられる。 Arduino IDE の hardware フォルダ内の boards.txt を書き換えることで、対応するマイコンボードを増やすことが出来る。このような例にアーテックの Studuino などがある。 正確には把握されていないが、公式ボードの非公式クローンの販売台数は公式分よりも多いと予想されており、中国などの製造会社が安価な商品を生産している。 Arduino を使い、Atmel AVR のマイクロコントローラに、Arduino IDE で書いたプログラムを転送することが出来る。まず、Arduino ボード自体に、「ArduinoISP」プログラムを「スケッチの例」から選んで転送し、Arduino ボードと AVR マイクロコントローラを適切に配線し、ArduinoIDE の書き込み装置の設定を「Arduino as ISP」にすることで転送が出来る。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. の間で裁判が発生した。 国内正規販売代理店が2008年に大幅に増え、入手性は大幅に改善された。Megaの発売日の2009年3月26日には、日本を含め、はじめて世界同時発売となった。