Android + Arduinoでモータを動かしてみる

今年のGoogle I/OでOpen Accessoryが発表されて以来、Androidバイスからハードウェアを制御しようとする試みがそこここで見られるようになりました。ですが、このような試みはOpen Accessoryが発表される前から連綿と行われてきました。その中でも代表的な手法がADB (Android Debug Bridge)を使ったものでしょう。ADBとはAndroidアプリをデバッグする際にホストPCとAndroidバイス間で情報のやりとりをするためのプロトコルです。このプロトコルではTCPのポートフォワーディングが出来るため、ハードウェア側がADBプロトコルを実装していれば、USBを介したP2Pのデータ通信が可能になるわけです。


そう考えると、難しそうだなぁ、なんて思われるかも知れませんが、そうでもありません。この辺りを簡単に利用するためのライブラリがすでに存在するからです。それはmicrobridgeと呼ばれるライブラリです。もちろんAndroid用のクラスライブラリとArduino用のライブラリが用意されています。今回、このライブラリを使って夏休みの自由研究じゃないけど、サーボモータとDCモータを動かしてみました。



※そのうち動画を載せます。


ていうか、本当はOpen Accessoryを使いたいんですけど、HT-03Aでは使えないんですっ!少なくとも今年は買い換える予定はないので、このmicrobridgeに大きな期待を寄せているわけです。

Android側の実装

先ほども書いたようにmicrobridgeと呼ばれるクラスライブラリを使います。アプリケーションの見た目はこちら。



丸い円はくるくる回すタイプのSeekBarです。これでサーボモータを回します。

その下のラジオボタン (Front/Back) はDCモータが回転する方向を指定するためのものです。Frontが正転、Backが逆転です。そして最後のSeekBarがDCモータの回転する速度 (トルク) を調節するためのものです。


プロジェクトはGoogle Codeにアップしていますのでご参考に。

Arduino側の実装

Arduino側の実装です。まずはハードウェアですが、サーボモータに関しては制御線をPWM (3ピン) につないでいるだけです。DCモータは複雑ですが、こちらのサイトを参考に (そのままですが) しています。


建築発明工作ゼミ2008


こちらもプロジェクトはGoogle Codeにアップしていますのでご参考に。