Bluetooth-модули

Bluetooth модули

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

Начало работы

Определение модуля и его прошивки — ключ к успешной работе. Есть несколько способов получить информацию:

  1. Маркировка на плате или плате расширения

  2. Количество и тип пинов на плате расширения

  3. Тип Bluetooth

  4. Используемый чип

  5. Общение с модулем

Но первое, что нужно сделать — просто попробовать. Включите модуль, убедитесь, что он работает, и посмотрите, какое имя он транслирует. Если он транслирует «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, порядок пинов может быть обратным. Просто убедитесь, что используются указанные выше соединения.

Базовое подключение Bluetooth

Устранение неполадок

Если не удаётся установить связь с Arduino, попробуйте следующее:

  1. Проверьте подключения. Убедитесь, что Arduino TX подключён к BT RX и Arduino RX к BT TX.

  2. Проверьте номиналы резисторов.

  3. Проверьте порядок резисторов (резистор 1 кОм подключается к Arduino).

  4. Попробуйте разные скорости. Не все модули используют 9600 по умолчанию.

  5. Измените символы окончания строки (\r\n). Некоторые модули их требуют, другие — нет.

  6. Попробуйте верхний и нижний регистр.

  7. Ещё раз проверьте подключения.

Android-приложения

Модули Bluetooth 2.0/2.1 EDR

HC-06 (ZG-B23090W) Bluetooth 2.0 EDR

HC-06 ZG-B23090W

Основные характеристики 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

HC-05 ZG-B23090W

Эти модули имеют стандартную 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.

BT06 SPP-C

Используют плату расширения 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
SPP-CA Serial Monitor

AT+HELP выводит список доступных команд.

SPP-CA AT+HELP

Не уверен, полный ли это список или прошивка отличается от других «Bolutek Bluetooth v2.1» прошивок. Если загуглить, быстро найдутся даташиты с другим набором команд.

Пины

Пины SPP-CA HC-06

PO 5 MCU-INT переходит в HIGH при установлении соединения.

Светодиод мигает 800 мс вкл / 800 мс выкл в ожидании сопряжения или соединения. При установлении соединения светодиод горит постоянно.

Загрузки

Дополнительная информация

Чип BK3231 — высокоинтегрированное однокристальное Bluetooth HID устройство. Он объединяет высокопроизводительный приёмопередатчик, многофункциональный процессор и профиль Bluetooth HID. Характеристики:

  1. Рабочее напряжение от 2.8 до 3.6 В

  2. Совместим с Bluetooth 2.1

  3. Чувствительность -88 дБм для режима 1 Мбит/с и мощность передачи 2 дБм

  4. HID v1.0

  5. Тактовый кварц 16 МГц

HC-06 zs-040 hc01.com v2.0

Выглядят как обычные HC-05/HC-06 на платах расширения zs-040, но имеют другую прошивку.

zs-040 hc01.com v2.0

Используют оригинальную 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-платы имеют синий светодиод вверху слева

zs-040 hc01.com v2.0 крупный план

AT-команды должны быть в верхнем регистре, символы окончания строки nl/cr не требуются.

AT+LED выключает встроенный светодиод. Это синий светодиод на маленькой дочерней плате, а не красный на плате расширения. Первоначально я думал, что два светодиода связаны, но если выключить синий — красный продолжает мигать.

  • AT+LED0 — выключить синий LED, возвращает LED ON

  • AT+LED1 — включить синий LED, возвращает LED ON

Другие команды можно найти в даташите.

Интересно, что есть команда ROLE:

  • AT+ROLE=S переводит модуль в SLAVE-режим, возвращает OK+ROLE:S

  • AT+ROLE=M переводит модуль в MASTER-режим, возвращает OK+ROLE:M

Команды принимаются, и первоначально я думал, что модули можно использовать как HC-05, но обычные команды HC-05 не работают.

Загрузки

HC-05 zs-040 hc01.com V2.1

Ещё одна версия HC-05 на плате расширения zs-040, но с оригинальной SMD Bluetooth-платой HC (можно определить по логотипу и синему светодиоду).

zs-040 HC-05 hc01.com V2.1

Аппаратная часть в основном такая же, как у 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 при установлении соединения

zs-040 HC-05 hc01.com V2.1 крупный план

AT-команды требуют символы окончания строки nl/cr и могут быть в верхнем или нижнем регистре.

Загрузки

Как и у HC-06, китайские даташиты более актуальны.

HC-05 FC-114 и HC-06 FC-114

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-модули

HC-05 и HC-06 ZS-040

Это были первые модули, которые я купил на плате расширения 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-10S

HM-10C

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

Подробнее см. HM-10 Bluetooth 4 BLE Modules.

HM-11 (без платы расширения)

Для будущего проекта мне нужен был максимально маленький Bluetooth-модуль, и HM-11 без платы расширения казался подходящим. Однако после экспериментов я решил остаться с Bluetooth v2 и использовать HC-05 без платы расширения.

HM-11

В основном то же, что 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.

HM-11 крупный план

Пины

Поскольку нет платы расширения, все пины работают на 3.3В.

Пины HM-11 Схема пинов HM-11

Минимальные подключения для работы: TX, RX, VCC и GND. Я также добавил светодиод к пину 15 для визуального подтверждения включения модуля.

HM-11 на макетной плате (вид 1) HM-11 на макетной плате (вид 2)

HM-11 функционально идентичен HM-10, подробнее в руководстве по HM-10.

BT05-A mini BLE Bluetooth V4.0 iBeacon

Похожие модули продаются как DX-BT05. Модуль основан на Bolutek CC41-A. Тот же форм-фактор, что и HM-11, но другая компоновка. BT05 иногда продаётся как HM-10 и считается его копией, однако я не рассматриваю их как копии — скорее как другую версию того же самого.

BT-05A iBeacon

Пины расположены стандартно, есть пины 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

BT-05A Serial Monitor

AT-команды требуют символы окончания строки (\r\n). Прошивка от Bolutek — команда AT+HELP выводит список доступных команд.

BT-05A AT+HELP

Модули загружаются в AT-режиме и переходят в режим связи при подключении.

Эти модули меньше большинства других. И плата расширения, и Bluetooth-плата меньше аналогов. Модули включают маленькую кнопку, которую я ещё не исследовал.

Пин STATE: LOW без соединения, HIGH при активном соединении.

Пин EN: похоже, подключён к пину 16 на маленькой Bluetooth-плате (не подтверждено). Подача LOW разрывает активное соединение, но не отключает модуль.

Пины

Схема пинов DX-BT05

Пин 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.

BT-05A на Sony Z3 BT-05A в приложении B-BLE BT-05A на Huawei

Последовательная связь: приложение HMBLE Terminal на Sony находит и подключается к BT-05A, последовательная связь работает как ожидалось.

BT-05A связь BT-05A HMBLE Terminal

ПК с Windows 8.1 и Bluetooth BLE находит и подключается. PIN не требуется.

BT-05A на ПК BT-05A подключён к ПК

Загрузки

AT-09 Bluetooth V4.0 CC2541

Также продаётся как Bluetooth v4.0 BLE CC2540/CC2541 iBeacon — ещё один модуль, похожий на HM-10. Имеет ту же прошивку, что и BT-05A выше.

Ещё один модуль, который я купил дважды из-за продажи под разными названиями.

AT-09 BT05
  • Плата расширения 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: похоже, ничего не делает

AT-09 BT-05 подключение AT-09 BT-05 Serial Monitor

Sony Z3 Compact: AT-09 отображается в Bluetooth как «BT05». При попытке сопряжения кратковременно появляется сообщение, затем возвращается к имени. B-BLE подключается без проблем и не требует PIN.

AT-09 на Sony Z3

Huawei honor 6 Pro: не отображается в настройках Bluetooth. В приложении B-BLE показывается как «BT05» и подключается без проблем.

AT-09 на Huawei

ПК с Windows подключается и не требует PIN.

BT05 подключён к ПК

Оригинал статьи: Martyn Currey — martyncurrey.com