工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

HC-05 Bluetoothモジュールをマスター/スレーブでペアリングする - ATコマンド完全ガイド

概要

このArduinoチュートリアルでは、2つのHC-05 Bluetoothモジュールをマスターとスレーブデバイスとして設定・ペアリングする方法を学びます。以前のチュートリアルでは、HC-05をデフォルト設定(スレーブ)で使用し、AndroidスマホとArduinoの通信を行いました。詳細については、以下のビデオまたは文章チュートリアルをご覧ください。

HC-05 Bluetoothモジュールの設定 - ATコマンド

両モジュールを設定するためにATコマンドモードに入る必要があります。手順は以下の通りです。

  1. 前回のチュートリアルと同様にBluetoothモジュールをArduinoに接続
  2. Bluetoothモジュールの「EN」ピンを5Vに接続
  3. Arduino側のTXとRXピンを入れ替えて接続(Arduino RX ↔ Bluetooth RX、Arduino TX ↔ Bluetooth TX、電圧分割抵抗経由)
  4. ENピン上の小さなボタンを押しながらモジュールに電源投入
  5. LEDが2秒ごとに点滅すればATコマンドモード突入成功
HC-05 Bluetoothモジュールをマスター/スレーブでペアリングする - ATコマンド完全ガイド

この状態で空のスケッチをArduinoにアップロード(アップロード時はRX/TX線を外す)。シリアルモニタを開き、「Both NL & CR」と「38400 baud」(デフォルト)を選択。これでコマンド送信準備完了です。

コマンド形式:AT+<パラメータ名>?(現在値取得)、AT+<パラメータ名>=<値>(設定)。

HC-05 Bluetoothモジュールをマスター/スレーブでペアリングする - ATコマンド完全ガイド

スレーブ設定

スレーブ側は主にアドレス確認のみでOKです。

  • AT → OK(テスト)
  • AT+UART? → ボーレート確認(デフォルト38400)
  • AT+ROLE? → +ROLE=0(スレーブモード確認)
  • AT+ADDR? → アドレス取得(例: 98d3:34:905d3f)
HC-05 Bluetoothモジュールをマスター/スレーブでペアリングする - ATコマンド完全ガイド

このアドレスをメモしておき、マスター設定時に使用します。名前、ボーレート、ペアリングパスワードなども変更可能ですが、今回はデフォルトのまま進めます。

マスター設定

もう一方のモジュールをマスターに設定します。

  1. AT+UART? でボーレート確認(38400で統一)
  2. AT+ROLE=1 でマスターモードに設定
  3. AT+CMODE=0 で接続モードを「固定アドレス」に設定
  4. AT+BIND=98d3,34,905d3f でスレーブのアドレスを指定(コロンをカンマに変換)
HC-05 Bluetoothモジュールをマスター/スレーブでペアリングする - ATコマンド完全ガイド

注意: アドレス指定時はコロン(:)をカンマ(,)に置き換えます。AT+CMODE=1とすると範囲内の任意デバイスに接続しますが、セキュリティ上固定アドレス(0)推奨です。完全なコマンドリストは「HC-05 AT Commands List」で検索可能です。

設定完了後、通常モード(データモード)で再接続・再起動すると、数秒でマスターがスレーブに接続され、両モジュールのLEDが2秒ごとに点滅して接続成功を示します。

2つのHC-05間通信 実践例

マスター側でポテンショメータを操作してスレーブ側のサーボモータを制御し、逆にスレーブ側のプッシュボタンでマスター側のLEDを制御する例です。

HC-05 Bluetoothモジュールをマスター/スレーブでペアリングする - ATコマンド完全ガイド

必要なコンポーネント

  • HC-05 Bluetoothモジュール ×2
  • Arduinoボード ×2
  • サーボモータ
  • ポテンショメータ
  • 220Ω抵抗 ×3
  • ブレッドボードとジャンパワイヤ

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); // Bluetoothデフォルトボーレート
}

void loop() {
  if (Serial.available() > 0) {
    state = Serial.read();
  }

  // LED制御(スレーブからのボタン信号)
  if (state == '1') {
    digitalWrite(ledPin, HIGH);
    state = 0;
  } else if (state == '0') {
    digitalWrite(ledPin, LOW);
    state = 0;
  }

  // ポテンショメータ読み取り→サーボ用値にマッピング→送信
  potValue = analogRead(A0);
  int potValueMapped = map(potValue, 0, 1023, 0, 255);
  Serial.write(potValueMapped);
  delay(10);
}

スレーブコード

/*
 * 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);
}

void loop() {
  if (Serial.available() > 0) {
    state = Serial.read();
  }

  // サーボ制御(マスターからのポテンショメータ値)
  myServo.write(state);
  delay(10);

  // ボタン読み取り→マスターへLED制御信号送信
  buttonState = digitalRead(button);
  if (buttonState == HIGH) {
    Serial.write('1'); // LED ON
  } else {
    Serial.write('0'); // LED OFF
  }
}

動作説明

  • 両方ともSerial.available()で着信チェック、Serial.read()でデータ取得
  • マスター: 受信『1』でLED ON、『0』でLED OFF。ポテンショメータ値(0-1023)を0-255にマッピングして送信
  • スレーブ: 受信値(0-255)を直接myServo.write()でサーボ角度指定。ボタン状態を『1』/『0』でマスターへ返信

以上でマスター/スレーブペアリングと通信例の解説は終了です。問題があればコメント欄でお気軽にご質問ください。

製造プロセス

  1. 湿度センサーの検証とキャリブレーションで精密測定を実現
  2. Bluetooth制御Arduinoカー完全自作ガイド – 3Dプリント&Arduino Nanoで作る2輪ロボット
  3. Arduino Nanoで作るBluetooth対応スマートコーヒーメーカー 〜温度グラフ表示と自動開始機能付き〜
  4. Bluetooth制御 ピックアンドプレースロボットキット:Arduino UNO + 2自由度アーム & スマートカーチャッシ
  5. Vixen LightsとArduinoでNeoPixelを制御する:ステップバイステップガイド
  6. Arduino と ADXL345 加速度センサーで姿勢トラッキング:ステップバイステップガイド
  7. ArduinoロボットカーをHC-05 Bluetooth、NRF24L01、HC-12でワイヤレス制御する
  8. 工具鋼を解き明かす:組成、製造、産業用途
  9. バンドソー vs 丸鋸:主要な違いを解説
  10. Bluetooth LE対XLE:資産追跡・監視の次世代
  11. Bluetoothと超音波の融合で実現する精密かつコスト効率の良いリアルタイム位置追跡