Подготовка к настройке AT-командами

Настройка bluetooth-модулей HC-05/06

В одном из наших уроков мы знакомились с Bluetooth модулями HC-05 и HC-06, которые широко распространены в среде DIY энтузиастов. Если вы еще не знакомы с bluetooth, то для начала следует почитать именно этот урок: Arduino: bluetooth.

В этой же статье мы поговорим о тонкой настройке Bluetooth-модулей: смены имени устройства, скорости передачи данных, пароля и много другого.

Режим AT-команд

Настройка bluetooth модуля осуществляется в режиме AT-команд. В этом режиме модуль принимает данные через UART интерфейс (RX,TX) и интерпретирует их как команды настройки. Чтобы перевести HC-05 и HC-06 в режим AT-команд необходимо задействовать контакт KEY, который в зависимости от типа печатной платы модуля может быть, а может и не быть.

Есть вариант платы, на которой нет контакта KEY, но есть кнопка. Эта кнопка выполняет ту же функцию. А есть вариант, когда нет ни кнопки ни выведенного контакта (тот же HC-06). В таком случае необходимо будет припаять дополнительный провод к контакту, отмеченному на фото ниже.

Режим AT команд Bluetooth HC-05

Подключение к компьютеру

Для настройки модуля нам необходимо будет подключить его к компьютеру. Сделать этом можно тремя способами.

Способ №1. С помощью отдельного USB-UART моста, например такого: USB-UART на основе CP2102.

Bluetooth HC-05GndVccRXTX
USB-UART CP2102/CP2104Gnd5VTXRX

Микросхема CP2102 или CP2104 имеют напряжение сигнальных линий 3,3 Вольта, а значит их можно смело подключать напрямую к bluetooth модулю не боясь его повредить.

Способ №2. С помощью платы Arduino, подключенной в режиме USB-UART моста.

На большинстве плат из линейки Ардуино имеется встроенный USB-UART мост, который можно использовать в обход самой Ардуино. Для этого необходимо замкнуть проводом контакты RST и Gnd, а затем подключить bluetooth по следующей схеме.

Настройка bluetooth hc-05 при помощи Arduino

Встроенный USB-UART Arduino имеет напряжение сигнальных линий 5 Вольт, а следовательно нам придется преобразовать уровень напряжения для RX линии bluetooth модуля. Это нужно сделать только для RX; подробности согласования уровней для HC-05 и HC-06 можно найти в нашем уроке.

Обратите внимание, что на этой схеме контакт Arduino RX подключается к контакту RX bluetooth-модуля. Хотя в таких случаях всегда делают крест-на-крест — это не ошибка. Дело в том, что мы используем не сам контроллер Atmega328, а именно микросхему USB-UART моста, которая с ним связана. Эта микросхема уже подключена крест-на-крест к микроконтроллеру. То есть, по факту, мы имеет такую цепочку соединений: USB-UART TX -> Arduino RX -> Bluetooth RX. И соединив RST и Gnd, мы просто убираем Arduino из этой цепочки.

Способ №3. С помощью платы Arduino с программным USB-UART ретранслятором.

В этом случае USB-UART мостом будет служить основной микроконтроллер платы Arduino — Atmega328p. Подключим Ардуино к bluetooth по следующей схеме.

Настройка bluetooth hc-05 при помощи Arduino

На этой схеме мы подключаем TX и RX bluetooth модуля к контактам 10 и 11, так как аппаратный UART на ногах 0(RX) и 1(TX) будет занят общением с компьютером.

Затем пишем небольшую программу-ретранслятор ( программный USB-UART мост), которая будет осуществлять обмен данными между терминалом на компьютере и Bluetooth модулем. Программа крайне проста:

#include <SoftwareSerial.h>
#include <Time.h>

int gLedPin = 13;
int gRxPin = 10;
int gTxPin = 11;

SoftwareSerial BTSerial(gRxPin, gTxPin);

void setup() {
  # 38400 - для метода №1, 9600 - для метода №2
  BTSerial.begin(38400);
  Serial.begin(9600);
  delay(500);
}

void loop() {
  if (BTSerial.available()) {
    Serial.write(BTSerial.read());
  }
  if (Serial.available()) {
    BTSerial.write(Serial.read());
  }
}

В этой программе есть два важных параметра, на которые следует обратить внимание:

Serial.begin(9600); — это скорость общения Ардуино и компьютера. Именно эту скорость нужно будет выставить в терминале!

BTSerial.begin(38400); — это скорость общения Ардуино и bluetooth модуля. В зависимости от варианта входа в режим AT-команд, она будет разной. Об этом будет сказано ниже.

Загружаем программу на Ардуино — USB-UART мост готов!

Терминал

В данном контексте терминал — это программа для текстового общения с различными устройствами по различным протоколам связи. Нам важен терминал, который работает с аппаратными или программными COM-портами.

В качестве терминала для нашей задачи можно использовать встроенный в Arduino IDE монитор порта — он тоже умеет передавать данные через COM-порт. В настройках следует выбрать передачу символов CR+LF (0x0D+0x10) и нужную скорость. Вот так должен выглядеть экран монитора порта (см. настройки внизу окна).

Монитор порта Arduino IDE bluetooth

Также можно использовать любой другой терминал, например, достаточно популярный TeraTerm. Его настройки:

Настройка teraterm
Настройка teraterm

Все дальнейшие манипуляции рационально поделить на две части: для ведомого модуля HC-06 и для ведущего HC-05.


Изменено: