5月10日、Google I/OでAndroid Open Accessory Development Kitが発表されましたね。
電子工作クラスタの皆は、自作の機器をスマートフォンに接続するソリューションを 手に入れて、しかもデモがArduinoベースで組まれているので、もうワクワクです。
日本の株式会社アールティというところが、 GoogleがUSBセッションで配布したボードと同等の物を31,500円で販売しているのですが、ちょっとずいぶんお高いので、買おうという気にはなれませんでした。
しかし、ADKの回路図を見ていると、MAX3421Eという、Sparkfun社のUSB Host Shieldでも使っているチップが載っています。
これは手持ちのArduinoと SparkfunのUSB Host ShieldでもADKで遊べるんじゃないかと思って試してみました。
色々試行錯誤しましたが、結果、簡単に実現する方法が判明しました。
続き↓
手順は簡単です。
ADKをダウンロードしてきて、ADK_release_0506→firmware→arduino_libsの中にある、AndroidAccessoryとUSB_Host_Shieldフォルダを、Arduinoのライブラリフォルダにコピーします。
僕は自分のライブラリフォルダ(~/Documents/Arduino/libraries) にコピーしました。
ここまでは普通なのですが、ポイントが2つあります。
- ADKにはUSB_Host_Shieldライブラリが含まれていますが、本家のfelisさんのもので上書きします。
上書きする必要があるのは、
Max3421e_constants.h
Max3421e.h
Max3421e.cpp
どれもFebruary 25, 2011という日付になっているバージョン(100644)で試しました。 - SparkfunのUSBホストシールドは、本家のものとピンが異なっています。
Max3421e_constants.hに、
#define MAX_GPX 8
#define MAX_RESET 7
という記述がありますが、これを
#define MAX_GPX 7
#define MAX_RESET 8
と書き換えて、Sparkfun仕様にするようにしてください。
これはSparkfunのページにも記述があります。
これらの変更を終えたら、ADKに付属のdemokit.pdeを参考に、適当なスケッチを書いてやります。
Arduinoの注意点はもう一つあります。
Arduinoへの給電がUSBのみだと、どうやらUSBホストシールドからUSBに給電される電力が足りなくなる様です。
ですので、ArduinoにはACアダプタから給電してやる必要があります。
また、USBホストシールドのUSB端子横にスイッチがあるのですが、これはON側にしておかなければなりません。
Android側ですが、私はNexus Oneに2.3.4を入れ、また、XOOMに3.1を入れて試しました。
Eclipseの操作は、ドキュメントの通りにしました。
あえて注意をすべき点を書いておくと、Google APIsのLevel 10と12をインストールしておく必要があるみたいです。
あとはデバイスを接続して、Eclipseにプロジェクトを新規作成し、コードを読み込み、Run demokitして端末にapkを転送してやるだけです。
ArduinoにビルドしたスケッチをUploadして、Nexus OneとUSBホストシールドを接続するとダイアログが表示されます。
XOOMだと、こんな感じです。
それぞれ、OKを押してやると、DemoKitアプリケーションが起動します。
ここまでできたら、あとは自由にハードウェアをArduinoに接続して、アプリケーションを書いてやるだけのはずです。
アールティのボードを買うと31,500円もしますが、スイッチサイエンスでArduino UnoとUSBホストシールドを購入すれば6,000円でお釣りがくるでしょう。
幸い、手元にどちらもあったので、何も追加で購入せずに楽しめました。
こんにちは。
先日はお便りいただいたのにお返事遅く(5/5にメッセへ)すいません。
非礼お許しください。。。
「きてくださる」ときいてビクリして、思考が停止してお返事考えるのに時間がかかり
結局大変な失礼となってしまい、すいませんでした(´A`。)
っで、今コチラのブログを発見してビクリでふ!!!
難しすぎて本文にコメできなくてすいません。。。
後、アメリカに行ってみえたとか。。。
写真めっちゃキレイでふ♪
後、ワタクシメ・・・コンデジ買ってしまいました♪
今はドチラにいらっしゃることでしょう。。。
またコメしにきてもいいですか|ω゚)
ご挨拶まで・・・