AndroidデバイスにI/OをつなぐIOIO(「ヨーヨー」と発音するみたいだヨ!)が話題になってますね。Arduinoでメディアアートしたり、PICでロボットを動かしたり、Makeなプロトタイピングが花盛りですが、IOIOはAndroidに外部装置をつなげて制御することを比較的手軽に実現できるボードのようです。SparkFun Electronicsへ$49.95で注文できます(これ書いている時点では先行発注の予約受付中)。

このIOIO、どう手軽かというと、AndroidデバイスとUSBで直結できて簡単にファームウェアの書き込みもできるし、AndroidアプリケショーンからJavaのAPI経由で制御できるクラスライブラリも提供される。Android側のroot化など不要。動作確認済みの端末はG1、Nexus One、Nexus S、Motorola Droid X。他の端末でも動くかもしれない気配。

ウェブのI/Oがもっともっと遍在する世界へ

実はわたくしハードウェアのことまるでわかりません。「プルアップ抵抗ってなに?」というレベルですし、Arduinoもボードを鑑賞して楽しむばかり。最近奮起してPICいじりたがっていますがいまのところはまだ意気込みだけ空回り中。

でもわたくし、ウェブ(インターネットクラウドのどこかにあるサービスやデータ)とスマートデバイスたち(現実世界に遍在してひとの身の回りの環境を構築している出しゃばらないコンピュータたち)がみんなつながりあってぼくらの能力を拡張してくれる、そういう世界観を信じています。そういう世界観に照らしてみても、「Androidデバイスにもっと草の根のI/Oを」とでもいうべきアプローチはちょっとクールですよね。何か作ってみたいな、と思います。

さて、製品情報はSparkFunを参照してください。作者であるイスラエルのエンジニア、YtaiさんのブログMeet IOIO – I/O for Androidも面白いです。これ読むとIOIOってGoogleの20%ルールがあったからこそ生まれてきたとのこと。興味深かったのでざっと訳してみました(もし間違ってたらごめんなさい)。

以下はMeet IOIO – I/O for Androidの和訳です。

Meet IOIO – I/O for Android

過去数カ月ずっと取り組んできた新製品の発売をアナウンスできてとても興奮してるよ!

IOIO(発音: ヨーヨー)は、電子回路をAndroidデバイスへ接続してAndroidアプリケーションからそれを制御できるようにする製品なんだ。

これは、USBケーブルでAndroidデバイスと接続する小さなプリント基板(2.7×1.2″ = 7x3cm)と、それからこのボードと通信するキミのAndroidアプリで使うためのソフトウェアライブラリ(Javaの.jarファイル)から構成される。

ファームウェアのプログラミングは要らない – ボード上のピンを制御するとてもシンプルなAPI(下の例を見てね)Androidアプリケーションを書くだけでいい。Androidデバイスの改造も要らない – 改造の難しさも避けられるし、保証が無効になっちゃうことも避けられる。

IOIOはいま、このページからオンラインでSparkFunへバックオーダできるよ。

最初の数枚のボードが数週間のうちに出荷されるはずだ。そのころにはすべてのソフトウェアとハードウェアが、緩いライセンスで100%オープンソースになる予定だよ。

主な特長:

  • 全部で48のI/Oピン – すべてデジタル入力および出力として機能できる。
  • 最高16のアナログ入力(10ビット)。
  • 最高9のPWM出力。
  • 最高3のSPIチャネル。
  • 最高3のTWI(I2C互換)チャネル。
  • 最高1.5A、5Vを供給するオンボードのスイッチモードレギュレータ。Androidデバイスを充電もできるし、小さなモータ数個に給電することもできる。
  • ボード上のブートローダが電話からファームウェアをプルするから、OTAファームウェアアップグレードやアプリケーション固有ファームウェアが可能。
  • パルス幅計測、静電センサーや、他にもいろいろ(最初のOTAファームウェアアップグレードでプッシュされはず)。

コード例

IOIOを使うアプリを書くのがどれくらいシンプルかキミにヒントを示すために、これはあるアプリから抜き出してきた小さなスニペットだよ。このアプリは、ひとつのサーボモータ(ピン12に接続)を制御して、ひとつの電圧計(ピン40に接続)を読み取る。見通しよくするために例外処理と適切なクローズ処理は省いてある。

[code lang=”java”] ioio.waitForConnect();
AnalogInput input = ioio.openAnalogInput(40);
PwmOutput pwmOutput = ioio.openPwmOutput(12, 100); // 100Hz
while (true) {
float reading = input.read();
pwmOutput.setPulseWidth(1000 + Math.round(1000 * reading));
sleep(10);
}
[/code]

プロジェクト例

THE RETROID

Retroidはレトロなデザインのアラーム時計で、Androidケータイからコントロールされるようにハックされている。

接続されると、ケータイのアラーム、着信、そしてテキストメッセージ着信の通知が、アラーム時計のそれぞれ違うベルやLEDのパターンとして現れる。

週末にこのすばらしいプロジェクトをハックしてくれたすごいThe Gifts Projectの連中に感謝!

THE VISUAL CHARGER

The Visual Chargerはキミのケータイ用のかっこいいドッキングステーションの別バージョンだよ。大きな7セグメントLEDディスプレイ上に充電レベルのパーセンテージ(0-9またはフルの”F”)を表示しながら、ケータイを充電する。ついでにディスプレイ上のドットを使って、溜まっている通知(不在着信、未読テキストメッセージ、など)を知らせてもくれる。

このプロジェクトは、IOIO開発のとても重大な一部も担当してくれたMisha Seltzerがやった。

WALL PRINTER

The Wall Printerは昔流のピンプリンタにインスパイアされた。7つのマーカが一列に並べてあって、それぞれ個々にサーボによって制御されて、上げたり(ペイントしない)下げたり(ペイントする)できる。キミがこれを手に持って壁面をずっとスライドさせるときに、そのサーボモータたちが注意深くタイミング制御されることで、テキストメッセージを作り出す。それは入力したテキストでも、SMSメッセージでも、GPS座標でも、なんでもいい。

このプロジェクトはまだ完成していないし、上のビデオはただ初期の実験の単純なパターンをデモしているだけだ。進展があったらアップデートをポストするつもりだよ。

このプロジェクトは、すばらしい友人、Liat Segalによってなされた。

なんで?

Androidケータイはパワフルなモバイルコンピュータだ。インターネット接続や、多種多様な内蔵センサ群(カメラ、GPS、IMU、タッチスクリーン)を持っている。それに、Android SDK開発者たちの偉大な仕事のおかげで、それ用のアプリケーションを書くのもとても簡単だ。多くのアプリケーションにとって、本当に欠けているのは、外部周辺装置とのコネクティビティだけだね。これこそまさにIOIOがハマるところだ: これは外部回路との通信能力によって、Androidデバイスの生来の能力をさらに充実させる。

これまでのソリューションを調べてみると、どれも以下の欠点の1つ以上があてはまっていた:

  • 高いコスト。
  • わかりにくい。特に初心者にとっては。
  • 高いレイテンシ。
  • 低いバンド幅。
  • AndroidデバイスOSの入れ替え必須。
  • 大きな物理的サイズ。

IOIOはこれら欠点のどれにもあたらない。コスト(SparkFunから〜$50)はこれまでのソリューションと競争力あるし、おそろしくシンプルに使えるし、〜3msの一方向レイテンシだし、〜300KB/secのスループットだし、ストックOSで動くし、サイズも小さい。

クレジット

このプロジェクトを20%時間で支えてくれたGoogleに感謝したい。彼らの助けがなければこのプロジェクトは決して産まれなかった。

特にRyan Hickman、Arshan PoursohiとMisha Seltzerに感謝したい。

コーディング、ハッカソンイベントの運営、そして初期段階の決定的なフィードバック提供で、このプロジェクトに貢献してくれたGoogleの他の連中。言わなくてもキミが誰かキミは知ってるね 🙂

SparkFunのAaron Weissはハードウェアに関してすごく助けてくれたし、この現実の世界でプリント基板設計がいかに完成するのか教えてくれた。

最初の採用者となる仕事を引き受けてくれてファンタスティックな最初のIOIOプロジェクトを作ってくれた親愛なる友人たち。

そして最後に、でも大切な、疲れたパパを忍耐強く支えてくれてた最愛の妻と子供たち。

(以上はMeet IOIO – I/O for Androidの和訳です。)

カテゴリー: Device

1件のコメント

これもアトムとビットの連携だよね? Arduinoで測った温度をクラウドサービスPachubeへアップロード | CSM Net · 2011-11-13 10:46 pm

[…] 販サイトでいろいろ注文してみたり、秋葉原へ行って実店舗をさまよってみたり、あとPICやIOIOを手に入れたり、mbedをいじらせてもらったり、いまのところ楽しく挑戦はつづいています […]

コメントは受け付けていません。