GreenElectronics

О модуле HM-10

Существуют различные версии протокола Bluetooth. Модуль HM-10 поддерживают протокол Bluetooth Low Energy 4.0, благодаря чему его можно подключить к смартфону на операционной системе Android или iOS (iPhone).

Внешний вид модуля показан на рисунке 1. Модуль построен на базе микроконтроллера CC2541F256, во внутреннюю память которого уже записана управляющая программа. Используя команды через UART интерфейс (RX, TX) можно передавать/принимать данные через Bluetooth, а также управлять выводами PIO0 – PIO11. На рисунке черным цветом указано наименование выходов модуля, а синим, наименование соответствующих им выходов микроконтроллера.

Распиновка модуля HM-10

Рисунок 1 - Распиновка модуля HM-10
Модуль имеет следующие технические характеристики:

Модуль распаян на переходной плате, задача которой понижать входное питающее напряжение и уровни сигналов RX, TX до 3,3 В, благодаря чему HM-10 можно безопасно подключать к Arduino. На плате установлен светодиод (LED), который мигает при ожидании соединения с частотой 1 Гц и светится постоянно, когда соединение установлено. На выводе STATE повторяется сигнал светодиода – меандр с частотой 1 Гц при отсутствии соединения и логическая единица в случае, когда соединение установлено.

Назначение выводов модуля сведено в таблице:

Сигнал Описание
BRK/EN принудительный разрыв соединения (подтяжка к земле, работает не на всех модулях)
VCC внешнее питание 3,3…5 В
GND общая шина (земля)
TX передатчик USART модуля, подключается на RX управляющей платы
RX приёмник USART модуля, подключается на TX управляющей платы
STATE состояние соединения HIGH – подключено (светодиод постоянно светится) меандр или LOW – отключено (светодиод мигает один раз в секунду)

В зависимости от ваших задач, модуль можно подключить к компьютеру, плате Arduino, мобильному телефону или настроить передачу данных между двумя модулями. Схема взаимодействия в общем виде показана на рисунке. Ведущее и ведомое устройство могут меняться исходя из задачи, модуль HM-10 лишь обеспечивает беспроводной канал связи.

Рисунок 2 - Варианты подключения модуля HM-10

Подключение к компьютеру

Для подключения модуля HM-10 к компьютеру потребуется преобразователь USB-UART, например на базе микросхемы FT232 (или любой аналогичной). Схема подключения показана на рисунке.

Рисунок 3 - Подключение модуля HM-10 к компьютеру

Преобразователь USB-UART после установки драйверов отобразится в диспетчере устройств ПК как виртуальный COM-порт. Управление модулем осуществляется через набор AT-команд, полный перечень которых можно найти в документации от производителя модуля jnhuamao.cn. Для проверки модуля можно воспользоваться списком наиболее часто используемых команд.

Команда Описание
AT Команда тестирования и команда разрыва соединения. Если модуль не подключен по радио к другому устройству, то он ответит "OK". Если у модуля в настоящий момент активно соединение по радио с другим устройством, то соединение будет закрыто. Если активна настройка оповещения, то модуль ответит "OK+LOST".
AT+NAME? Опрос имени устройства. Модуль вернет имя модуля, которое используется в вещании (такое как HMsoft).
AT+NAMEnewname Меняет имя модуля. Например, команда AT+NAMEmyBTmodule поменяет имя устройства на myBTmodule. Максимальная длина нового имени может быть 12 символов.
AT+ADDR? Опрашивает MAC-адрес модуля. Вернет адрес в виде 12 шестнадцатеричных символов, например "OK+ADDR:606405D138A3".
AT+VERS? Опрашивает номер версии firmware. Пример возвращенного номера версии: "HMSoft V710".
AT+RESET Перезапускает модуль. Модуль ответит "OK+RESET". Во время перезапуска активное соединение будет закрыто.
AT+RENEW Восстанавливает заводские настройки по умолчанию, быстрый и простой способ сбросить все настройки.
AT+BAUD? Запрашивает скорость обмена данными через UART. Эта скорость относится только к обмену данными с хостом, таким как Arduino, и не относится к скорости передачи данных по радио между модулями. В ответ на эту команду вернет значение от 0 до 8, например "OK+Get:0". Числа обозначают ряд скоростей: 0 – 9600, 1 – 19200, 2 – 38400, 3 – 57600, 4 – 115200, 5 – 4800, 6 – 2400, 7 – 1200, 8 – 230400. Настройка скорости по умолчанию 0 – 9600. Помните, что для обоих устройств, общающихся через UART (Arduino и HM-10) должна быть настроена одинаковая скорость обмена. Причиной мусорных символов часто бывает несоответствие настроек скорости.
AT+BAUDx Устанавливает скорость обмена данными через UART. Скорость задается числом x в диапазоне от 0 до 8 (см. команду AT+BAUD?). Максимальная скорость обмена для Arduino составляет 115200, так что если Вы установите 230400, то не сможете общаться с модулем.
AT+NOTIx Устанавливает состояние оповещения. Если оповещения включены, то HM-10 будет отвечать на команды сообщением подтверждения, или будет посылать сообщение при определенных событиях, например "OK" в ответ на команду AT и "OK+LOST" когда соединение разорвано. AT+NOTI0 выключает оповещения, AT+NOTI1 включает оповещения.
AT+NOTI? Опрашивает состояние оповещения. Возвратит 0 (оповещения выключены) или 1 (оповещения включены).
AT+PIN? Опрашивает номер PIN, использующийся для pairing. Возвратит номер из 6 цифр наподобие "OK+Get:123456". Вместо набора символов 123456 в этом примере может быть текущий установленный PIN.
AT+ROLE? Опрашивает текущую роль устройства, Master (главное устройство) или Slave (подчиненное устройство). Возвратит 0 (Slave или Peripheral) или 1 (Master или Central). Установка по умолчанию 0 (Slave).
AT+ROLEx Устанавливает роль устройства, x = 0 или 1. Используйте команду AT+ROLE0 для смены режима модуля на Slave/Peripheral, в ответ на эту команду модуль возвратит "OK+Set:0". Для смены режима на Master/Central используйте команду AT+ROLE1, модуль возвратит "OK+Set:1". В зависимости от версии firmware может потребоваться сброс, чтобы новая роль вступила в силу.
AT+IMME? Опрашивает режим запуска соединения. Возвратит 0 или 1. 0 означает соединяться немедленно (подразумевается, что ранее устанавливалось это соединение), 1 означает ждать команды, которая запускает соединение (AT+START, AT+CONN, AT+CONL). Установка по умолчанию 0 (соединяться при запуске модуля, т.е. при включении питания).
AT+IMMEx Устанавливает режим запуска соединения. AT+IMME0 устанавливает автоматическое соединение при старте(*), AT+IMME1 установит режим соединения вручную. Команда AT+IMMEx часто используется вместе с AT+ROLEx. AT+IMMEx может потребовать сброс, чтобы её установка вступила в силу.
AT+RESET Перезапускает (сбрасывает) модуль.
AT+RENEW Устанавливает у модуля заводские настройки по умолчанию.
Примечание

Примечание. Если не было предыдущих соединений, HM-10 автоматически подключится к любому другому доступному HM-10 (обычно к тому, у которого сигнал сильнее). HM-10 (по умолчанию) запоминает адрес последнего модуля, к которому он было подключен, и если он в эфире, то ранее сохраненное соединение имеет приоритет, когда HM-10 повторно пытается поднять автоматическое соединение.

Отправлять команды удобно при помощи терминальной программы HMComAssistant V1.5 от производителя модуля, которую можно скачать по ссылке. После подключения к COM порту выбираем нужную команду в панели, расположенной справой стороны программы. В нижней части окна жмем кнопку «Send» и убеждаемся, что от модуля приходит ответ на запрос.

Рисунок 4 - Отправка AT команд на модуль

На рисунке показан ответ от модуля после отправки команды AT+VERS? В данном случае модуль имеет версию прошивки V710.

Подключение к смартфону

Для подключения к модулю со смартфона можно использовать такие приложения как LightBlue, nRF Connect, BLE Scanner. С другой стороны модуль необходимо подключить к ПК (см. предыдущий раздел) или Arduion (см. следующий раздел). Схема подключения в общем виде будет выглядеть так:

Рисунок 5 - Подключение HM-10 к смартфону

Продемонстрируем обмен данными со смартфоном при помощи приложения BLE Scanner. После скачивания и установки приложения на смартфон запускаем его и просматриваем обнаруженные Bluetooth устройства. Наименование модуля по умолчанию HM-Soft, выбираем его нажав кнопку «CONNECT».

Рисунок 6 - Сканирование BLE устройств

В случае успешного подключения светодиод на модуле перестает мигать, а в приложении отобразится служба CUSTOM SERVICE, с помощью которой можно передавать и принимать данные. Дополнительно необходимо включить уведомления Bluetooth, нажав пиктограмму N.

Рисунок 7 - Включение уведомлений

Передадим данные со смартфона на модуль, в приложении BLE Scanner необходимо нажать пиктограмму W и ввести любой текст, например слово «Hello».

Рисунок 8 - Передача сообщения на модуль HM-10

После нажатия кнопки ОК данные будут переданы через Bluetooth и отобразятся в терминале.

Рисунок 9 - Прием сообщения и передача с модуля

Аналогично, в поле отправки терминала вводим произвольный текст, например «I hear you» и жмём кнопку Send. Отправленные данные должны отобразиться в приложении.

Рисунок 8 - Прием сообщения на смартфон

Подключение к Arduino

Подключая модуль HM-10 к Arduino или иной отладочной плате, появляется возможность создавать собственные программы и управлять ими со смартфона. Возможная схема подключения показана на рисунке.

Рисунок 11 - Схема подключения модуля HM-10 к Arduino

Продемонстрируем работу схемы при помощи простого скетча. На плате Arduino UNO имеется светодиод, подключенный к выводу 13, будем управлять им при помощи команд «1» и «2». Подключим Arduion к ПК и загрузим следующий код.


                #include <SoftwareSerial.h>  
                SoftwareSerial HM10(2, 3);               // RX = 2, TX = 3
                char appData;  
                String inData = "";
                void setup()
                {
                  Serial.begin(9600);
                  Serial.println("HM10 serial started at 9600");
                  HM10.begin(9600);                     // set HM10 serial at 9600 baud rate
                  pinMode(13, OUTPUT);                  // onboard LED
                  digitalWrite(13, LOW);                // выключаем светодиод
                }
                void loop()
                {
                  HM10.listen();                        // слушаем HM10 port
                  while (HM10.available() > 0) {        // если HM10 что то передает, то считываем данные
                    appData = HM10.read();
                    inData = String(appData);           // сохраняем данные в строковой переменной
                    Serial.write(appData);
                  }

                  if (inData == "1") {
                    Serial.println("LED ON");
                    digitalWrite(13, HIGH);             // включаем светодиод
                  }
                  else if (inData == "2") {
                    Serial.println("LED OFF");
                    digitalWrite(13, LOW);              // выключаем светодиод
                  }

                  inData ="";
                  delay(500);
                }

            

Далее при помощи смартфона подключаемся к модулю HM-10 через Bluetooth (см. предыдущий раздел) и убеждаемся, что при передаче цифры «1» светодиод включается, а при передаче цифры «2» - выключается.

Связь между модулями

Два модуля HM-10 можно связать друг с другом. При этом первый будет выступать в качестве ведущего (Central) устройства, а второй – ведомого (Peripheral). Возможная схема подключения показана на рисунке.

Рисунок 12 - Связь двух HM-10 через Bluetooth

Так как один из модулей будет исполнять роль ведущего, его необходимо перенастроить. Также необходимо узнать MAC адрес ведомого, который будет использоваться для установления соединения. Общая последовательность действий представлена в таблице.

Действие Пример Состояние связи
Запросить через UART у модуля №2 MAC адрес: AT+ADDR? OK+ADDR:2CAB33DFFB93 не подключен, мигает светодиод
Перевести модуль №1 в роль ведущего (Central): AT+ROLE1 OK+Set:1
Настроить модуль №1 на режим ручного подключения: AT+IMME1 OK+Set:1
TX передатчик USART модуля, подключается на RX управляющей платы
Установить соединение между модулями, выдав на модуль №1 команду: AT+CON2CAB33DFFB93 OK+CONNA соединение установлено, светодиод постоянно светится

В случае успешного соединения,светодиоды на обоих модулях будут постоянно светится, а данные переданные с терминала первого ПК будут приняты териналом второго ПК.

help@greenelectronics.ru © 2025