マイコンとBluetoothを使ったプログラムをやりたくて、余ったUSBドングルを使ったプログラムを今まだ現在進行形で格闘しています。
そもそもドングルを使う目的は安かったから。当時はシリアル通信で制御するBluetoothモジュールがそれなりに高価で、3500~4000円ほどしてました。(当然性能も良いと思う)
とても手が出ないので、USBドングルを使った通信をチャレンジしているわけですが、USBレイヤはなんとかOKでしたが、Bluetoothの通信レイヤで苦戦中なわけです。
ところが、格闘している間にモジュールがとても安くなってきたので、衝動買いしました。これで、Dualshock3と通信してみようと思ったわけです。
そしてまず購入したのが、HC-06ですが、衝動買いだったのでろくに調査しなかったわけで、こいつは子機にしかならないそうです。。Dualshock3も子機なので、通信できません。
ほんとは、こっちのHC-05を買わないとダメでした。。こちらは親機にも子機にもなれるタイプです。(こちらも購入しました)
せっかくなのでHC-06と戯れる
利用価値は十分にあるので、HC-05が届くまでは、こいつを制御してみることにします。以下が自分用の備忘録。
6ピンの小型基板です。モジュールがモジュール化されています。
裏面。LEVELが3.3Vとあるので、GPIOからは3.3Vしか印加できないので、5VのGPIOの場合は分圧しないとだめです。電源は3.6~6Vとあるので、一般的なマイコンならOKでしょう。
BEKENのBK3231とあります。
とりあえず、ATコマンドで直接制御して見たいと思います。シリアル接続する相手はいつものこいつです。
GNDとTXやRX間の電圧を測定したら3.3Vでした。分圧なしに直接接続できそうです。
- 接続方法
Arduino接続の HC-05 Bluetooth module をペアリングする方法
Bluetooth modules(HC-05、HC-06)のPairing設定
CP2012(USBシリアルモジュール) | HC-06(Bluetoothモジュール) |
5V | VCC |
RXD | TXD |
TXD | RXD |
3.3V | EN |
GND | GND |
ワイヤで接続した状態
USBシリアルモジュールをPCに接続すると、HC-06の赤色LEDが2secほどの間隔でゆっくり点滅します。この状態でATコマンドを受け付けてくれるみたいです。点滅していない状態だとATコマンドに反応しません。
TeraTerm起動して、USBシリアルモジュールのCOMポートに接続します。転送速度は9600にする。
Transmitの改行コードをCR+LFにして、Local EchoをONにします。
この状態で、AT
と入力してEnterを押してOK
が返ってこれば、ひとまずOK。LEDが点滅してない場合は、電源入れ直しなどして点滅状態で入力します。
AT
OK
このHC-06は子機なので、受け付けるコマンドはとても少ないです。
ファームウェアのバージョン
AT+VERSION
+VERSION=+JDY-30-V2.7, Bluetooth V3.0
ロールの確認(HC-06は子機のみなので、常にゼロが返る)
AT+ROLE?
+ROLE=0
OK
PINコードの確認。デフォルトは1234
AT+PIN
+PIN=1234
ボーレートの確認
AT+BAUD
+BAUD=4
VALUE | BAUD |
1 | 1200 |
2 | 2400 |
3 | 4800 |
4 | 9600 |
5 | 19200 |
6 | 38400 |
7 | 57600 |
8 | 115200 |
9 | 230400 |
A | 460800 |
B | 921600 |
C | 1382400 |
名前、ボーレート、PINコードの変更はできそうです。
名前をhelloに変更
AT+NAMEhello
+NAME=hello
OK
PINコードは9999
AT+PIN9999
+PIN=9999
OK
ボーレートを変更
AT+BAUD4
+BAUD=4
OK
Androidスマホから接続してみる
親機のHC-05と試してみたいところだが、まだ手元に届いてない。とりあえず通信できるのかをAndroidスマホのアプリで試してみる。
スマホにインストールしてみたのは以下のアプリ。
- HC-06はUSBシリアルモジュールに接続して、LEDが点滅している状態にする。
- まず、Andorid本体のBluetooth設定画面で、HC-06をリストから選択してペアリングする。
画面の"hello"がリネームしたHC-06になる。
- PINコードを入力する。ATコマンドでパスワードを変更している場合、その新しいパスワードを入力して、ペアリングを完了させる。
ペアリングが完了したら、アプリを起動してdevice一覧を確認する。ここにリストされているのは、Android端末でペアリングが完了したデバイスの一覧になる。
また、接続したHC-06のMACアドレスもここに表示されている。HC-06のMACアドレスはATコマンドで確認できないので助かる。(HC-05はATコマンドで確認できる)
このデバイスを選択して接続を実施すると、TeraTermのシリアル通信画面で、以下のように表示される。モニタができてとても便利。
+CONNECTING<<AC:CF:85:D4:25:1B
CONNECTED
あとは、通信画面に移動して文字列を打ち込んで送信できるかを確認する。
TeraTermのコンソール画面の内容
+CONNECTING<<AC:CF:85:D4:25:1B
CONNECTED
hello world !
hello world !
hello world !
hello world !
hello world !
次回は、HC-05の制御を実施する予定。