Arduinoで遊ぶ(1)
ADKをやってみたいと思う。
ただ、Android3.1がいるので実機が届かない。
注文が届くのはもう少しかかるらしい。
なので、接続用のものを先に試すことにした。
ADKでも専用のデバイスを買うとこれがまた結構高い。
Androidパッドが買えるかもしれない。(中華パッドの場合)
で、Arduino+USBホストシールドでやってみる。
http://side2.jp/2011/05/try-adk-part1/
に3回にわたって連載されている。
結局はこれと同じようにしてやってみることにしたが、実際は殆どが互換品というかパチものになる。
Arduinoは秋月のものを使った。
【はまったポイントその1:電源供給】
USBから電源をとらない場合、
・ArduinoのジャンパをExtにする
・USBシリアルのJ2ジャンパを外す(そうしないと+5Vがショートする)
になる。
これでVinに+5V+2V程度で9Vほどのアダプタをつけると動作する。
で、USB-Hostシールド。
これはページにもあるが、
・上のようにしてVinから(9Vほど)とるか
・PowerのスイッチをOffにして+5Vからジャンピングするか
になる。
ADKの場合は外部電源がいるのでVinからとるのがいいような気がする。
できれば電源の5V動作がいいが、そうなるとレギュレータ部分を本体・USB-Hostシールドとも変更になる。
USB-Hostシールドはテストソフトも入っているので動作確認はできるが、これだけだと面白くない。
ADKなしで遊べるものはないかと探すと
http://d.hatena.ne.jp/NeoCat/20101123/1290514516
にPasoriをつなぐライブラリがあった。
【はまったポイントその2:ArduinoのVer】
ただ、これに限らず、Arduino0.23では動くがArduino1.0だとコンパイルが通らない。
なんだかincludeが変わったようだ。なのでArduino0.23でいくことにした。
古いのもおいてあって助かった。
【はまったポイントその3:USB-HostシルードのVer】
SpakFannoページを見ると
Max3421e_constants.hの
#define MAX_GPX 8
#define MAX_RESET 7
を
#define MAX_GPX 7
#define MAX_RESET 8
と書き換えるようになっていて、Sparkfun仕様らしい。
http://www.sparkfun.com/products/9628
ただその後変更したようで両方が混在する。
http://twitpic.com/5yp0yb
で自分のものは修正されていた。
なのでヘッダは修正しなくてもOKというか修正するとまずい。
以上でやってみると、動作した。
しかし、半日使っていると
OSCOKIRQ failed to assert
が出始めて、そのうちこればかり出て動かなくなった。
ネットを漁ってみたが解決方法がよくわからない。
Arduinoは動いている風なのでどうもUSB-Hostが怪しい。ボードを抜くと同じメッセージになりSPIでレジスタの反応を見ているようだ。
いろいろ探すと発振器ではないか?という話がありつけ変えてみた。(12MHz)
症状は変わらない。
どうも初期不良の地雷を踏んだような気がする。
勝って半日ではあるが、この手は完成品ではないので、ハンダもしてあるし不良返却もできそうにない。
泣く泣く再度注文することにした。
コメントはありません