月刊I/O 2022年5月号『Raspberry Piで作る電子工作』に記事を掲載して頂きました!

【Arduino】Bluetoothモジュール(HC-05/HC-06)、ATモード設定の際の接続方法!

先日、Bluetoothモジュール(HC-05/HC-06)の使い方についてご紹介しました。
通常のシリアルでのやり取り(TXとRX)で接続できるため、Bluetoothの事をあまり意識しなくてもArduinoなどと接続し簡単に無線通信を行うことが出来るモジュールとなります。

技適に関しては取得されていないモジュールとなりその使用には少し注意も必要ですが、電子工作用途で非常に便利に使えるBluetoothモジュールとなります。

Arduinoを使いBluetooth通信をやってみる!HC-05/HC-06 Bluetoothモジュールの使い方!

自作ロボくんの無線化をいろいろと試していますが、Bluetoothモジュール(HC-05やHC-06など)では通常のシリアルでの接続でArduinoとデータのやり取りが出来るため、製作物への組み込みなど比較的簡単に行うことが出来ます。

Arduinoで動かす4足歩行ロボット製作ノート!Arduino学習に便利なロボくんなので使って下さい!【STLデータ公開】

そしてこれらBluetoothモジュールでは、ATコマンドによる設定変更を行うことが出来ます。
デバイス名や通信速度(ボーレート)・Bluetoothモジュール同士でのやり取りでは親機(マスター)/子機(スレーブ)などの設定ですね。

BluetoothモジュールをArduinoやUSB-シリアル変換モジュールに接続してATコマンドを入力する事によりデバイスの各種設定を行うわけですが、接続方法もいろいろとあります。

上記前回の記事では、ArduinoとBluetoothモジュールを接続し簡単なスケッチを用意しATコマンドモードによるデバイスの各種設定を行いました。
そして接続方法に関して前回書ききれなかった他の接続方法も今回少しご紹介したいと思います。
上記記事の追記的な内容となります。

Bluetoothモジュール(HC-05/HC-06) ATコマンドモードの接続方法!

BluetoothモジュールHC-05やHC-06のATコマンドモードでの設定変更に前回このようにArduinoと接続して行いました。

そしてシリアルモニタに入力されたATコマンドをモジュール側に送り、モジュール側のリターンをシリアルモニタに表示させるこのような簡単なスケッチを作り設定変更を行いました。

ここまでは前回の内容です。
詳しくはこちらの記事をご覧下さい!

Arduinoを使いBluetooth通信をやってみる!HC-05/HC-06 Bluetoothモジュールの使い方!

前回接続方法に関して他の方法も少し触れたのですが、書ききれなかったので追記で書いていきます。

Arduinoを使った他の接続方法

上記接続方法では、Bluetoothモジュールの設定を変更する際に毎回上記のようなスケッチを用意する必要があります。
簡単なスケッチですが、面倒になる事もあるかと思います。

Arduinoを使いスケッチを必要としないシンプルな他の接続方法も見ておきます。
Arduino(こちらではUnoを使います)ボードに搭載されているUSB-シリアル変換器のみを使った方法となります。

お分かりになる方なら、その接続方法ね!・・・なんて思われるかと思います。
実はこの接続方法で試した際に私は非常にハマってしまい、これは備忘録的に残しておこうと思います。

まずは接続です。
BluetoothモジュールとArduino Unoとはこのように接続します。

前回行った上記接続方法では、シリアルモニタを使うためBluetoothモジュールとの接続はソフトウェアシリアルを使いました。

ソフトウェアシリアルでもハードウェアシリアルを使った接続でも通常のシリアルでのやり取りでは、TX-RX/RX-TXのように対になるように接続します。

しかし今回の接続では、TX-TX/RX-RXというように接続して行います。

この接続では、Arduino Unoに搭載されているUSB-シリアル変換器(ATmega16U2)のみを使ってATコマンドのやり取りを行おうとしています。
次でご紹介するUSB-シリアル変換モジュールを使った接続と内容は同じです。

ArduinoHC-05(HC-06)
5VVCC
GNDGND
RXRXD
TXTXD

Arduino UnoにはPCと接続してスケッチの書き込み等行うためのUSB-シリアル変換器にATmega16U2というマイコンチップが搭載されています。
接続されているイメージはこんな感じですね。

そして今回の接続ではこのようにBluetoothモジュールと接続されています。
Unoのシリアル変換器とはちゃんとTX-RX、RX-TXというように接続されているということですね!
理屈が分かってしまえは非常に簡単なことです。

今回ArduinoのATmega328Pは使わず、USB-シリアル変換器(ATmega16U2)とBluetoothモジュールとの接続でのやり取りとなります。

UART通信に関してはこちらの記事も参考にして下さい。

【Arduino入門編㉖】UARTシリアル通信の基礎知識!Arduino間でのデータのやり取りなどをやってみる!

上記イメージ図を見ると分かりますが、BluetoothモジュールのTXとRXはUSB-シリアル変換器とはRX・TXと接続されています。
このイメージが掴めていなかったので、私の場合Arduino Uno側のD1(RX)/D2(TX)にBluetoothモジュールのTX/RXと接続していたので上手くいかずかなりハマってしまいました。

上記接続が出来たらシリアルモニタを立ち上げます。

MEMO
Arduinoには空スケッチを書き込んでおくのがいいと思います。
例えば、Serial.printなどシリアルでのやり取りを行うスケッチが書き込まれているとうまく接続が出来ません!
MEMO
HC-05ではボード上のボタンを押しながら電源を投入するとATモードに入ります。(HC-06では常にATモードで立ち上がります)

ボーレートを設定すれば、あとはATコマンドを入力しBluetoothモジュールの設定変更を行っていきます。
HC-05ではATコマンドモードでのやり取りは常に38400bpsとなっています。
シリアルモニタを立ち上げ、[CRおよびLF][38400bps]に設定しておきます。

[AT]と入力し[OK]とリターンが返ってくれば正常に接続が出来ています。
[AT]

OK

あとは通常のATコマンドでのやり取りとなります。
ATコマンドによる設定内容変更に関しては前回の記事を参考にして下さい。

ちなみにHC-06ではデフォルトのボーレートは9600bpsとなっています。
[改行なし][9600bps]に設定しておきます。

MEMO
HC-06の場合、ボーレートを変更するとシリアルモニタ側もその数値に変更し再接続する必要があります。(HC-05ではATコマンドモードでのやり取りは38400bps固定です)

USB-シリアル変換モジュールを使う!

その他の接続方法として、USB-シリアル(USB-TTL)変換モジュールを使う方法があります。
手元にあれば、Arduinoボードを使うことなく一番簡単な接続方法だと思います。

接続は簡単です!
USB-シリアル変換モジュールのTXO/RXIをBluetoothモジュールのRXD/TXDに接続するだけです。
あとは上記手順と同様に、Arduino IDEのシリアルモニタからコマンドを入力するだけです。

USB-シリアル変換モジュールHC-05(HC-06)
VCCVCC
GNDGND
TXORXD
RXITXD

最後に!

USB-シリアル変換モジュールが手元にあれば直接接続するだけでATコマンドによるBluetoothモジュールの設定変更が出来るので一番手っ取り早い方法ですね!

今回Arduinoを使った接続で上記のような方法もご紹介しましたが、Bluetoothモジュール以外にもこれまで接続が上手くいかなかった事も解決したので備忘録的に書いてみました。

例えば、Arduino Pro Miniのスケッチの書き込みの際に他のArduinoボードを使った接続方法です。
接続の考え方は今回と同じです。
これまで少し曖昧に理解していたことなので、理屈が分かりスッキリしました。

Arduino UnoやNanoを使いArduino Pro Miniにスケッチを書き込む方法!

ArduinoボードのUSB-シリアル変換器部分のみを使った接続方法は、何かと便利で使える場面も多いと思います。
参考になればと思います!

コメントを残す