ロビ2のBluetooth調査
2018年11月29日
12月1日改訂
12月7日改訂
1月23日改訂


 ロビ2 73号でBluetooth(ブルーツゥース)ボードが配布されました。
 ロビ2のBluetoothはQ-boから送信されるデータを受信するのに使われます。



 この基板はロビ2の左胴体の前方(内側)に取り付けられ音声認識ボードなどのシリアルバス(I2C)とは別のコネクターでマイコンボードに接続されます。


Bluetoothの値の取得

 マイコンのコネクターと専用ケーブルで直接Bluetoothに接続しました。



 音声認識ボードなどロビのデバイスの値はマイコンボードのメモリーの値を読んで取得しています。
 Bluetoothも同様の方法で取得できると思われます。
 前回のRTCではこの方法で取得できています。  まずRTCと同じく0x0e00〜0x0effの256バイトのメモリダンプを採取してみました。

 まずQ-boにドットコードを読ませてその後メモリダンプを取得するプログラムを動かします。
 この時確実にデータが送られるようにボードゲームのサイコロのドットコードを読ませました。
 この時Bluetoothから送信されるデータは0x042Fである事はQ-bo ScanというAndroidアプリで確認しています。
 RTCの値は正しく書き込まれているようですがBluetoothのコードらしきデータは書き込まれていませんでした。

 バッテリィーの電圧などマイコンボードの状態を取得している0x0000〜0x00ffのアドレスを取得してみました。



 0x00a8と0x00a9の値がそれっぽい値になっています。(前後半の8ビットが逆転していますが)

 別のドットコードを読ませてみました。
 このドットコードはボードゲームのゴール(赤)でQboが「やったゴールだな」と言うドットコードです。
 Bluetoothには0x03d5というデータが送信されます。



 またその前の0x00a6の値も変化しています。
 おそらくこれはスキャン回数(ドットコードを読むたび+1される)だと思われます。

 次のアドレスを読めばBluetoothの値が取得できます。
  0x00a6    スキャン回数(下8ビット)
  0x00a7    スキャン回数(上8ビット)
  0x00a8    Bluetoothデータ(上8ビット)
  0x00a9    Bluetoothデータ(下8ビット)
       Bluetoothデータは上下8ビットが逆転しているので2バイトで読み込む場合は注意する必要があります。


Bluetoothテストプログラム

 メモリーダンプでBluetoothの値を取得する方法は分かりにくいので取得した値に対応する音声をロビ2で再生するテストプログラムを作成しました。
 Q-boのココロに入っているロビ2のテストプログラム(STARTUP.BIN)と置き換えて動かします。
 またvoiceフォルダーには次のロビ1の音声ファイルを入れておいてください。
  023.wav,068.wav,071.wav,193.wav,439.wav,513.wav

 ロビが反応するドットコードはボードゲームのサイコロとスタートとゴール(3種類)のみでその他は「わかんないよ」と言います。
 テストプログラムは以下のURLよりダウンロードできます。
 bttest.zip

 実際に動かした動画です。

   


ロビプログラムのBluetooth対応

 Q-boのBluetoothでロビ2を動かせるようにしました。
 ロビ1のSTARTUP.BINは再販版、第三版、ロビのココロ2およびロビのココロ2DXで提供されているSTARTUP.BINというプログラムを変更する事で行えます。
 これを行うにはQ-boとロビ1の認識語に対応するドットコード表が必要です。
 またロビ2は73号でで提供されるBluetoothボードが接続されている必要があります。
 認識語のドットコード表がない場合は変更プログラムのBluetoothの開始コードを600に変更する事でロビ2で提供されているロビイングリッシュブック1のLesson1のドットコードから認識語番号に対応させる事ができます。



 上記の画面で変更した場合ロビイングリッシュブック1のLesson4のtell a jokeのドットコードでロビ2を10歩、歩かせる事ができます。

 この変更プログラムは以下のURLよりダウンロードできます。
 詳しい操作方法は入っているReadMe.txtをお読みください。。
 STARTUPBIN.zip

 実際に動かした動画です。

   


Bluetoothによるロビ2の操作

Q-boのBluetoothでロビ2をサーボを動かすプログラムを作成しました。
 ロビ2で提供されているロビイングリッシュブック1の最終ページの数字のドットコードでロビ2を動かす事ができます。
 数字は次の動作に対応しています。
 1:正面を向く 2:右を向く 3:左を向く 4:右手を上げる 5:右手を下げる 6:左手を上げる 7:左手を下げる 8:口を点ける 9:口を消す 10:目を赤く 11:目を緑 12:目を青く 13:目を黒く
 なお電源を入れるとロビ2が準備OKというようにするにはSDカードのvoiceフォルダーに068.wavが必要です。(なくてもプログラムは動きます)
 この変更プログラムは以下のURLよりダウンロードできます。
 btctrl.zip

 実際に動かした動画です。

   

 動画のドットコードは標準のドットコードを拡張した部分を使っていますのでドットコードの印刷と対応する音声が必要です。

 なおデアゴスティーニから提供されたプログラム以外のものを動かすとマイコンボードやサーボモーターに影響を及ぼす可能性があるのであくまでも自己責任という事でお願いします。

   目次に戻る