Android携帯でロボットを動かします。(bluetooth編)
1.インタフェース
1.1.Android側
Android〜Arduinoをbluetoothで繋ぐ。
市販のAndroid端末でも特殊な改造等必要なく使用できる、またインタフェース的にはシリアル通信となるため、前回に比べて大量の情報量を送受信することができる。
ここではHT-03A(Android1.6)、ADP1(Android1.6)で動作を確認する。
1.2.ロボット側
ロボットはタカラトミー製RoboQを使用する。
I/Fは赤外線で38KHzの信号。
2.接続
Arduinoにbluetoothインタフェースを追加する。
ここでは以下のbluetoothインタフェースボードを使用する。
・BT-MOD100R
・BT-MOD100R用 拡張アダプタ基板
(こちらを参考にさせてもらっています。)
以下のように接続する。
[BT-MOD100R]-[BT-MOD100R用 拡張アダプタ基板]--[Arduino]
拡張アダプタ基板側-Arduino
Vcc-Power5v
GND-GND
tx-Digital3
rx-Digital4
2.1.入力
bluetooth基盤から1byteを受信する。
取り出した1byteを以下のフォーマットで分解する。
bit:xxssffii
xx:未使用
ss:スピード
ff:動作
ii:バンド
2.2.出力
デジタルピン出力はHighの状態を38KHzで1/0を繰り替えし、Lowの状態は0固定とする。
スタートビット:1000usのHigh
ストップビット:500usのHigh+500usのLow
ビットが1:1000usのHigh+500usのLow
ビットが0:500usのHigh+500usのLow
これを組み合わせて以下のビット列を定期的に出力する。
今回は150ms程度の間隔にしておく。
2.2.1.移動する場合
以下のフォーマットで出力を行う。
スタートビット+スピード+動作+バンド+ストップビット
各項目のフォーマットは以下の通り。
・スピード
高速:11
中速:10
低速:01
・動作
前進:11
左旋回:10
右旋回:01
・バンド
A:00
B:01
C:10
D:11
2.2.2.停止する場合
送信しない。
3.UI
Android端末ではbluetoothを有効に設定する。
bluetoothの設定でScan for deviceして、EasyBTをペアリングしておく。
キーは0000。
アプリを起動すると周囲のbluetooth機器を検索するので、EasyBTを選択する。
接続に成功すると以下のボタンを表示し動作を指示する。
・前進
・左旋回
・右旋回
ボタンが押下されていない場合停止する。
・speed:低速-中速-高速を選択
・menu/IDselect:バンドを選択
4.実装例
4.1.画像
4.2.コード/スケッチ
Android側プロジェクト[20100127]
Arduino側プロジェクト[20100127]
Android側apkファイル[20100127]