Electronics

2011.06.02

設定不要、ArduinoからiPhoneへUIを送る、Ciao

Text by Takumi Funada

3256.jpg
CiaoはArduinoとiPhoneをつなげるためのライブラリ群です。専用のiOSアプリ”Ciao”を使って、LANに接続されているEthernetシールド搭載Arduinoにアクセスすることができます。このアプリは有料なので(4.99ドル/600円)、試すには勇気が必要ですが、気になったので購入しました。わずかなセットアップ作業ののち、作者のMichael Colagrossoさんが言うとおり、とてもイージーにArduinoとiPhoneが話を始めました。
おもな特徴は次の2つ。
・LAN上のArduinoを自動的に発見
CiaoはBonjourを使ってLANに接続されているArduinoを自動的に見つけ、コネクションを確立します。ネットワークインタフェイスの設定はまったく不要。接続後はTCP/IPベースの人間にとって可読性の高いプロトコルでやりとりします。Ethernetシールドの使用が前提ですが、PC上で動作するProcessingスケッチを経由して、USBで接続されたArduinoと通信することも可能なようです。
・iPhone上のUIをArduinoスケッチから生成
Arduinoに実装されている機能とそれをコントロールするiPhone側のユーザーインタフェイス(UI)をどうやって適合させるか。この課題にCiaoは解決策を用意しています。たとえば、ArduinoにLEDが3個ついていて、iPhoneでそれをオンオフしたいとしたら、iPhone上に3つボタンが並んでいるのが自然です。でも、Arduino側のハードウエアは変幻自在。LEDを10個付けることだってできるし、単純なオンオフ以外の操作が欲しいケースもあるはずです。そうした雑多なハードウエアに対応できる単一のUIを用意するのは不可能ですね。かといって、ユーザーが自分用のiPhoneアプリを目的ごとに作るのは大変。作れたとしてもハードウエアごとに個別のアプリがあったら混乱の元です。Ciaoの解決策はシンプルで、ArduinoのスケッチでUIを定義し、iPhoneアプリはArduinoからのリクエストに応じて必要なUIを生成し処理する、という方法です。LEDに対応するボタンが3つ必要なら、スケッチでそう定義します。LEDの制御とボタンの生成がひとつのコードに集約されているので、わかりやすいです。iPhone側のアプリは1種類でOK。うまいやりかたですね。
ドキュメントとサンプルが豊富に用意されており、コードの見通しも、やっていることが複雑なわりには良い印象です。スケッチの改造はすぐできました(iPhoneからLEDチカチカ)。もちろん、物足りない面はありますし(ボタン以外のUI部品も欲しいなあ)、他の方法と比べて決定的に有利とは言えない段階ですが(http/htmlの自由度と汎用性を取る方が正解?)、プロトコルからクライアント/サーバの仕組み全体を作ってわかりやすく提案している作者の発想を知ることは勉強になりました。さらに独自性のあるシステムに発展することを期待してます。