- Bluetooth-модуль HC-06
- Технические характеристики
- Подключение к компьютеру
- Подключение к Android
- AT-команды
- Сравнение модулей HC-05 и HC-06
- Arduino и модули Bluetooth HC-05/06
- Небольшой обзор модулей HC-05 и HC-06
- Распиновка модулей
- Подключение HC-05 и HC-06 к Arduino
- Согласование логических уровней
- Скетч для подключения к Arduino
Bluetooth-модуль HC-06
Модуль HC-06 (и старшая модель HC-05) представляет собой плату с Bluetooth-модемом с дополнительной обвязкой: стабилизатор с 5 на 3.3 вольта, светодиод, и конденсаторы на линиях питания. Также на плате установлен mosfet-транзистор (Q1), который при надобности может разрывать цепь питания блютуза, тем самым отключая его.
Модуль HC-06 используется только в режиме slave, то есть он не может самостоятельно подключаться к другим устройствам Bluetooth.
На HC-06 шесть подписанных контактов: EN, VCC, GND, TXD, RXD и State (некоторые обозначения могут иметь другие названия). Но ножками как правило оборудованы только четыре из них: VCC, GND, TXD и RXD.
Технические характеристики
- Питание: 3,3В–6В
- Максимальное входное напряжение: 5В
- Максимальный ток: 45 мА
- Скорость передачи данных: 1200–1382400 бод
- Рабочие частоты: 2,40 ГГц – 2,48ГГц
- Поддержка спецификации bluetooth версии 2.1
- Дальность связи: 30 м
- Пароль «1234», скорость передачи данных 9600, имя модуля HС-06 (все настройки можно изменить AT-командой)
Для подключения к Arduino Uno используется следующая схема.
HC-06 | Arduino ----------------- GND | GND VCC | 3.3V RXD | TX TXD | RX
Модуль HC-06 выступает в роли последовательного порта, через который можно передавать и принимать данные. Вы можете для этой цели использовать компьютер или смартфон.
Важное замечание: при заливке скетча убирайте провода с контактов 0 и 1 на плате Arduino, так как они используются для передачи данных вашего скетча. Когда скетч установите, можете вернуть провода на место.
Подключение к компьютеру
Рассмотрим пример подключения и обмена информацией с компьютером. Если у компьютера нет встроенного Bluetooth, то можно купить отдельный модуль, подключаемый через USB.
Сначала необходимо сделать несколько предварительных действий. Когда вы подключите HC-06 к плате, он будет готов к работе, постоянно мигая своим светодиодом. Нужно установить соединение с компьютером. Далее объяснения идут для Windows 10. В нижнем правом углу находим значок Bluetooth и выбираем пункт Show Bluetooth Devices. В открывшемся окне выбираем пункт Add a device. В успешном случае будет обнаружено новое устройство с именем HC-06. Для спаривания с ним введите пароль по умолчанию 1234.
После успешного соединения нужно снова открыть окно Show Bluetooth Devices и выбрать пункт More Bluetooth options. В диалоговом окне переключитесь на вкладку COM Ports и запомните номер порта для Outgoing — в моём примере это был порт COM7.
Далее следует установить программу-терминал для общения с модулем. Самой простой и популярной является Termite. Я выбрал вариант «Program only» (вторая в списке) размером всего 76 кб. Программа не требует инсталляции и не пишет ничего в реестр. Запустите программу, нажмите на кнопку Settings и в диалоговом окне выберите нужный порт (который я просил запомнить) и скорость (9600).
Напишем скетч и зальём его на плату.
String message; // строка для входящих сообщений void setup() < Serial.begin(9600); >void loop() < while (Serial.available()) < message += char(Serial.read()); //сохраняем строку от входящих сообщений >if (!Serial.available()) < if (message != "") < //если данные доступны Serial.println(message); //выводим данные message = ""; //очищаем данные >> delay(3000); //delay >
В Termite вводим любое слово в нижнем текстовом поле и нажимаем клавишу Enter. В Serial Monitor будут отображаться введённые слова. Это означает, что мы можем посылать определённые команды для платы, чтобы управлять ей.
Давайте попробуем включать и выключать встроенный светодиод на контакте 13.
int val; int LED = 13; void setup() < Serial.begin(9600); pinMode(LED, OUTPUT); >void loop() < if (Serial.available()) < val = Serial.read(); // При символе "1" включаем светодиод if (val == '1') < digitalWrite(LED, HIGH); Serial.println("On"); >// При символе "0" выключаем светодиод if ( val == '0') < digitalWrite(LED, LOW); Serial.println("Off"); >> >
Если всё получилось, то примите мои поздравления. Теперь вы можете общаться с платой с компьютера.
Подключение к Android
Подключение к телефону на Android происходит по такой же схеме. Устанавливаем терминал, например Bluetooth Terminal, соединяемся с нашим модулем и посылаем команды из предыдущего скетча. Плата будет включать и выключать свой светодиод, принимая сигнал с телефона.
AT-команды
С помощью AT-команд можно сменить настройки по умолчанию. Имейте в виду, что в 2018 году модули стали поставляться с другой прошивкой и некоторые сведения, которые ранее были описаны в интернете, устарели. Я описываю актуальные команды на 2019 год.
Используем следующую схему подключения.
HC-06 | Arduino ----------------- GND | GND VCC | 3.3V RXD | D3 TXD | D2
При подключении светодиод на модуле будет мигать два раза в секунду. В этом режиме можно вводить команды. Но сначала загрузим скетч.
#include SoftwareSerial btSerial(2, 3); // RX, TX /* Connect pin 2 Arduino to pin TX HC-06 Connect pin 3 Arduino to pin RX HC-06 */ void setup() < Serial.begin(9600); Serial.println("Enter AT commands:"); btSerial.begin(9600); >void loop()
В Serial Monitor вводим команду AT . В ответ получим OK.
Чтобы сменить имя модуля, нужно ввести команду AT+NAME=CAT-06 , где CAT-06 — новое имя. Имя не должно превышать 20 символов.
Узнать версию модуля: AT+VERSION . Ответ: VERSION:3.0-20170609.
Смена пароля: AT+PSWD:»0000″ , где 0000 ваш новый пароль.
Есть ещё команды для смены скорости, но тут нужно быть внимательным. После смены скорости старые скетчи не будут работать, надо вносить в них изменения, чтобы соответствовать новым настройкам. Не уверен, что стоит увлекаться этим.
Сравнение модулей HC-05 и HC-06
Модули HC-05 и HC-06 являются наиболее используемыми. Оба модуля основаны на одинаковом чипе, но есть и важные отличия. Модуль HC-05 может работать в двух режимах работы – и в качестве ведущего (master), и в качестве ведомого (slave).
Модуль HC-05 стоит несколько дороже, но он имеет большее количество полезных рабочих функций. Скорость передачи АТ команд по умолчанию для HC-05 равна 38400, для HC-06 – 9600. Важным моментом является то, что в конце АТ команд для HC-05 должны быть символы CRLF.
Подключение обоих модулей к плате Arduino одинаково.
Arduino и модули Bluetooth HC-05/06
Bluetooth — один из самых распространённых протоколов беспроводной связи на малом расстоянии для персональных электронных устройств. С его помощью работают различные устройства ввода и управления, аудиоустройства.
На фоне остальных протоколов Bluetooth выделяется прежде всего помехоустойчивостью и простотой. От не менее распространённого Wi-Fi Bluetooth отличается в первую очередь низким энергопотреблением, что делает его доступным для автономных устройств. Благодаря этому BT получил повсеместное распространение.
Чаще всего для самоделок используются BT-модули HC-05 и HC-06. Их легко найти в продаже. HC-05 отличается от HC-06 тем, что ему доступны оба режима работы: ведомый (master) и ведущий (slave). А вот HC-06 работает только ведомым, то есть он не способен находить другие устройства и самостоятельно устанавливать с ними связь (но это можно исправить).
Оба модуля основаны на одинаковом чипе и поддерживают BT версии 2.0. Их максимальная скорость работы – 3 Мегабита в секунду.
Небольшой обзор модулей HC-05 и HC-06
Чаще всего HC-05 и HC-06 представляют собой две спаянные платы. Верхняя – заводская плата с микросхемой BC417. Нижняя – специальная плата для самодельных устройств, содержащая самые нужные ножки GPIO с шагом 2.54 мм, стабилизатор напряжения и кнопку сброса. На фотографии ниже плата с BC417:
А это — модули HC-05 и HC-06 вместе с подложкой:
HC-05 не намного дороже HC-06. Но при этом он может работать в обоих режимах прямо “из коробки”. С HC-06 же придётся повозиться, чтобы заставить его работать ведущим.
Также встречаются немного другие версии модулей. Вместо вывода EN на них выведен KEY.
Распиновка модулей
- EN — управление питанием;
- VCC — питание от 3,6 до 6 В;
- GND — земля;
- RX, TX — интерфейс UART;
- STATE — индикация работы;
- KEY — активация режима управления с помощью AT-команд.
Настройка модулей производится при помощи AT-команд. Но пин KEY есть не на всех модулях. И что с этим делать?
Пин KEY конечно же присутствует на малой плате с большим числом контактов, но не разведён на большой. Причины такого странного решения китайцев неизвестны.
Этот контакт находится здесь:
Подключение HC-05 и HC-06 к Arduino
Подключение к Arduino выполняется следующими контактами:
- GND – GND;
- VCC – +5V;
- TXD – 10;
- RXD – 11;
- KEY при обычной работе модуля не используется. Для перехода в режим AT-команд его надо соединить с +3.3V.
TXD и RXD соединены с пинами 10 и 11, потому, что аппаратный UART будет использоваться для связи с компьютером.
Согласование логических уровней
Bluetooth-модули работают с логическими уровнями 3.3 В, и использование пятивольтовой логики может вывести их из строя. Но чаще всего на плате имеется всё необходимое для согласования уровней.
Бывают ситуации, в которых между Arduino TXD — Bluetooth RXD необходимо согласование напряжения. Использование делителя – гарантия надёжной работы.
Справа приведена схема простейшего делителя:
Скетч для подключения к Arduino
Для настройки модулей можно использовать USB-UART конвертер, если вы воспользуетесь им – следующий пункт можно пропустить. Для начала нам потребуется прошить Arduino.
Скетч просто отправляет данные, полученные с компьютера, на настраиваемый модуль.