Arduino UNOでBluetooth部品(HC-06)およびスマとペアリングしてうまく接続する方法には、キーポイントがあります。忘れてもいいように自分の記録としてまとめてみました。
なお、やっている間にわかったことですが、HC-06は子機(スレーブ)には使用できますが、親機(マスター)には使用できません。親機に使用する場合には、子機/親機兼用(マスター/スレーブ)のHC-05を使用することになる。
HC-06(表面と裏面)
接続キーポイント
・Arduino UNOで接続する端子は、D0(RX)とD1(TX)は回避する
→この端子はArduino UNOにスケッチを書き込む端子と共有している
スケッチ書込み時に外せばよい。面倒なのでD2、D3を指定する
・HC-06の供給電源(Vcc)は3.6V〜5Vで問題ない
→従って、3.3Vでは電圧不足となり、5Vに接続する
・HC-06のRXD,TXDは3.3V系の入出力となる
→3.3V/5Vのレベルシフト回路が必要ですが、簡易的な対象で十分
出力(TXD)はそのまま接続で、入力系(RXD)は抵抗分割する
Arduinoの出力電圧を1,8KΩ+3.3KΩで3.3Vレベルにして入力する
接続の確認方法
1.まず、最初にArduino UNOでBluetooth部品(HC-06)の接続確認する。
・Bluetooth部品(HC-06)はペアリングさせない状態(LED点滅)で確認する。
・下記のテストスケッチを書込んで確認する。
//----------------- Test Program 1 ----------------------------
// HC-06 の TXDは、Arduino の Pin2(D2)に接続する
// HC-06 の RXDは、Arduino の Pin3(D3)に抵抗分割で接続する
// HC-05 の TX は、Arduino の Pin10(D10)に接続する
// HC-05 の RX は、Arduino の Pin(D11)に抵抗分割で接続する
//-------------------------------------------------------------
#include
SoftwareSerial BTserial(2, 3); // HC-06 : RX | TX
//SoftwareSerial BTserial(10, 11); // HC-05 : RX | TX
void setup()
{
// PCとArduinoのシリアル速度は、9600bps
Serial.begin(9600);
Serial.println("AT コマンド入力 :");
// HC-06 のデフォルトでのシリアル速度は、9600bps
BTserial.begin(9600);
}
void loop()
{
// HC-06からATコマンドを読み、Arduino IDEのシリアルモニタに通信する
if (BTserial.available())
{
Serial.write(BTserial.read());
}
// Arduino IDEのシリアルモニタから送信データを読み、HC-06に通信する
if (Serial.available())
{
BTserial.write(Serial.read());
}
}
//--------------------------- End -----------------------------------
・起動すると、シリアルモニタに「AT コマンド入力 :」が表示される
・「AT」を送信すると、「OK」と表示されれば接続はOKです
・Bluetooth部品(HC-06)に対するATコマンドによる設定や確認はこの状態で行なう
・HC-06のATコマンドは子機専用なので、HC-05よりもかなり少ない
原文ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
HC-06 AT commands are limited, all I could find are given here.
AT : check the connection
AT+NAME: Change name. No space between name and command.
AT+BAUD: change baud rate, x is baud rate code, no space between command and code.
AT+PIN: change pin, xxxx is the pin, again, no space.
AT+VERSION
change baud rate, type AT+BAUDX, where X=1 to 9.
1 set to 1200bps
2 set to 2400bps
3 set to 4800bps
4 set to 9600bps (Default)
5 set to 19200bps
6 set to 38400bps
7 set to 57600bps
8 set to 115200bps
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
2.Bluetooth部品(HC-06)とスマホとの接続確認
・まずスマホのBluetooth Terminalをインストールする
→私は、Serial Bluetooth terminalというアプリが使い勝手がよかった。
・ペアリングすべきBluetooth機器を検索する。ここでは「HC-06」と表示される
・同じ機器がある場合は、1.の状態で「AT+NAME」コマンドを使って変更する
(ex. AT+NAMEHC-06_1)
・ペアリング機器を指定して、デフォルトのPINである「1234」を入力する
・PINを変更したい場合は、1.の状態で「AT+PIN」コマンドを使って変更する
(ex. AT+PIN4321)
・シリアル通信を変更する場合、1.の状態で「AT+BAND」コマンドを使って変更する
(ex. AT+BAND6)
・ペアリングが完了すると、Bluetooth部品(HC-06)のLEDが点滅から点灯に変わる
・この状態で、下記のテストスケッチをArduinoに書込む。
//----------------- Test Program 2 ----------------------------
// HC-06を繋いだArduinoとスマホリアルモニタを使った通信用スケッチ
// ボーレートは 9600
// NL+CR をコマンドに追加しない
//-------------------------------------------------------------
#include
SoftwareSerial BTserial(2, 3); // RX | TX
void setup()
{
BTserial(9600);
}
char a;
void loop()
{
if (BTserial.available()) {
a = (BTserial.read());
if (a == '1') {
BTserial.println("HELLO <Bluetooth> WORLD!");
}
if (a == '2') {
BTserial.println("2 is comming.");
}
}
}
//--------------------------------- Eed -------------------------------
スマホのBluetooth Terminalアプリを起動して、ペアリング接続したの後に「1」を送信すると、「HELLO<Bluetooth>WORLD」と返信され、「2」と送信すると「2 is comming.」と返信されます。これでBluetoothの接続確認が出来たことになります。