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]