今回はArduino(アルドゥイーノ)の最新情報についてまとめます。その前に少しだけ基本をおさらいし、これまでの歩みを振り返っておきましょう。
Arduinoを説明する公式的なキャッチフレーズは「エレクトロニクス・プロトタイピングのためのオープンソースなプラットフォーム」です。エレクトロニクス・プロトタイピングは、電子部品を使って試行錯誤しながら何かを作る行為を指しています。電子工作と訳してもいいのかもしれませんが、試行錯誤のしやすさがArduinoの持ち味の1つなので、プロトタイピングという語をはずしてしまうと、特徴がちょっとぼやけてしまいます。オープンソースの意味は大丈夫ですね。Arduinoはすべての要素がオープンソースライセンスのもとで公開されていて、誰でも自由に複製したり改造したりができます。この点がArduinoの最大の魅力。最後のプラットフォームという言葉は、もう少し具体的に説明しましょう。
Arduinoはハードウェアとソフトウェアの組み合わせで成り立っています。ハードウェアは小さな基板の形をしたコンピュータで、完成品を数千円で買うこともできますし、自分で部品を集めて1から組み立てることもできます。ソフトウェアはそのプログラムを開発するためのツールとライブラリ(再利用できるプログラム集)のことです。先ほどのキャッチフレーズでは、これらを総称してプラットフォームと呼んでいるわけです。ハードとソフトを個別に説明するときは、基板を「Arduinoボード」、開発ツールを「Arduino IDE(統合開発環境)」と呼ぶことがあります。
もう一度、違う言葉でArduinoを説明するとしたら、マイクロコントローラ(マイコン=電子機器に組み込んで使う小さなコンピュータチップ)を手早く簡単に使えるようにしてくれる開発環境、と言ってもいいでしょう。Arduinoボードを1つ手に入れ、Arduino IDEを手持ちのPCにダウンロードすれば、すぐに使い始めることができます。そして、ネットや書籍を通じて公開されている膨大な作例にアクセスすることで、最小限のステップでエレクトロニクス・プロトタイピングの世界に参加可能です。
次のリストは、我々がこれまでにImpress上で公開したArduino関連の記事です。もっと詳しい説明や製作例を見たい方は参考にしてください。
- 【週刊スタパトロニクスmobile 2008年】
- 【ブレッドボーダーズ 2008年】
- 【プロトタイパーズ 2009~2011年】
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はハードとソフトの総称であると述べましたが、やはりまずそのキレイなボードに目が行きますね。人目を引くハードの存在がArduinoの世界を広げるきっかけとなってきました。
現在の標準的なボードはArduino Uno R3です。もっとも入手しやすく、公開されている多くの資料がこのボードを前提としています。
これまで純正ボードには、Unoを末裔とする標準形と、より大きな基板に高機能なチップを載せた「Mega」という、2つの系譜がありました。そこに第3の系譜「Leonardo」が加わったのが2012年5月のことです。パッと見は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マウスに変えるプログラムは次の通りです。
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 Leonardohttp://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インターフェイスを接続します。面白い顔ですよね |