Bluetooth-модули
Существует множество очень похожих Bluetooth-модулей, и иногда бывает сложно определить не только какой именно модуль у вас, но и как его использовать. Здесь я рассмотрю некоторые модули, которые у меня есть, и постараюсь показать базовые настройки.
Начало работы
Определение модуля и его прошивки — ключ к успешной работе. Есть несколько способов получить информацию:
Маркировка на плате или плате расширения
Количество и тип пинов на плате расширения
Тип Bluetooth
Используемый чип
Общение с модулем
Но первое, что нужно сделать — просто попробовать. Включите модуль, убедитесь, что он работает, и посмотрите, какое имя он транслирует. Если он транслирует «HC-06» или «HC-05», вы знаете, что это Bluetooth 2.0 или 2.1. HMSoft, AT-09, BT05, CC2540, CC2541 — всё это означает BLE.
Я пользователь Android (извините, не могу помочь с iOS), так что все примеры будут с Android-устройств.
На Android-устройствах (с Bluetooth) все устройства Bluetooth 2.0/2.1 должны отображаться в Настройки → Bluetooth → Поиск устройств. BLE-модули могут отображаться или нет, в зависимости от вашего Android-устройства и версии Android.
Для BLE используйте одно из многих BLE-приложений. Я обычно использую BLE Scanner или B-BLE, но есть и множество других.
Маркировка на плате / плате расширения
Существует множество разных модулей, и некоторые из них стали довольно популярными. У них обычно есть бренд или маркировка на плате — либо на маленькой SMD Bluetooth-плате, либо на плате расширения. Распространённые маркировки:
zs-040
FC-114
JY-MCU
CZ-HC-0x
SJ
Keyes Bluetooth 4.0
HM-10
Конечно, некоторые из них довольно очевидны. Если на вашем модуле чётко написано HM-10, скорее всего, это HM-10. Сложнее, когда маркировки нет или когда одна и та же плата используется повторно. У меня сейчас несколько разных модулей (BT 2 и BT 4), все использующих плату расширения zs-040, а модули на платах FC-114 имеют как минимум 2 разные прошивки.
Количество и тип пинов
Количество и тип пинов могут дать полезную информацию. Для Bluetooth 2 модулей HC-05 обычно имеет 6 пинов, а HC-06 — 4 пина.
Надписи на пинах тоже помогают. Помимо стандартных TX, RX, GND и VCC, могут быть пины EN, WAKEUP, STATE, BRK, KEY или LED.
Тип Bluetooth и чип
Это должно быть очевидно, но никогда не знаешь. Скорее всего, если вы купили BLE-модуль, вы получите BLE-модуль — просто, может быть, не тот HM-10, который думали заказать. Если не уверены, включите модуль и используйте Android-устройство для сканирования. Чип на маленькой Bluetooth-плате (дочерней плате) тоже поможет. Загуглите название чипа — и вы быстро найдёте даташит.
Общение с модулем
Для настройки любого модуля нужно общаться с ним через UART-соединение (подробнее ниже). Это тоже может быть непросто, потому что разные модули имеют разные требования к формату AT-команд. Некоторые требуют верхний регистр, некоторые — нижний. Некоторые ожидают символы окончания строки, другие — нет. Большинство по умолчанию используют скорость 9600, но некоторые — другую (38400 тоже распространена). При работе с новыми модулями я выработал следующую процедуру:
Начинаю с 9600, с символами окончания строки и верхним регистром. Если не получается — пробую нижний регистр. Если не получается — убираю символы окончания строки и пробую верхний регистр снова. После перебора вариантов на 9600 пробую 38400. Это две самые частые скорости. Если всё ещё не получается — пробую другие скорости.
Также я перезагружаю модуль при подключённом последовательном соединении. Некоторые модули, например с прошивкой Bolutek, выводят стартовое сообщение.
Получение «мусорных» символов — признак неправильной скорости.
Подключение к компьютеру
Обратите внимание: я пользователь Windows, поэтому все примеры для Windows.
Есть несколько способов подключить Bluetooth-модули к компьютеру: через USB-UART адаптер или с помощью Arduino + скетча последовательной ретрансляции (или любого другого подобного микроконтроллера). Я обычно использую Arduino.
У меня есть несколько немного отличающихся скетчей, но начинаю я с самого простого. Он берёт всё введённое в Serial Monitor и отправляет на подключённый модуль. Всё полученное от модуля отображается в главном окне Serial Monitor.
Базовый скетч последовательной связи
Аппаратный Serial используется для связи с компьютером / Serial Monitor Arduino, а AltSoftSerial — для связи с Bluetooth-модулем. Скетч можно использовать для общения с любым модулем, использующим последовательную связь.
// Базовый скетч последовательной связи через AltSoftSerial (ASS).
// Аппаратный Serial для связи с компьютером, ASS для Bluetooth-модуля
//
// Когда команда введена в Serial Monitor,
// Arduino передаст её на Bluetooth-модуль и отобразит результат в Serial Monitor.
//
// Пины
// BT VCC к Arduino 5V.
// BT GND к GND
// Arduino D8 ASS RX - BT TX (делитель напряжения не нужен)
// Arduino D9 ASS TX - BT RX через делитель напряжения
//
#include <AltSoftSerial.h>
AltSoftSerial BTSerial;
char c=' ';
boolean NL = true;
void setup()
{
Serial.begin(9600);
Serial.print("Sketch: "); Serial.println(__FILE__);
Serial.print("Uploaded: "); Serial.println(__DATE__);
Serial.println(" ");
BTSerial.begin(9600);
Serial.println("BTserial started at 9600");
// Если используете HC-05 в AT-режиме, скорость скорее всего 38400
// Закомментируйте 2 строки выше и раскомментируйте 2 строки ниже.
// BTSerial.begin(38400);
// Serial.println("BTserial started at 38400");
Serial.println("");
}
void loop()
{
// Чтение от Bluetooth-модуля и отправка в Serial Monitor
if (BTSerial.available())
{
c = BTSerial.read();
Serial.write(c);
}
// Чтение из Serial Monitor и отправка на Bluetooth-модуль
if (Serial.available())
{
c = Serial.read();
BTSerial.write(c);
// Эхо ввода пользователя. Символ ">" обозначает текст пользователя.
if (NL) { Serial.print(">"); NL = false; }
Serial.write(c);
if (c==10) { NL = true; }
}
}
Подключение
Все модули подключаются похожим образом.
VCC → 5V
GND → GND
TX → Arduino RX (пин D8 при использовании AltSoftSerial)
RX → делитель напряжения → Arduino TX (пин D9 при использовании AltSoftSerial)
На некоторых модулях, таких как HM-10, порядок пинов может быть обратным. Просто убедитесь, что используются указанные выше соединения.
Устранение неполадок
Если не удаётся установить связь с Arduino, попробуйте следующее:
Проверьте подключения. Убедитесь, что Arduino TX подключён к BT RX и Arduino RX к BT TX.
Проверьте номиналы резисторов.
Проверьте порядок резисторов (резистор 1 кОм подключается к Arduino).
Попробуйте разные скорости. Не все модули используют 9600 по умолчанию.
Измените символы окончания строки (
\r\n). Некоторые модули их требуют, другие — нет.Попробуйте верхний и нижний регистр.
Ещё раз проверьте подключения.
Android-приложения
Модули Bluetooth 2.0/2.1 EDR
HC-06 (ZG-B23090W) Bluetooth 2.0 EDR
Основные характеристики HC-06 (ZG-B23090W)
Только slave-модуль
Bluetooth 2.0 EDR
На основе чипа CSR BC417
Прошивка linvor V1.8 (создана Wavesen, довольно старая)
Скорость UART по умолчанию: 9600
AT-команды должны быть в верхнем регистре без символов окончания строки
Трудно определить, являются ли они копиями (я подозреваю, что да). Wavesen — производитель оригинальной серии HC Bluetooth-модулей, и их модули теперь имеют логотип HC на маленькой SMD Bluetooth-плате и синий светодиод вверху справа. Поскольку на этих модулях нет ни логотипа, ни синего светодиода, я предполагаю, что они копии. Но фотографии в даташите показывают модули без логотипа. Учтите, что даташиты датированы 2010 и 2011 годами.
Подробнее см. статью HC-06 (ZG-B23090W) Bluetooth 2.0 EDR modules.
HC-05 (ZG-B23090W) Bluetooth 2.0 EDR
Эти модули имеют стандартную SMD Bluetooth-плату и используют старую прошивку HC/Wavesen 2010 года.
Основные характеристики HC-05 (ZG-B23090W)
Bluetooth 2.0 EDR
На основе чипа CSR BC417
Прошивка VERSION: 2.0-20100601 от Wavesen
Может быть slave или master устройством
Имеет 2 режима: AT-режим и режим связи
Скорость AT-режима по умолчанию: 38400
Скорость связи по умолчанию: 9600
AT-команды могут быть в верхнем или нижнем регистре
AT-команды требуют символы окончания строки
\r\n
Подробнее см. статью HC-05 (ZG-B23090W) Bluetooth 2.0 EDR modules.
SPP-C HC-06 / BT06 HC-06
Я купил 2 набора. Один продавался как SPP-C, другой как BT-06. У обоих одинаковая прошивка, и они отображаются как BT-04A или ??04-A.
Когда я их покупал, я видел их только на taobao и только HC-06 версии. Сейчас есть и HC-05 версии, и оба варианта доступны на обычных сайтах типа eBay и dx.com. Сайты, которые я проверял, показывают те же некорректные даташиты, что и продавцы с taobao.
Используют плату расширения zs-040 и имеют прошивку Bolutek Bluetooth V2.1. Это HC-06 модули — только slave, у моих версий 4 пина: нет пинов STATE и EN.
На них установлен чип Beken BK3231 — Bluetooth 3.0 HID устройство.
Bluetooth v2.1 + EDR
Скорость по умолчанию: 9600
PIN по умолчанию: 1234
Прошивка: BOLUTEK Firmware V2.2, Bluetooth V2.1
Прошивка от Bolutek, команда AT+HELP выводит список доступных команд
Модули отображаются как BT04-A или ??04-A
По умолчанию в AT-режиме при включении. AT-команды требуют символы окончания строки (
\r\n)
При открытии Serial Monitor и перезагрузке модуля вы увидите:
+READY
+PAIRABLE
AT+HELP выводит список доступных команд.
Не уверен, полный ли это список или прошивка отличается от других «Bolutek Bluetooth v2.1» прошивок. Если загуглить, быстро найдутся даташиты с другим набором команд.
Пины
PO 5 MCU-INT переходит в HIGH при установлении соединения.
Светодиод мигает 800 мс вкл / 800 мс выкл в ожидании сопряжения или соединения. При установлении соединения светодиод горит постоянно.
Загрузки
Дополнительная информация
Чип BK3231 — высокоинтегрированное однокристальное Bluetooth HID устройство. Он объединяет высокопроизводительный приёмопередатчик, многофункциональный процессор и профиль Bluetooth HID. Характеристики:
Рабочее напряжение от 2.8 до 3.6 В
Совместим с Bluetooth 2.1
Чувствительность -88 дБм для режима 1 Мбит/с и мощность передачи 2 дБм
HID v1.0
Тактовый кварц 16 МГц
Модуль SPP-CA на сайте Bolutek (другая компоновка, возможно мои — копии или они перенастроили прошивку Bolutek)
HC-06 zs-040 hc01.com v2.0
Выглядят как обычные HC-05/HC-06 на платах расширения zs-040, но имеют другую прошивку.
Используют оригинальную SMD Bluetooth-плату HC и (на момент написания) последнюю прошивку HC.
Продавались как HC-06, не имеют пинов STATE и EN
Чип CSR BC04 (BC417)
Bluetooth v2.0 + EDR
Прошивка hc01.comV2.0 — SLAVE-версия от Wavesen
Скорость по умолчанию: 9600
PIN по умолчанию: 1234
Имя по умолчанию: HC-06
Маленькие Bluetooth-платы имеют синий светодиод вверху слева
AT-команды должны быть в верхнем регистре, символы окончания строки nl/cr не требуются.
AT+LED выключает встроенный светодиод. Это синий светодиод на маленькой дочерней плате, а не красный на плате расширения. Первоначально я думал, что два светодиода связаны, но если выключить синий — красный продолжает мигать.
AT+LED0— выключить синий LED, возвращает LED ONAT+LED1— включить синий LED, возвращает LED ON
Другие команды можно найти в даташите.
Интересно, что есть команда ROLE:
AT+ROLE=Sпереводит модуль в SLAVE-режим, возвращает OK+ROLE:SAT+ROLE=Mпереводит модуль в MASTER-режим, возвращает OK+ROLE:M
Команды принимаются, и первоначально я думал, что модули можно использовать как HC-05, но обычные команды HC-05 не работают.
Загрузки
Даташит на английском (для прошивки 1.8, но команды те же)
HC-05 zs-040 hc01.com V2.1
Ещё одна версия HC-05 на плате расширения zs-040, но с оригинальной SMD Bluetooth-платой HC (можно определить по логотипу и синему светодиоду).
Аппаратная часть в основном такая же, как у HC-06. Разница в прошивке. HC-05 могут работать как MASTER или SLAVE.
Запускаются в режиме связи и для перехода в AT-режим нужно подать HIGH на пин 34. Это можно сделать, удерживая маленькую кнопку при включении. В AT-режиме скорость 38400.
В отличие от других модулей HC-05 на zs-040, подача HIGH на пин 34 после запуска, похоже, не переводит их в AT-режим. Хотя я не исследовал это тщательно.
Чип CSR BC04 (BC417)
Bluetooth v2.0 + EDR
Прошивка hc01.comV2.1 от Wavesen
Скорость связи по умолчанию: 9600
Скорость AT-режима: 38400
PIN по умолчанию: 1234
Имя по умолчанию: HC-05
Маленькие Bluetooth-платы имеют синий светодиод вверху слева
Пин EN: кратковременная подача LOW разрывает активное соединение и сбрасывает модуль
Пин STATE: переходит в HIGH при установлении соединения
AT-команды требуют символы окончания строки nl/cr и могут быть в верхнем или нижнем регистре.
Загрузки
Как и у HC-06, китайские даташиты более актуальны.
HC-05 FC-114 и HC-06 FC-114
Используют такую же плату расширения, как zs-040, но с другой маркировкой. Также имеют другие пины, припаянные между Bluetooth-модулем и платой расширения.
Мои модули имеют прошивку Bolutek v2.43, но модули FC-114 также доступны с прошивкой linvor/HC.
Подробнее:
HC-05 и HC-06 zs-040 Bluetooth-модули
Это были первые модули, которые я купил на плате расширения zs-040. С тех пор появились и другие модули на той же плате.
HC-06 работает на прошивке HC/linvor V1.8, а HC-05 — на прошивке HC 2.0-20100601.
Поскольку прошивки такие же, как у модулей ZG-B23090W, можно использовать руководства для ZG-B23090W.
Модули Bluetooth 4 / BLE
HM-10
Существует 2 версии HM-10: версия S и версия C. Есть небольшие различия в компонентах, и HM-10C не имеет контактных площадок вдоль нижней части (26 площадок вместо 34), но функционально они одинаковы. Подробнее здесь.
Мои HM-10C имеют маркировку Keyes.
HM-10S
HM-10C
По сравнению с другими Bluetooth-модулями пины расположены в обратном порядке, и есть пин BRK вместо EN или KEY.
Пин STATE подключён к встроенному светодиоду. Мигает при ожидании сопряжения или подключения. Горит постоянно при подключении и сразу после сопряжения.
Пин BRK позволяет сбросить соединение. При активном соединении кратковременная подача LOW на пин BRK разрывает соединение. При отсутствии соединения изменение BRK на HIGH или LOW не имеет эффекта.
Чип CC2540 или CC2541
Bluetooth 4.0
Прошивка HMSoft V540
Скорость по умолчанию: 9600
PIN по умолчанию: 000000
Имя по умолчанию: HMSOFT
AT-команды в верхнем регистре
HM-10 не любит символы окончания строки (
\r\n)
HM-10 — это модуль Bluetooth 4.0 BLE, несовместимый с Bluetooth 2.0 или 2.1. Полученная мной модель включает чип CC2541.
Подробнее см. HM-10 Bluetooth 4 BLE Modules.
HM-11 (без платы расширения)
Для будущего проекта мне нужен был максимально маленький Bluetooth-модуль, и HM-11 без платы расширения казался подходящим. Однако после экспериментов я решил остаться с Bluetooth v2 и использовать HC-05 без платы расширения.
В основном то же, что HM-10, но в маленьком корпусе.
Чип CC2540 или CC2541
Bluetooth 4.0
Прошивка HMSoft V540
Скорость по умолчанию: 9600
PIN по умолчанию: 000000
Имя по умолчанию: HMSOFT
AT-команды в верхнем регистре
HM-11 не любит символы окончания строки (
\r\n)
HM-11 — Bluetooth 4.0 BLE, несовместим с Bluetooth 2.0 или 2.1. Полученная мной модель включает чип CC2541.
Пины
Поскольку нет платы расширения, все пины работают на 3.3В.
Минимальные подключения для работы: TX, RX, VCC и GND. Я также добавил светодиод к пину 15 для визуального подтверждения включения модуля.
HM-11 функционально идентичен HM-10, подробнее в руководстве по HM-10.
BT05-A mini BLE Bluetooth V4.0 iBeacon
Похожие модули продаются как DX-BT05. Модуль основан на Bolutek CC41-A. Тот же форм-фактор, что и HM-11, но другая компоновка. BT05 иногда продаётся как HM-10 и считается его копией, однако я не рассматриваю их как копии — скорее как другую версию того же самого.
Пины расположены стандартно, есть пины STATE и EN.
Чип CC2540 или CC2541
Bluetooth 4.0
Прошивка: Firmware V3.0.6, Bluetooth V4.0 LE
Скорость по умолчанию: 9600
AT-команды могут быть в верхнем или нижнем регистре, требуют символы окончания строки (
\r\n)PIN по умолчанию: 000000
Модули отображаются как BT05-A
Bluetooth 4.0 BLE, несовместим с Bluetooth 2.0 или 2.1
AT-команды требуют символы окончания строки (\r\n). Прошивка от Bolutek — команда AT+HELP выводит список доступных команд.
Модули загружаются в AT-режиме и переходят в режим связи при подключении.
Эти модули меньше большинства других. И плата расширения, и Bluetooth-плата меньше аналогов. Модули включают маленькую кнопку, которую я ещё не исследовал.
Пин STATE: LOW без соединения, HIGH при активном соединении.
Пин EN: похоже, подключён к пину 16 на маленькой Bluetooth-плате (не подтверждено). Подача LOW разрывает активное соединение, но не отключает модуль.
Пины
Пин 16 (P0_6):
Когда модуль в спящем режиме, кратковременная подача LOW на пин 16 разбудит модуль, и он ответит +WAKE\r\nOK\r\n.
При активном соединении кратковременная подача LOW на пин 16 инициирует запрос на разъединение.
Спящий режим
Вход в спящий режим: AT+SLEEP\r\n. Модуль ответит + SLEEP\r\nOK\r\n.
Для пробуждения: отправьте строку из 80+ символов (строка не может содержать AT-команды) или кратковременно подайте LOW на пин 16. При успешном пробуждении модуль ответит +WAKE\r\nOK\r\n.
LED в master-режиме
Быстрое мигание (300 мс вкл, 300 мс выкл) — поиск/ожидание соединения
Горит постоянно — подключён
LED в slave-режиме
Медленное мигание (800 мс вкл, 800 мс выкл) — ожидание сопряжения
Горит постоянно — подключён
По заявлению продавца, совместим с Android 4.3+ (при поддержке BT 4.0/BLE), iPhone 4S+, iPad 3, 4 и iPad mini.
Если Android-устройство не находит модуль, возможно, он в режиме master/central. Переключите в slave/peripheral командой AT+ROLE0.
Последовательная связь: приложение HMBLE Terminal на Sony находит и подключается к BT-05A, последовательная связь работает как ожидалось.
ПК с Windows 8.1 и Bluetooth BLE находит и подключается. PIN не требуется.
Загрузки
AT-09 Bluetooth V4.0 CC2541
Также продаётся как Bluetooth v4.0 BLE CC2540/CC2541 iBeacon — ещё один модуль, похожий на HM-10. Имеет ту же прошивку, что и BT-05A выше.
Ещё один модуль, который я купил дважды из-за продажи под разными названиями.
Плата расширения zs-040
Чип CC2541
Скорость по умолчанию: 9600
PIN по умолчанию: 000000
AT-команды требуют символы окончания строки (
\r\n)Прошивка: Firmware V3.0.6, Bluetooth V4.0 LE
Прошивка от Bolutek, AT+HELP выводит список команд
Модули отображаются как BT05
Пин STATE: LOW обычно, HIGH при подключении
Пин EN: похоже, ничего не делает
Sony Z3 Compact: AT-09 отображается в Bluetooth как «BT05». При попытке сопряжения кратковременно появляется сообщение, затем возвращается к имени. B-BLE подключается без проблем и не требует PIN.
Huawei honor 6 Pro: не отображается в настройках Bluetooth. В приложении B-BLE показывается как «BT05» и подключается без проблем.
ПК с Windows подключается и не требует PIN.
Оригинал статьи: Martyn Currey — martyncurrey.com