ますます楽しくなった、新しいArduino



 今回はArduino(アルドゥイーノ)の最新情報についてまとめます。その前に少しだけ基本をおさらいし、これまでの歩みを振り返っておきましょう。

 Arduinoを説明する公式的なキャッチフレーズは「エレクトロニクス・プロトタイピングのためのオープンソースなプラットフォーム」です。エレクトロニクス・プロトタイピングは、電子部品を使って試行錯誤しながら何かを作る行為を指しています。電子工作と訳してもいいのかもしれませんが、試行錯誤のしやすさがArduinoの持ち味の1つなので、プロトタイピングという語をはずしてしまうと、特徴がちょっとぼやけてしまいます。オープンソースの意味は大丈夫ですね。Arduinoはすべての要素がオープンソースライセンスのもとで公開されていて、誰でも自由に複製したり改造したりができます。この点がArduinoの最大の魅力。最後のプラットフォームという言葉は、もう少し具体的に説明しましょう。

 Arduinoはハードウェアとソフトウェアの組み合わせで成り立っています。ハードウェアは小さな基板の形をしたコンピュータで、完成品を数千円で買うこともできますし、自分で部品を集めて1から組み立てることもできます。ソフトウェアはそのプログラムを開発するためのツールとライブラリ(再利用できるプログラム集)のことです。先ほどのキャッチフレーズでは、これらを総称してプラットフォームと呼んでいるわけです。ハードとソフトを個別に説明するときは、基板を「Arduinoボード」、開発ツールを「Arduino IDE(統合開発環境)」と呼ぶことがあります。

 もう一度、違う言葉でArduinoを説明するとしたら、マイクロコントローラ(マイコン=電子機器に組み込んで使う小さなコンピュータチップ)を手早く簡単に使えるようにしてくれる開発環境、と言ってもいいでしょう。Arduinoボードを1つ手に入れ、Arduino IDEを手持ちのPCにダウンロードすれば、すぐに使い始めることができます。そして、ネットや書籍を通じて公開されている膨大な作例にアクセスすることで、最小限のステップでエレクトロニクス・プロトタイピングの世界に参加可能です。

 次のリストは、我々がこれまでにImpress上で公開したArduino関連の記事です。もっと詳しい説明や製作例を見たい方は参考にしてください。

 Arduino IDEの最初のアルファ版がリリースされたのは2005年のことです。6年間という長いアルファ時代を経て、2011年11月にversion 1.0が登場しました。このタイミングで、実験プロジェクトの段階から安定的成長期へと移行したと考えていいでしょう。2012年5月には、さらにいくつかの改良が加えられたversion 1.0.1がリリースされました。

 1.0と1.0.1で反映されたIDEの変更点のうち、初心者にとってメリットが大きいと思われる項目を抜き出してみます。

・IDEのツールバーが整理され、操作がわかりやすくなった
・プログラム転送時の進捗表示やステータスバーのハードウェア情報など、動作状態が把握しやすくなった
・メニューやダイアログボックスが日本語に
・Arduino Leonardoを含む最新のハードウェアに対応

 このほかにも、ライブラリや言語仕様の変更がたくさん盛り込まれています。2009年以降のリリースノートを訳したものが下記のページにありますので、完全なリストが必要な方は参照してください。

□Arduino Wiki リリースノート日本語訳
http://www.musashinodenpa.com/wiki/

Arduinoボードの1つ「Arduino Uno」。Uno(イタリア語で1)という名前の通り、version 1.0時代の標準的なボードです。マイナーチェンジが何度かあり、現在はR3(revision 3)が流通しています。いまのところ、最初に買う1枚としては、このUno R3がオススメです
2012年5月にリリースされたArduino Leonardoは、今後の主流となる可能性を秘めています
純正Arduinoボードはキレイな箱に入って届きます。ここではArduinoの開発者チームが企画したものを純正ボード、他の開発者によるものを互換ボードと区別して説明します。UnoやLeonardoは純正ボードです

 Arduinoはハードとソフトの総称であると述べましたが、やはりまずそのキレイなボードに目が行きますね。人目を引くハードの存在がArduinoの世界を広げるきっかけとなってきました。

 現在の標準的なボードはArduino Uno R3です。もっとも入手しやすく、公開されている多くの資料がこのボードを前提としています。

 これまで純正ボードには、Unoを末裔とする標準形と、より大きな基板に高機能なチップを載せた「Mega」という、2つの系譜がありました。そこに第3の系譜「Leonardo」が加わったのが2012年5月のことです。パッと見はUnoに似ていて、大きな違いは認められないのですが、見た目以上の変化が潜んでいます。

Arduino Leonardo (ソケット無し仕様)。従来のArduinoボードはメインのマイコンの他に通信用のチップを必要としました。Leonardoでは、USBインターフェイス内蔵のマイコン(ATmega32U4)を採用することで、通信機能も1つのマイコンに集約されています
こちらはソケットがあらかじめハンダ付けされているLeonardo。USBジャックがマイクロBタイプに変更されているのがわかると思います。そのほかのジャック形状やピン位置はUnoと同じです
基板の裏側。上端の端子に小さくA6~A11とプリントされています。これらはUnoにはなかったアナログ入力(AD変換)としても使えるピンです。SDA、SCLと書かれたピンはI2C通信用。汎用ピンの代わりにここを使うことで、Unoとの互換性が保てます

 LeonardoとUnoの違いを手っ取り早く体感する方法は、やはりLチカ(LEDをチカチカ点滅させること)でしょう。Unoは13番ピンにつながるLEDを搭載していて、部品を外付けしなくてもLチカが可能ですが、その点滅パターンは、完全に光っている状態と完全に消えている状態を繰り返す、もっとも単純なデジタル的チカチカだけです。一方、Leonardoの13番ピンはアナログ出力(PWM)にも対応しているので、ホタルのようにぽわんぽわんとアナログ的に点滅させることができます。

 そのほかにも、いくつかのピンの機能が拡張されました。ただし、それらを積極的に使うと、Unoでは動かない回路ができあがってしまいます。LeonardoとUnoを併用する場合は(しばらくはそうするユーザーが多いと予想します)、Unoのピンアサインに合わせておけば互換性を維持できます。

 従来のArduinoボードでは難しかったけど、Leonardoを使えばすぐできる、という性質の新機能はないんでしょうか? あります。内蔵のUSBインターフェイスを使ってUSB接続の入力デバイスを作るとき、LeonardoとArduino 1.0.1のコンビネーションが威力を発揮します。

LeonardoをUSBマウス化し、ペイントツールで自動的に図形を描画中。PCからは標準のマウスとして認識されるので、どんなOSでもつなぐだけで動作します
Leonardoに取り付けたタクトスイッチを押すと、マウスカーソルが目にも留まらぬ速さで動きまわりリサージュ図形を描き出します。カーソルを上下左右に動かすのがLeonardoの役目。クリックは人間が指でやっています
タクトスイッチはLeonardoのソケットに直接刺しました。プルアップ抵抗は内蔵のものを有効にしてますが、その方法はArduino 1.0.1から追加された pinMode(pin, INPUT_PULLUP)という方法を利用しています
ソケットに直接挿入できる2本足のタクトスイッチは、見かけたら確保しておきたい部品の1つ。この部品はだいぶ前に秋葉原のお店で偶然見つけたもので、型番等は不明です

 LeonardoをUSBマウスに変えるプログラムは次の通りです。

int x, y;  float r;    void setup() {    pinMode(12, INPUT_PULLUP);  // 内部プルアップ有効    Mouse.begin();  }    void loop() {    if(!digitalRead(12)) {  // スイッチが押されていたら      r += 0.02;      x = sin(r*3) * 12.0;      y = cos(r*5) * 12.0;      Mouse.move(x, y, 0);  // X, Y, Wheel    }    delay(5);  }

 この通り、わずか16行です。マウスに直接関係するコードは、Mouse.begin()とMouse.move(x, y, 0)の2行だけ。ライブラリの読み込みすら行なう必要がありません。

 リサージュ図形を生成するために、sinやcosを使っている部分がありますね。この数行を変更することで、いろいろ応用できそうです。たとえば、アナログ入力端子につないだセンサーから読み取った値をマウスの軌跡に変えれば、ペイントツールが簡易オシロになります。

 標準のライブラリはUSBマウスだけでなく、USBキーボードもサポートしています。センサーからのデータを数字に直して「打ち込む」プログラムを作れば、普通の表計算ソフトに直接そのデータを入力することも可能でしょう。従来、ArduinoボードをPCに繋いでデータを取得するには、PC側でシリアル通信を行なうプログラムを作る必要がありました。しかし、LeonardoとArduino1.0.1の登場により、標準のデバイスドライバで動作するオリジナルの入力デバイスが、あっという間に作れるようになってしまったわけです。

 この状況に、我々はかなりワクワクしていて、色んなアイデアが飛び交っています。USBマウスを使った次の作例も製作中です。

Arduino IDE (version 1.0.1)でボードに書き込み中の画面

 LeonardoのUSBインターフェイスの仕組みは、従来のArduinoボードと異なっているため、使い方によっては注意が必要です。詳しくは下記のページを参照してください。

□Guide to the Arduino Leonardo
http://arduino.cc/en/Guide/ArduinoLeonardo
□上記ガイドの日本語版
http://trac.switch-science.com/wiki/Guide/ArduinoLeonardo

 Leonardoは複数のショップ入手可能です。ピンソケットがあるタイプとないタイプが売られているので、確認してから購入しましょう。

□共立電子エレショップ
http://eleshop.jp/shop/g/gC64364/
□スイッチサイエンス
http://www.switch-science.com/products/detail.php?product_id=967
□ストロベリー・リナックス
http://strawberry-linux.com/catalog/items?code=35016

 Arduinoは今も急速に普及中です。2011年12月にArduinoチームのメンバーが公開のイベントで明かした予想によると、2012年1月頃からの18カ月間に、全世界で100万台のArduinoボードが出荷されるだろうとのこと。単純に計算すると、月に5.5万台の速さで増殖していることになります。純正ボードとは異なる形態のハードウェアも日々増えているので、そういったものも含めると、もっと速いでしょう。ますます楽しみなArduino界の今後です。

こちらは2012年初頭に発売された、Sparkfunのロボット型Arduino互換ボード「Mr.Roboto Kit」。一部の部品はハンダづけをして取り付ける組み立てキットです
目がLED、鼻はブザー、耳の部分がセンサーになっています
付属の小型液晶ディスプレイを接続したところ。案外、実用的
プログラムを書き込むときは、USBインターフェイスを接続します。面白い顔ですよね