Bluetoothシリアルモジュール(1) HC-06

マイコンとBluetoothを使ったプログラムをやりたくて、余ったUSBドングルを使ったプログラムを今まだ現在進行形で格闘しています。

そもそもドングルを使う目的は安かったから。当時はシリアル通信で制御するBluetoothモジュールがそれなりに高価で、3500~4000円ほどしてました。(当然性能も良いと思う)

とても手が出ないので、USBドングルを使った通信をチャレンジしているわけですが、USBレイヤはなんとかOKでしたが、Bluetoothの通信レイヤで苦戦中なわけです。

ところが、格闘している間にモジュールがとても安くなってきたので、衝動買いしました。これで、Dualshock3と通信してみようと思ったわけです。

そしてまず購入したのが、HC-06ですが、衝動買いだったのでろくに調査しなかったわけで、こいつは子機にしかならないそうです。。Dualshock3も子機なので、通信できません。

ほんとは、こっちのHC-05を買わないとダメでした。。こちらは親機にも子機にもなれるタイプです。(こちらも購入しました)

せっかくなのでHC-06と戯れる

利用価値は十分にあるので、HC-05が届くまでは、こいつを制御してみることにします。以下が自分用の備忘録。

6ピンの小型基板です。モジュールがモジュール化されています。

cropped_20190418_223445-0

裏面。LEVELが3.3Vとあるので、GPIOからは3.3Vしか印加できないので、5VのGPIOの場合は分圧しないとだめです。電源は3.6~6Vとあるので、一般的なマイコンならOKでしょう。

cropped_20190418_223455-0

BEKENのBK3231とあります。

cropped_20190418_223651-0

とりあえず、ATコマンドで直接制御して見たいと思います。シリアル接続する相手はいつものこいつです。

cropped_20190418231449

GNDとTXやRX間の電圧を測定したら3.3Vでした。分圧なしに直接接続できそうです。

  • 接続方法

Arduino接続の HC-05 Bluetooth module をペアリングする方法

Bluetooth modules(HC-05、HC-06)のPairing設定

cp2012_hc-06

CP2012(USBシリアルモジュール) HC-06(Bluetoothモジュール)
5V VCC
RXD TXD
TXD RXD
3.3V EN
GND GND

ワイヤで接続した状態

cropped_20190419000209

USBシリアルモジュールをPCに接続すると、HC-06の赤色LEDが2secほどの間隔でゆっくり点滅します。この状態でATコマンドを受け付けてくれるみたいです。点滅していない状態だとATコマンドに反応しません。

cropped_20190419000312

TeraTerm起動して、USBシリアルモジュールのCOMポートに接続します。転送速度は9600にする。

teraterm_serial01

Transmitの改行コードをCR+LFにして、Local EchoをONにします。

teraterm_serial02

この状態で、ATと入力してEnterを押してOKが返ってこれば、ひとまずOK。LEDが点滅してない場合は、電源入れ直しなどして点滅状態で入力します。

AT
OK

このHC-06は子機なので、受け付けるコマンドはとても少ないです。

Arduino and HC-06 (ZS-040)

ファームウェアのバージョン

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スマホのアプリで試してみる。

スマホにインストールしてみたのは以下のアプリ。

Serial Bluetooth Terminal

android_serial_bluetooth

  1. HC-06はUSBシリアルモジュールに接続して、LEDが点滅している状態にする。
  2. まず、Andorid本体のBluetooth設定画面で、HC-06をリストから選択してペアリングする。
    画面の"hello"がリネームしたHC-06になる。

cropped_20190419-084519

  1. PINコードを入力する。ATコマンドでパスワードを変更している場合、その新しいパスワードを入力して、ペアリングを完了させる。

cropped_20190419-084504

cropped_20190419-084519-1

ペアリングが完了したら、アプリを起動してdevice一覧を確認する。ここにリストされているのは、Android端末でペアリングが完了したデバイスの一覧になる。

また、接続したHC-06のMACアドレスもここに表示されている。HC-06のMACアドレスはATコマンドで確認できないので助かる。(HC-05はATコマンドで確認できる)

cropped_20190419-084541

このデバイスを選択して接続を実施すると、TeraTermのシリアル通信画面で、以下のように表示される。モニタができてとても便利。

+CONNECTING<<AC:CF:85:D4:25:1B
CONNECTED

あとは、通信画面に移動して文字列を打ち込んで送信できるかを確認する。

cropped_20190419-084728

TeraTermのコンソール画面の内容

+CONNECTING<<AC:CF:85:D4:25:1B
CONNECTED
hello world !
hello world !
hello world !
hello world !
hello world !

次回は、HC-05の制御を実施する予定。

-->