2011年6月20日月曜日

AndroidからAndroidの乗ったロボを操縦する


ABC2011sへ持ってく予定の新作です。
端末がいっぱいあったので、タブレットからAndroid携帯とBluetoothで通信して、
Android携帯からはMicroBridgeを使ってArduinoと通信するといった構成で
遠隔操縦ロボつくりました。

詳細は続きから



ロボの構成図。
配線的には結構ギリギリで、RX、TXピンを今後のために使いたくなかったし、
使うと色々Arduino側のプログラムで面倒だったので残した。
そもそも、USBホストシールドを付けた時点で、7〜13ピンは使えないようなので、
使えるピンはデジタル出力は2〜6ピンだけ。

モーターは1つを制御するにはTB6612FNGは3ピン必要
(回転方向制御に2ピン、回転速度制御に1ピン)
しかも回転速度制御はPWM信号が必要なので、さらに使えるピンは限られてます。
PWM信号が使えるピンは3,5,6ピンなので、ギリギリ。
念のため1ピンは残しておきたいので、回転方向制御に使えるピンは
2,4ピンのみ。

つまり、デジタル出力ピンのみでは2つのモーターは回転させれません。
なので、苦肉の策として今回はアナログ入力ピンをデジタル出力ピンとして使用しました。
pjnMode()でA0やA1を指定すれば対応するピンがデジタル出力ピンとして使用できるようになります。
参考:Arduinoチュートリアル 基礎編
しかしこれをすることでアナログ入力ピンが減ってしまってます。
センサが付けられる量が減るので少し残念。

端末側はほとんどBluetoothChatを改造しただけです。
通信部分をサービスとして実装しておけばUstで配信しながら操縦とかもできそうです。
操作タブレットはデザインをパクッてます。インスパイアさせて頂きました。
ちゃんとオリジナル機能として、上下限3つでは色が変わるようにしてます。
見た目は似てますがまるっと独自実装です。
やはりタンク系の操縦はこのタイプがしやすいようです。
結構『アプリ』のUIはデザインパターンが出来てきているようですが、
こういった『操縦UI』なデザインパターンはなさそうなので研究してみると楽しいです。

次回はこいつにセンサーとかを取り付けていこうかと思います。

0 件のコメント:

コメントを投稿