Соединение 2 Arduino через Bluetooth с помощью HC-05 и HC-06: простой метод CMODE

Оригинал статьи: Martyn Currey

Подключение HC-05 к HC-06: Метод 1

С помощью команды CMODE можно легко соединить HC-05 и HC-06 (или два HC-05). Когда HC-05 настроен на сопряжение с любым адресом (AT+CMODE=1), он должен автоматически подключиться к ведомому модулю. Привязка и прочее не требуется.

Я использую модули zs-040 с прошивкой 2.0-20100601, и другие модули с той же прошивкой будут работать аналогично. Если у вас возникнут проблемы, проверьте документацию к вашему модулю.

Конфигурация

Я использую две разные версии Arduino IDE: 1.0.5 и 1.6.3. Это даёт мне два отдельных монитора порта. Arduino с HC-05 подключён к COM8, Arduino с HC-06 — к COM17.

Две Arduino IDE

На HC-05 я изменил скорость передачи данных в режиме связи на 38400. Это означает, что мне не нужно ничего менять при переключении между AT-режимом и режимом связи.

Я использую скетч HC-05_AT_MODE_01 на Arduino с HC-05 и скетч HC-06_01 на Arduino с HC-06.

Скетч HC-05_AT_MODE_01

// Basic Bluetooth sketch HC-05_AT_MODE_01
// Connect the HC-05 module and communicate using the serial monitor
//
// The HC-05 defaults to commincation mode when first powered on
// you will need to manually enter AT mode
// The default baud rate for AT mode is 38400
// See www.martyncurrey.com for details
//

#include <SoftwareSerial.h>
SoftwareSerial BTserial(2, 3); // RX | TX
// Connect the HC-05 TX to Arduino pin 2 RX.
// Connect the HC-05 RX to Arduino pin 3 TX through a voltage divider.
//

char c = ' ';

void setup()
{
    Serial.begin(9600);
    Serial.println("Arduino is ready");
    Serial.println("Remember to select Both NL & CR in the serial monitor");

    // HC-05 default serial speed for AT mode is 38400
    BTserial.begin(38400);
}

void loop()
{

    // Keep reading from HC-05 and send to Arduino Serial Monitor
    if (BTserial.available())
    {
        c = BTserial.read();
        Serial.write(c);
    }

    // Keep reading from Arduino Serial Monitor and send to HC-05
    if (Serial.available())
    {
        c = Serial.read();
        BTserial.write(c);
    }

}

Скетч HC-06_01

// Basic bluetooth test sketch. HC-06_01
// HC-06 ZS-040
//
//
//  Uses hardware serial to talk to the host computer and software serial
//  for communication with the bluetooth module
//
//  Pins
//  BT VCC to Arduino 5V out.
//  BT GND to GND
//  BT RX to Arduino pin 3 (through a voltage divider)
//  BT TX  to Arduino pin 2 (no need voltage divider)
//
//  When a command is entered in the serial monitor on the computer
//  the Arduino will relay it to the bluetooth module and display the result.
//
//  These HC-06 modules require capital letters and no line ending
//

#include <SoftwareSerial.h>
SoftwareSerial BTSerial(2, 3); // RX | TX

void setup()
{
  Serial.begin(9600);
  Serial.println("Enter AT commands:");

  // HC-06 default baud rate is 9600
  BTSerial.begin(9600);
}

void loop()
{

  // Keep reading from HC-06 and send to Arduino Serial Monitor
  if (BTSerial.available())
    Serial.write(BTSerial.read());

  // Keep reading from Arduino Serial Monitor and send to HC-06
  if (Serial.available())
  BTSerial.write(Serial.read());
}

Подключение

Оба Bluetooth-модуля подключаются одинаково.

Макетная плата с двумя Arduino Схема подключения HC-05 к HC-06 через CMODE

Соберите обе схемы и включите питание. Светодиоды на HC-05 и HC-06 должны быстро мигать.

Чтобы HC-05 подключился к HC-06, нужно:

  • установить HC-05 в режим Master,

  • настроить сопряжение с любым адресом,

  • перезагрузить питание модуля.

Переведите HC-05 в AT-режим (удерживайте кнопку при включении питания). Если вы не уверены, как это сделать, смотрите Arduino и HC-05 (ZS-040) — AT-режим. В AT-режиме светодиод на HC-05 должен мигать вкл/выкл каждую секунду.

Сначала убедитесь, что мы в AT-режиме. Введите AT и нажмите Send. Вы должны получить «OK».

AT - OK

Установите HC-05 как ведущее устройство командой AT+ROLE: AT+ROLE=1. Вы должны получить ещё одно «OK».

AT+ROLE=1 - OK

Настройте HC-05 на сопряжение с любым адресом: AT+CMODE=1. Вы должны получить ещё одно «OK».

AT+CMODE=1 - OK

Перезагрузите питание HC-05. Светодиод на HC-05 будет мигать дважды в секунду при поиске, а после подключения к HC-06 светодиод будет быстро мигать дважды каждые 2 секунды. Светодиод на HC-06 должен гореть постоянно.

Теперь всё, что вы вводите в одном мониторе порта, будет отправлено по Bluetooth на другой Arduino и отображено в противоположном мониторе порта.

Hello отправлено из HC-05 Hello получено на HC-06

Hello отправлено из HC-06 в HC-05:

Hello из HC-06 Hello получено на HC-05

Далее

Следующий шаг — связать два модуля, указав конкретное устройство для подключения по MAC-адресу. Соединение 2 Arduino через Bluetooth с помощью HC-05 и HC-06: Pair, Bind и Link