HC-05 Bluetoothモジュールは、Arduinoプロジェクトで頼りになるBluetoothモジュールです。ArduinoIDEに接続してコーディングするのは簡単です。ほとんどのプロジェクトでは、通常、HC05をArduinoに接続し、それを使用して携帯電話などの別のスマートデバイスとワイヤレスで通信します。これは非常に簡単で、Bluetooth制御ロボット、Bluetooth音声制御、Bluetoothホームオートメーションなど、多くの興味深いプロジェクトを構築しました。しかし、2つのHC-05を接続する必要があったことはありますか?HC05をスマートフォンに接続するのはそれほど簡単ではありません。いくつかの追加の手順が必要です。このチュートリアルでは、このプロセスについて説明します。さっそく飛び込もう!
必要な材料
- 2x Arduino(どのモデルでもかまいません。ArduinoUnoR3とArduino Nanoを使用しています)
- 2x HC05Bluetoothモジュール
- ブレッドボード
- ジャンパー線
- 2倍1kΩの抵抗
- 2倍2.2kΩの抵抗
回路図
これが基本的な回路図です。これらの回路のうち2つを配線します。1つはマスター用、もう1つはスレーブ用です。接続については、ここで行っているのはHC05をArduinoに接続することだけです。HC05のレシーバー(Rx)ピンは0V〜3.3Vの範囲で動作し、Arduinoは0V〜5Vの範囲で動作します。そこで、抵抗(R1とR2)を使用して分圧器を作成し、HC05モジュールに損傷を与えないようにArduinoの5V出力を3.3Vに下げます。
R1に1kΩ、R2に2.2KΩを使用していますが、R2がR1の値の約2倍(R2≈2R1)である限り、任意の抵抗値を使用できます。同様に、マスターとスレーブの両方に対して回路を繰り返します。ArduinoマスターBluetooth回路とArduinoスレーブBluetooth 回路を以下に示します。
HC05モジュールの初期構成
これは、2つのHC05モジュールを一緒に接続するために必要な追加の手順です。HC05 Bluetoothモジュール内のいくつかの設定を変更する必要があります。これを行うには、HC05モジュールのATコマンドモードに入り、ArduinoIDEのシリアルモニターを介してコマンドを送信する必要があります。これを行うには、シリアルモニターを介してHC05にコマンドを送信するArduinoコードを記述する必要があります。
HC05モジュールを設定するためのコードは次のようにコードの説明は、このページの下で見つけることができ
このコードにSoftwareSerialライブラリを追加します。
#include < SoftwareSerial.h>
送信(Tx)および受信(Rx)ピン番号を定義します。Txにはピン2を使用し、Rxにはピン3を使用しています。
#define tx 2 #define rx 3
Bluetooth接続に名前を付け(ここではconfigBtを使用しています)、SoftwareSerialライブラリにどのピンがTxで、どのピンがRxであるかを伝えます。構文はbluetoothName(Rx、Tx);です。
SoftwareSerial configBt(rx、tx); // RX、TX
Bluetoothモジュールを構成するには、Arduinoが38400ボーのボーレートでコマンドを送信する必要があります。同様に、Bluetooth接続のボーレートも38400ボーに設定します。送信(Tx)を出力ピンに設定し、受信(Rx)を入力ピンに設定します
void setup(){ Serial.begin(38400); configBt.begin(38400); pinMode(tx、OUTPUT); pinMode(rx、INPUT); }
foreverループ内には、コードのメインチャンクがあります。ここでの考え方は、シリアルモニターのテキストボックスに入力されたものをすべて、ArduinoのTxピンを介してHC05に送信することです。次に、HC05によって出力されたものをシリアルモニターに表示します。
void loop(){if(configBt.available())// HC05が何かを送信している場合…{ Serial.print(configBt.readString()); //シリアルモニターで出力} if(Serial.available())//シリアルモニターが何かを出力している場合…{configBt.write(Serial.read()); // ArduinoのTxピンに書き込みます}}
最初にマスターHC05モジュールに接続されたArduinoにこのコードをアップロードします。コードをアップロードした後、Arduino電源ケーブルを抜きます。ボタンを押したままにしますHC05上のボタンを。次に、HC05のボタンを押したまま、Arduino電源ケーブルを接続します。了解しました。HC05のボタンを離すことができます。これがHC05のATモードに入る方法です。これが正しく行われたかどうかを確認するには、HC05の赤いライトが約1秒ごとに点滅していることを確認します(ゆっくり点滅します!)。通常、HC05がBluetoothデバイスに接続される前は、非常に高い頻度で赤いライトが点滅します(高速点滅!)。
次に、シリアルモニターを開きます(シリアルモニターボタンはArduino IDEの右上にあります)。シリアルモニターウィンドウの右下隅で、まだ行っていない場合は、行末設定を「NLとCLの両方」に設定し、ボーレートを38400に設定していることを確認してください。ここで、シリアルモニターにATと入力します。すべてがうまくいけば、シリアルモニターウィンドウに表示されたHC05から「OK」が表示されます。おめでとう!これで、HC05モジュールのATコマンドモードに正常にログインできました。
次に、以下の表に次のコマンドを入力して、 マスターHC05モジュール を構成し ます。
コマンド(シリアルモニターにこれを入力し、Enterキーを押します) |
RESPONSE(HC05からの返信、シリアルモニターに表示) |
機能(このコマンドは何をしますか?) |
AT |
OK |
テスト |
AT + CMODE? |
OK |
CMODEまたは接続モードを確認してください ----------------------------- CMODE:0はスレーブです 1はマスターです |
AT + CMODE = 1 |
OK |
マスターHC05を構成しているので、CMODEを1に設定します。 |
AT + ADDR? |
+ ADDR:FCA8:9A:58D5 OK *これは私のマスターHC05のアドレスです。あなたの住所は異なります! |
HC05のアドレスを返します。後で必要になるので、これを書き留めてください。 |
次に、コンピュータを他のHC05、スレーブに接続します。
コマンド(シリアルモニターにこれを入力し、Enterキーを押します) |
RESPONSE(HC05からの返信、シリアルモニターに表示) |
機能(このコマンドは何をしますか?) |
AT |
OK |
テスト |
AT + CMODE? |
OK |
CMODEまたは接続モードを確認してください ----------------------------- CMODE:0はスレーブです 1はマスターです |
AT + CMODE = 0 |
OK |
スレーブHC05を構成しているので、CMODEを0に設定します。 |
AT + BIND = FCA8,9A、58D5 *マスターHC05アドレスの「:」を「、」に置き換えます *ここでは、前の表から書き留めたマスターHC05のアドレスを使用しています。マスターHC05のアドレスを使用する必要があります! |
OK |
このスレーブHC05が起動時に自動的に接続するマスターHC05のアドレスを設定する |
AT + BIND? |
+バインド:FCA8:9A:58D5 OK *これは私のマスターHC05のアドレスです。あなたの住所は異なります! |
スレーブのバインディングアドレスを確認してください。マスターHC05のアドレスと一致する場合は、問題ありません。 |
ArduinoからArduinoへのBluetooth通信テスト
まず、マスターとスレーブの両方のHC05モジュールに電力を供給します。電源を入れて数秒が経過したら、HC05モジュールの赤いライトを確認します。
赤信号の点滅速度 |
その意味 |
非常に高い頻度で点滅します(高速点滅!) |
良くない!これは、HC05モジュールが相互に接続されていないことを意味します。トラブルシューティングの時間です! |
低頻度で点滅(ゆっくり点滅!) |
いいね!あなたはそれをしました!ただし、この設定が機能することを確認するために、もう1つチェックを行う必要があります。進め! |
あなたの赤いライトが(遅い!点滅)低周波数で点滅したら、あなたは両方のあなたのHC05sが互いに接続されていることを確認することができ、しかし、データはマスタとスレーブの間で前後に送信され、可能な場合、我々はテストしていません。結局のところ、それがここでの主な目的です。
以下のコードをArduinoの1つにアップロードします。これは送信機(Tx)をテストするためのコードです。ここでも、送信機と受信機の両方の完全なコードはこのページの下部にあります。
前のコードに続いて、SoftwareSerialライブラリをこのコードに追加し、送信(Tx)および受信(Rx)ピン番号を定義します。次に、Bluetooth接続に名前を付け、TxおよびRxのピン番号をライブラリに渡します。
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt(rx、tx); // RX、TX
セットアップ機能では、ArduinoシリアルモニターとBluetoothのボーレートを再度設定しています。前のコードと比較して、ここで違いがわかりますか?9600ボーのボーレートを使用しています。これは、他のBluetoothデバイスと通信するときのHC05Bluetoothモジュールのデフォルトのプリセット通信ボーレートです。したがって、38400ボーはATコマンドを使用してHC05を構成するためのものであり、9600ボーはHC05モジュールのデフォルトのボーレートであることに注意してください。最後に、前と同じように、Txピンを出力として構成し、Rxピンを入力として構成します。
void setup(){ Serial.begin(9600); bt.begin(9600); pinMode(tx、OUTPUT); pinMode(rx、INPUT); }
foreverループ内では、HC05を介してランダムな値「123」を送信するだけです。
void loop(){bt.write(123); }
このコードを他のArduinoにアップロードします。これはテスト受信(Rx)するコードです。
前のコードとまったく同じように、SoftwareSerialライブラリを構成します。
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt(rx、tx); // RX、TX
セットアップ機能のコードは、送信(Tx)をテストするコードとまったく同じです。
void setup(){ Serial.begin(9600); bt.begin(9600); pinMode(tx、OUTPUT); pinMode(rx、INPUT); }
永遠のループでは、送信側のArduinoから送信しているものを受信する必要があります。受信バッファがHC05からデータを受信した場合は、受信したものをシリアルモニターに表示します。
void loop(){if(bt.available()> 0){シリアル.println(bt.read()); }}
それぞれのコードを各Arduinoにアップロードしたら、受信側のArduinoのシリアルモニターを開きます。シリアルモニターで、ボーレートを9600として、行末を改行として選択していることを確認してください。すべてが正常に機能している場合は、123が表示されているはずです。
注:送信Arduinoと受信Arduinoの両方を同じラップトップに接続している場合は、[ツール]> [ポート]で正しいCOMポートを選択していることを確認してください。受信側のArduinoのCOMポートに接続する必要があります。
すべてがうまくいったら、HC05モジュールを交換して、通信が両方向で行われることを確認します。これで完了です。