Bluetooth-модуль HC-05: подключение к Arduino и AT-команды

Bluetooth-модуль HC-05: подключение к Arduino и AT-команды

HC-05 добавляет Arduino двустороннюю связь по Bluetooth и работает как master или slave. Выводы, режим настройки, основные AT-команды и пример с DHT11.

Зачем нужен HC-05

Собственной беспроводной связи у плат Arduino нет, а она нужна часто: для управления роботом, передачи показаний метеостанции, обмена данными между устройствами. Bluetooth удобен для связи на небольшом расстоянии: прямая видимость не обязательна, а устойчивость к широкополосным помехам позволяет многим устройствам работать рядом, не мешая друг другу.

Модуль HC-05 обеспечивает двустороннюю связь Arduino с планшетом, ноутбуком или другим Bluetooth-устройством. Он может быть ведущим (master) — сам искать устройства и устанавливать соединение — или ведомым (slave).

Характеристики

Чип BluetoothHC-05 (BC417143)
Диапазон частот2,4–2,48 ГГц
Мощность передачи0,25–2,5 мВт
Чувствительность-80 дБм
Напряжение питания3,3–5 В
Потребляемый ток50 мА
Радиус действиядо 10 м
Интерфейспоследовательный порт
Режимыmaster, slave
Рабочая температура-25…75 °C
Габариты27 x 13 x 2,2 мм

Выводы и вход в режим настройки

У модуля шесть выводов с шагом 2,54 мм: VCC, GND, TXD и RXD (UART), STATE (индикатор состояния) и KEY — контакт для входа в режим программирования.

Выводы модуля HC-05 с контактом KEY

Настраивается модуль AT-командами через последовательный порт, и для этого его нужно перевести в режим программирования, подав высокий уровень на KEY. На части плат вместо KEY выведен контакт EN, который включает и выключает модуль.

Вариант модуля HC-05 с контактом EN

В таком случае высокий уровень подают непосредственно на контакт 34 самой платы Bluetooth.

Расположение контакта 34 на плате HC-05

Со стороны Arduino используется программный UART — библиотека SoftwareSerial на выводах 2 (RX) и 3 (TX). На KEY или вывод 34 подают 3,3 В.

Схема подключения HC-05 к Arduino

Скетч для настройки работает как мост: всё, что приходит из программного порта, выводится в аппаратный, и наоборот. Аппаратный порт открыт на 9600 бод, программный — на 38400: такова скорость модуля в режиме программирования. У отдельных экземпляров она может быть другой, тогда её подбирают.

Основные AT-команды

Команды отправляют из монитора порта Arduino IDE. На большинство из них модуль отвечает OK или FAIL.

  • AT — проверка связи.
  • AT+VERSION? — версия прошивки.
  • AT+ADDR? — адрес модуля в формате NAP:UAP:LAP.
  • AT+NAME? и AT+NAME=имя — чтение и смена имени.
  • AT+PSWD? и AT+PSWD=код — чтение и смена пин-кода; по умолчанию 1234.
  • AT+ROLE? и AT+ROLE=n — режим: 0 — slave, 1 — master, 2 — slave-loop (модуль возвращает все полученные байты).
  • AT+UART=скорость,стоп-бит,паритет — параметры порта; скорость 9600, 19200, 38400, 57600 или 115200.
  • AT+CMODE=n — 0: подключение только к устройству, заданному командой AT+BIND; 1: к любому устройству; 2: slave-loop.
  • AT+INQM=режим,число,таймаут — параметры поиска: обычный запрос или с RSSI, максимум отвечающих устройств, ожидание 1–48 (от 1,28 до 61,44 с).
  • AT+INQ — запуск поиска устройств.
  • AT+BIND=адрес, AT+LINK=адрес — привязка к устройству и соединение с ним.
  • AT+RMSAD=адрес, AT+RMAAD — удаление одного устройства из списка авторизованных и очистка всего списка.
  • AT+RESET, AT+ORGL — сброс и установка исходных настроек.

Отдельно стоит команда AT+CLASS. Допустимые значения в документации не описаны, по умолчанию установлен 0. Для режима master менять его не нужно, но в режиме slave модуль с классом 0 не виден устройствам на Android — чтобы он появился в поиске, задают значение 7936. Код доступа к запросу, которым управляет AT+IAC, по умолчанию равен 9e8b33.

Пример: показания DHT11 на телефоне

В примере Arduino периодически опрашивает датчик температуры и влажности DHT11 и отправляет результаты через HC-05 на Android-устройство. Понадобятся плата Arduino, макетная плата, DHT11, модуль HC-05, провода и телефон или планшет на Android.

Линия DATA датчика подключена к выводу 8, модуль — к программному порту на выводах 2 и 3, оба порта работают на 9600 бод. Используются библиотеки DHT и SoftwareSerial. Скетч через заданный интервал (в коде он равен 2000 мс) поочерёдно считывает влажность и температуру и отправляет строки вида «H=значение» и «T=значение» в Bluetooth, дублируя их в монитор порта.

На телефон устанавливают приложение Bluetooth Terminal, соединяются в нём с HC-05 и наблюдают поступающие данные.

Типичные неполадки

  • Модуль не отвечает на AT-команды: проверить соединения, наличие 3,3 В на KEY (или выводе 34) и скорость порта — 38400 бод, у некоторых производителей она отличается.
  • Android не подключается: убедиться, что питание подано и светодиод модуля быстро мигает; отключить KEY (вывод 34) от 3,3 В; задать роль slave командой AT+ROLE=0.
  • Данные не приходят: проверить подключение к Arduino и то, что скорость обмена в скетче совпадает с заданной через AT+UART.

← Все статьи