読者です 読者をやめる 読者になる 読者になる
一人もくもく会 α verでサービス開始しました。

androidでarduinoを操作

arduino

AndroidのUSBホスト機能でArduinoとシリアル通信する
という記事を見たのが全ての始まりで、
androidからarduinoが操作できるのなら
PCとandroidbluetoothで接続することによって
お金をかけてarduinowifiシールド着けなくても
arduinoを遠隔操作できるのではないか、
というところから実際に試してみようと思った。

今回はarduinoにつけたサーボモータの角度を
色々いじれるように試してみた。

まあ、なんだかんだで色々とハマった。

まずはandroidアプリの作成。
ボタンにsetOnClickListenerを実行すると強制終了。
NullPointerExceptionが発生する。
最近のアプリの作り方はよくわからないのだが、
なんかfragmentだかというのを使うように変わっていた。
fragmentの上にボタンやテキスト等を貼っていたのだが、
どうもそのせいでリソースが上手く取得できておらず
エラーになっていたっぽい。

そういう仕様で動作するようになってるんじゃないのかと思いながら
わけわからないので結局メインフレームの方に全部記述を移して
fragmentの方は使用しないようにしたら上手く行った。
これで数時間ほど費やしたと思う…。


しかしいざ実行してみるとサーボモータは動かない。
まずひとつの原因。それは電力不足…。
arduino上のLEDも光が弱い。
仕方がないので電池を使ってみたが
このへんは自分の知識不足で上手く動かせなかったので
サーボモーターはやめて13のLEDを光らせることに変更した。

もう一つの原因が、最初のURLで紹介していたやり方で
マニフェストに追記したりxmlを追加したり
なんかよくわからないことをやっているな、と思っていたのだが
これをよく理解していないためだった。
これが全ての肝で、単にアプリを起動してもUSBには接続できない。
なんとUSB接続時にこのアプリを開くかどうかandroidが聞いてくるので、
そこでOKして起動することでUSBとアプリが関連付けられ、
接続ができるようになる、というものだった。
USBホストはそういう機能だもんな…。

ちなみに購入したケーブルはケーズデンキの下記。650円くらいで安い。
USBホスト変換アダプタケーブル サンワサプライ AD-USB18
マウスをandroidにつけるとマウスポインタが出てきてびびった。


最終的にA(65)で点灯、B(66)で消灯、を試したところ
上手く行った。


ちなみに記事を書いてから気づいたが
Android版ArduinoFirmataを作った
というのがあった。
arduino.digitalReadとかってそのままじゃないか。なんと便利そうな。