2つのHC-05Bluetoothモジュールをマスターおよびスレーブとして構成およびペアリングする方法| ATコマンド
このArduinoチュートリアルでは、2つのHC-05 Bluetoothモジュールをマスターデバイスとスレーブデバイスとして構成およびペアリングする方法を学習します。次のビデオを見るか、以下のチュートリアルを読むことができます。
以前の2つのチュートリアルでは、HC-05 BluetoothモジュールをArduinoに接続し、AndroidスマートフォンとArduinoの間で通信を行う方法をすでに学びました。これらのチュートリアルでは、HC-05Bluetoothモジュールをデフォルト構成でスレーブデバイスとして使用しました。
このチュートリアルでは、両方のモジュールを構成する必要があります。そのためには、ATコマンドモードに切り替える必要があります。その方法は次のとおりです。最初に、前のチュートリアルで説明した回路図のように、BluetoothモジュールをArduinoに接続する必要があります。さらに行う必要があるのは、Bluetoothモジュールの「EN」ピンを5ボルトに接続し、ArduinoボードでTXピンとRXピンを切り替えることです。
したがって、ArduinoのRXピンは分圧器を介してBluetoothモジュールのRXピンに接続し、ArduinoのTXピンはBluetoothモジュールのTXピンに接続する必要があります。ここで、「EN」ピンの上にある小さなボタンを押したまま、モジュールに電力を供給する必要があります。これにより、コマンドモードに入ります。 LEDのBluetoothモジュールが2秒ごとに点滅している場合は、ATコマンドモードに正常に移行したことを意味します。
この後、空のスケッチをArduinoにアップロードする必要がありますが、アップロード中にRXラインとTXラインを切断することを忘れないでください。次に、シリアルモニターを実行する必要があります。そこで、「NLとCRの両方」、およびBluetoothモジュールのデフォルトのボーレートである「38400ボー」レートを選択します。これでコマンドを送信する準備が整いました。その形式は次のとおりです。
すべてのコマンドは「AT」で始まり、「+」記号、<パラメータ名>の順に続き、「?」で終わります。パラメータの現在の値を返す記号、またはそのパラメータに新しい値を入力する場合は「=」記号。
したがって、たとえば、テストコマンドである「AT」だけを入力すると、「OK」というメッセージが返されます。次に、「AT + UART?」と入力すると、デフォルトのボーレートである38400を示すマッサージを取り戻す必要があります。次に、「AT + ROLE?」と入力すると、 Bluetoothデバイスがスレーブモードになっていることを意味するマッサージ「+ROLE=0」が返されます。 「AT+ADDR?」と入力するとBluetoothモジュールのアドレスが返され、次のようになります: 98d3:34:905d3f。
次に、マスターデバイスを構成するときに必要になるため、このアドレスを書き留める必要があります。実際には、スレーブデバイスを構成してアドレスを取得するために必要なのはこれだけです。ただし、名前、ボーレート、ペアリングパスワードなど、さまざまなパラメーターを変更できますが、この例では変更しません。
では、次に進んで、他のBluetoothモジュールをマスターデバイスとして構成しましょう。まず、ボーレートをチェックして、スレーブデバイスと同じ38400であることを確認します。次に、「AT + ROLE =1」と入力して、Bluetoothモジュールをマスターデバイスとして設定します。この後、「AT + CMODE =0」を使用して接続モードを「固定アドレス」に設定し、「AT +BIND=」コマンドを使用して以前に書き留めたスレーブデバイスのアドレスを設定します。
ここで、アドレスを書き込むときは、コロンの代わりにコンマを使用する必要があることに注意してください。また、「AT + CMODE」コマンドで「0」ではなく「1」を入力した場合、前の手順をスキップできた可能性があることにも注意してください。これにより、マスターは送信範囲内の任意のデバイスに接続できますが、構成の安全性は低くなります。コマンドとパラメータの完全なリストは次のとおりです。HC-05ATコマンドリスト
それでも、Bluetoothモジュールの基本構成がマスターおよびスレーブデバイスとして機能するために必要なのはこれだけです。通常のデータモードで再接続し、モジュールに電源を再投入すると、数秒でマスターが接続します。奴隷に。両方のモジュールが2秒ごとに点滅を開始し、接続が成功したことを示します。
これで、このチュートリアルの実用的な例を作成する準備が整いました。これが回路図です。マスターでポテンショメータを使用して、スレーブでサーボモーターを制御します。逆に、スレーブでプッシュボタンを使用して、マスターでLEDを制御します。
このArduinoチュートリアルに必要なコンポーネントは、以下のいずれかのサイトから入手できます。
説明: したがって、最初に、プログラムに必要なピンといくつかの変数を定義する必要があります。セットアップセクションでは、マスターでLEDピンを出力として設定し、すぐにローに設定します。また、38400ボーレートでシリアル通信を開始します。同様に、スレーブでは、ボタンピンを入力として設定し、ピンが接続されるサーボを定義して、同じボーレートでシリアル通信を開始します。
ループセクションでは、両方のコードで、Serial.available()関数を使用して、読み取ることができるシリアルポートに使用可能なデータがあるかどうかを確認し、Serial.read()関数を使用して、データを読み取り、に格納します。 「状態」変数。そのため、ボタンの状態がハイのときにスレーブから送信される文字「1」をマスターが受信した場合、またはボタンが押された場合、LEDが点灯します。それ以外の場合、文字が「0」の場合、LEDはオフになります。
サーボモーターの制御については、まずマスターでポテンショメーターの値を読み取り、0〜255のサーボに適した範囲にマッピングします。この値はスレーブに送信され、スレーブはそれに応じてサーボモーターを回転させます。必要なのはこれだけです。これが例のデモンストレーションです。
マスターコード:
スレーブコード:
以上です。問題が発生した場合は、下のコメントセクションでお気軽にお問い合わせください。 HC-05 Bluetoothモジュールの構成–ATコマンド
2つのHC-05Bluetoothモジュール間の通信の例
Arduinoソースコード
/*
* How to configure and pair two HC-05 Bluetooth Modules
* by Dejan Nedelkovski, www.HowToMechatronics.com
*
* == MASTER CODE ==
*/
#define ledPin 9
int state = 0;
int potValue = 0;
void setup() {
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(38400); // Default communication rate of the Bluetooth module
}
void loop() {
if(Serial.available() > 0){ // Checks whether data is comming from the serial port
state = Serial.read(); // Reads the data from the serial port
}
// Controlling the LED
if (state == '1') {
digitalWrite(ledPin, HIGH); // LED ON
state = 0;
}
else if (state == '0') {
digitalWrite(ledPin, LOW); // LED ON
state = 0;
}
// Reading the potentiometer
potValue = analogRead(A0);
int potValueMapped = map(potValue, 0, 1023, 0, 255);
Serial.write(potValueMapped); // Sends potValue to servo motor
delay(10);
}
Code language: Arduino (arduino)/*
* How to configure and pair two HC-05 Bluetooth Modules
* by Dejan Nedelkovski, www.HowToMechatronics.com
*
* == SLAVE CODE ==
*/
#include <Servo.h>
#define button 8
Servo myServo;
int state = 20;
int buttonState = 0;
void setup() {
pinMode(button, INPUT);
myServo.attach(9);
Serial.begin(38400); // Default communication rate of the Bluetooth module
}
void loop() {
if(Serial.available() > 0){ // Checks whether data is comming from the serial port
state = Serial.read(); // Reads the data from the serial port
}
// Controlling the servo motor
myServo.write(state);
delay(10);
// Reading the button
buttonState = digitalRead(button);
if (buttonState == HIGH) {
Serial.write('1'); // Sends '1' to the master to turn on LED
}
else {
Serial.write('0');
}
}
Code language: Arduino (arduino)
製造プロセス
- 要約:BluetoothLEとXLEが資産の追跡と監視の未来である方法
- Bluetooth +超音波=RTLSの精度の向上とコストの削減
- 湿度センサーをチェックして校正する方法
- ArduinoBluetooth制御車の作り方
- ArduinoとBluetoothを備えたスマートコーヒーマシン
- Bluetooth制御のピックアンドプレースロボット
- VixenLightsとArduinoを使用してNeoPixelsを構成する方法
- ArduinoとADXL345加速度計で向きを追跡する方法
- HC-05 Bluetooth、NRF24L01、およびHC-12トランシーバモジュールを使用したArduinoロボットカーのワイヤレス制御
- 工具鋼とその製造方法を理解する
- 帯鋸と丸鋸の見分け方は?