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

Работа с Bluetooth HC-05 и HC-06Bluetooth — это пожалуй самый распространенный тип связи для коротких дистанций, которым пользуются большинство современных электронных устройств. Телефонные гарнитуры, наушники, клавиатуры и мышки, принтеры и бог знает какие еще гаджеты. Некоторое время назад bluetooth был распространен как средство передачи файлов между телефонами.

Главными достоинствами BT можно назвать хорошую устойчивость к широкополосным помехам и простоту реализации. Первое значит, что куча устройств, находящихся в одном месте, могут одновременно общаться между собой, не мешая друг другу. Второе же помогло широкому распространению Bluetooth в среде DIY, и вообще во всех средах.

Лично я использую BT для управления роботами со смартфона. В Google play уже есть несколько приложений с удобным интерфейсом именно для этих целей. Участники нашего хакспейса MakeItLab с помощью Bluetooth управляют удаленно светом и собирают телеметрию с борта квадрокоптеров.

Самыми доступными на сегодня Bluetooth модулями можно назвать HC-05 и HC-06. Они в изобилии присутствуют в Китайских онлайн-магазинах и на ebay. Отличия между ними в том, что первый может работать как в режиме ведущего (slave), так и в режиме ведомого (master). Второй же является чисто ведомым устройством (но это поправимо!). Другими словами, HC-06 не может сам обнаружить парное устройство и наладить с ним связь, он может лишь подчиниться ведущему.

Оба устройства базируются на чипе CSR BC417, который поддерживает Bluetooth версии 2.0 со скоростью до 3 Мбит/сек. Именно об этих модулях далее и пойдет речь.

1. Варианты исполнения

Обычно модули продаются в виде двух спаянных вместе плат. Меньшая из них — заводской модуль, широко используемый в разных электронных устройствах. Большая — специальная макетная платка для DIY. Так выглядит меньшая плата с чипом BC417:

Модуль Bluetooth HC-05

А так сами DIY модули HC-05 и HC-06:

Сравнение Bluetooth HC-05 и HC-06

Для своих коварных целей я обычно беру HC-05, так как они не сильно отличаются по цене от HC-06, и позволяют без лишних проблем связать вместе два устройства. Например, можно сделать робота и пульт к нему. Из Китая мне обычно приходят модули, точь в точь как на левой картинке, но иногда без кнопки.

Очень распространен и другой вариант макетной платки. В отличие от показанных выше, в них нет ноги EN, но есть нога KEY, что немного удобнее.

Разъемы Bluetooth HC-05

Распиновка

Итак, за что отвечают ноги у всех вариантов модулей.

  • EN — включение/выключение модуля;
  • VCC — питание +5В;
  • GND — земля;
  • TXD, RXD — UART интерфейс для общения с контроллером;
  • STATE — индикатор состояния;
  • KEY — нога для входа в режим AT-команд.

Настройка модуля осуществляется в режиме AT-команд, который включается с помощью ноги KEY. Отсюда, у многих счастливых обладателей модуля может возникнуть вопрос: что делать, если мне попался модуль без KEY?

На самом деле, на малой плате эта нога конечно есть, просто она не разведена на большой плате. Черт знает зачем китайцы так сделали, но проблема решается легко. KEY-нога растет отсюда:

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

2. Подключение к Ардуино Уно

Ног не так много, так что запутаться не получится. Подключаем к bluetooth к Arduino Uno по следующей схеме:

Bluetooth GND VCC TXD RXD KEY
Ардуино Уно GND +5V 10 11

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

В рабочем режиме KEY никуда не подключается, так что в таблице я его не стал соединять с GPIO ногами Arduino.

3. Сопряжение уровней напряжения

Малая платка Bluetooth модуля имеет напряжение логики 3.3 Вольта. А это значит, что Ардуино Уно может либо сжечь у нее порты, либо просто неправильно передавать сигналы. К счастью, в большинстве случаев большая плата имеет на своем борту все необходимое, чтобы этого избежать. Указанные выше модули легко подключаются к Arduino, без лишних заморочек. Даже не смотря на то, что сами изготовители написали на платке предупреждение об уровне сигналов 3.3 Вольта.

Однако, в некоторых ситуациях может потребоваться поставить на линию Ардуино TX — BT RX делитель напряжения для понижения логических уровней. На самом деле, даже если все работает и без делителя, лучше его все-таки поставить, для порядка. Схема делителя ниже:

Делитель напряжения для Bluetooth HC-05

4. Подготовка Arduino

Для того чтобы начать настройку, нам потребуется зашить в Ардуино вспомогательный скетч. По-сути — программу ретранслятор, которая будет осуществлять обмен данными между терминалом на компьютере и 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());
  }
}

Загружаем скетч на Ардуино и переходим к следующему шагу.

5. Подготовка терминала

В качестве терминала можно использовать встроенный в Arduino IDE монитор порта, а можно любой другой. Я использовал сторонний терминал TeraTerm. Перед соединением необходимо сделать две важные настройки:

  • скорость обмена: 9600;
  • символа перевода строки: CR+LF.

Вот как настройки выглядят в TeraTerm:

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

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

6. Настройка HC-06

Проверка соединения

После подачи питания на модуль, светодиод начнет бодро мигать:

Работа с Bluetooth HC-05. Индикатор.

Теперь заходим в терминал и пишем команду: AT

В ответ, модуль нам должен сказать: OK

Следующая наша команда запросит у модуля его версию: AT+VERSION?

Получаем что-то вроде такого: OKLinvor1.5

Получилось? Если нет, то проверяем:

  1. Скорость соединения с модулем, которая задается в программе-трансляторе: для связи с ведомым скорость должна быть 9600.
  2. Настройки символа перевода строки: не забываем про CR+LF!
  3. Нажимаем ли после каждой команды Enter? Мало ли…

Полезные команды

У ведомого Bluetooth модуля есть всего три параметра для настройки:

  • команда смены пароля на устройстве: AT+PIN<пароль>
  • смена скорости: AT+BAUD<скорость>
  • смена имени устройства: AT+NAME<имя>

Например, для смены пароля пишем: AT+PIN4321

В общем-то готово! Теперь можно соединиться с модулем, например, со смартфона. Об этом речь пойдет во второй части моего повествования.

7. Настройка HC-05

Переход в режим AT-команд

Чтобы получить доступ к настройка ведущего модуля, его необходимо перевести в режим AT-команд. Для входа в этот режим можно воспользоваться двумя методами (я всегда использую первый).

Первый метод:

  1. Отключаем модуль от питания.
  2. Подаем на ногу KEY сигнал +3.3V.
  3. Включаем модуль.

В это варианте скорость обмена с модулем устанавливается в 38400.

Второй метод

  1. Включаем модуль.
  2. Подаем на ногу KEY сигнал +3.3V;

В этом случае скорость обмена с модулем будет равна стандартной, установленной настройками. По-умолчанию 9600.

После успешного перехода в режим AT-команд светодиод на модуле начнет мигать раз в две секунды.

Работа с Bluetooth HC-05. Индикатор.

Проверка соединения HC

Проверим командный режим HC-05 так же как и в случае ведомого модуля:

>>: AT
<<: OK
>>: AT+VERSION?
<<: +VERSION:2.0-20100601

Настройка HC-05 как ведомого (slave)

Для превращения модуля в ведомого потребуется выполнить несколько команд:

Сброс предыдущих настроек: AT+ORGL

Сброс спаренных устройств: AT+RMAAD

Установка пароля: AT+PSWD=1234

Включение режима ведомого: AT+ROLE=0

Дополнительно можно узнать адрес устройства (понадобится для настройки спаренного модуля): AT+ADDR?

В ответ получим сам адрес: ADDR=12:6:143117

После настройки, отключаем ногу KEY от +3.3В, и перезапускаем модуль. Готово!

Настройка HC-05 как ведущего (master)

С завода модуль идет ведомым, и чтобы сделать его ведущим потребуется выполнить следующие команды.

Сброс предыдущих настроек: AT+ORGL

Сброс спаренных устройств: AT+RMAAD

Включение режима ведущего: AT+ROLE=1

Рестарт после смены роли: AT+RESET

Если мы хотим связать ведомого и ведущего, пишем такие команды:

Установка пароля ведомого: AT+PSWD=1234

Указываем парное устройство: AT+PAIR=<адрес>,<таймаут> (пример: AT+PAIR=12,6,143117, 5)

Связываем с конкретным адресом: AT+BIND=<адрес> (пример: AT+BIND=12,6,143117)

Запрещаем соединяться с другими адресами: AT+CMODE=0

Готово! Теперь модуль связан с ведомым, и при каждом включении будет пытаться с ним соединиться.

Полезные ссылки:

AT-команды модулей HC-03/HC-05


Изменено:

Настройка bluetooth-модулей HC-05/06: 9 комментариев

  1. Все сделал как написано, но ЛЕД на модуле все равно продолжает быстро мигать не переходя в АТ режим… в чем дело?

  2. Модуль на вид HC-05, все ножки в круговую припаяны. есть вход KEY, его и включаю на 3.3В на ардуино.

    • А кнопка есть? Можно попробовать зажать кнопку, подать питание, отпустить кнопку

  3. А почему в делителе напряжений резисторы на 47к и 10к? Ведь тогда при напряжении 5В с ардуино на блютуз пойдёт 0,8В???

  4. Здравствуйте!
    У кого есть этот модуль HC-06, замерьте и подскажите пожалуйста, что это диод или стабилитрон или еще что, который идет от плюсовой ноги (черная) видел на фото на нем было написано «B2″, дело в том что пришло мне это чудо, долго не мог понять почему не работает, оказывается не хватает этой детали!
    Кто разбирается подскажите что это и его номинал?
    Спасибо!

    • Если через эту деталь идёт питание, то скорее всего это диод — защита от переплюсовки. Можно поставить любой. В прямом направлении. Или заменить перемычкой

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>