HM-10 как iBeacon

Примечание

Перевод статьи HM-10 As An iBeacon с сайта Martyn Currey.

Что такое iBeacon

Можно думать об iBeacon как об электронном маяке. Он просто отправляет периодические сигналы, сообщая окружающим о своём присутствии. Когда приложение на мобильном устройстве постоянно обнаруживает сигнал, оно может реагировать определённым образом. Например, в магазине может быть предложена специальная скидка, когда вы подходите к паре обуви. Или могут быть предложены подходящие стулья, когда вы подходите к дивану. Или свет включается, когда вы входите в комнату. Сами по себе iBeacon не умные — они полагаются на внешнее устройство, которое реагирует на получение сигнала. Конечно, это означает, что устройство должно искать сигнал.

Сигнал iBeacon состоит из «объявлений» (advertisements). Это небольшие пакеты данных, отправляемые через регулярные интервалы. Объявление имеет стандартный формат и включает 4 части: UUID, Major, Minor и мощность передачи (transmit power).

UUID:

Это 16-байтовое значение или строка. UUID обычно уникален для производителя или компании. Также может использоваться для группировки связанных маяков. Например, все маяки в одном магазине могут иметь одинаковый UUID.

Major:

Это 2-байтовое значение или строка, которое может использоваться для создания небольшой группы более тесно связанных маяков. Например, отдел мебели.

Minor:

Ещё одно 2-байтовое значение или строка, предназначенное для идентификации отдельных маяков. Может использоваться для определения, перед каким диваном стоит покупатель.

Мощность передачи / Измеренная мощность (Transmit Power / Measured Power):

Это не мощность сигнала, измеренная мобильным устройством. Это мощность сигнала, которая должна быть на расстоянии 1 м от маяка. Используя значение мощности передачи вместе с фактической мощностью сигнала, мобильное устройство может вычислить расстояние до маяка. В реальности мощность передачи варьируется от производителя к производителю и иногда не очень точна, особенно на дешёвых модулях вроде HM-10. Мой мобильный телефон находится примерно в 15 см от HM-10, а сканер маяков говорит, что HM-10 на расстоянии около метра… К счастью, значение TX можно изменить с помощью команды AT+MEAS.

Превращение HM-10 в iBeacon

В данном примере я использую HM-10 с прошивкой V702. Это значит, что скорость 115200 и можно использовать символы конца строки в AT-командах.

Чтобы превратить HM-10 в iBeacon, достаточно отправить «AT+IBEA1». Это переводит HM-10 в режим iBeacon с настройками по умолчанию:

Включение режима iBeacon

Сканирование iBeacon

Для сканирования iBeacon нужно мобильное устройство и приложение для сканирования маяков. Я использую Android с iBeacon & Eddystone Scanner от flurp laboratories, но существует множество других приложений.

Сканер iBeacon

На первой странице отображаются все найденные iBeacon. На второй странице — более детальная информация для каждого iBeacon. Здесь мы видим HM-10 с настройками по умолчанию:

  • UUID: 74278BDA-B644-4520-8F0C-720EAF059935

  • Major: 65504 (0xFFE0)

  • Minor: 65505 (0xFFE1)

  • TX: -59 dBm

Все эти параметры можно изменить при необходимости.

Команды iBeacon для HM-10

Команда

Описание

Подробности

AT+IBEA1

Включить режим iBeacon

AT+IBEA0

Выключить режим iBeacon

AT+IBEA?

Запрос режима iBeacon

Возвращает OK+Get:1, если HM-10 в режиме iBeacon, и OK+Get:0, если нет.

AT+MARJxxxxxx

Установить значение Major

AT+MARJ0xFFE0 устанавливает Major в 0xFFE0. Допустимые значения: 0x0001–0xFFFE.

AT+MARJ?

Запрос значения Major

Возвращает OK+Get:0xFFE0 (или текущее значение Major).

AT+MINOxxxxxx

Установить значение Minor

AT+MINO0xFFE1 устанавливает Minor в 0xFFE1. Допустимые значения: 0x0001–0xFFFE.

AT+MINO?

Запрос значения Minor

Возвращает OK+Get:0xFFE1 (или текущее значение Minor).

AT+MEASxxxx

Установить значение TX/мощности передачи

AT+MEAS позволяет откалибровать измеренную мощность. По умолчанию: 0xC5. Допустимые значения: 0x01–0xFF.

Установка нового UUID выполняется по частям. UUID делится на 4 части, и каждая часть изменяется отдельно с помощью AT+IBE0, AT+IBE1, AT+IBE2 и AT+IBE3.

UUID iBeacon по умолчанию: 74278BDA-B644-4520-8F0C-720EAF059935. Он разделяется следующим образом:

  • Часть 1 = 74278BDA

  • Часть 2 = B6444520 (без дефиса)

  • Часть 3 = 8F0C720E (без дефиса)

  • Часть 4 = AF059935

Команда

Описание

Подробности

AT+IBE0xxxxxxxx

Установить UUID (часть 1)

AT+IBE012345678 устанавливает первую часть UUID в 12345678.

AT+IBE1xxxxxxxx

Установить UUID (часть 2)

AT+IBE122334455 устанавливает вторую часть UUID в 22334455.

AT+IBE2xxxxxxxx

Установить UUID (часть 3)

AT+IBE2ABCDABCD устанавливает третью часть UUID в ABCDABCD.

AT+IBE3xxxxxxxx

Установить UUID (часть 4)

AT+IBE3EEFFEEFF устанавливает четвёртую часть UUID в EEFFEEFF.

AT+IBE0?

Запрос первой части UUID

Возвращает OK+Get:0x74278BDA (или текущее значение).

AT+IBE1?

Запрос второй части UUID

Возвращает OK+Get:0xB6444520 (или текущее значение).

AT+IBE2?

Запрос третьей части UUID

Возвращает OK+Get:0x8F0C720E (или текущее значение).

AT+IBE3?

Запрос четвёртой части UUID

Возвращает OK+Get:0xAF059935 (или текущее значение).

Дополнительные команды

Команда

Описание

Подробности

AT+ADVI?

Запрос интервала объявлений

Возвращает OK+Get:x, где x от 0 до F.

AT+ADVIx

Установить интервал объявлений

x от 0 до F

Значения интервалов:

  • 0: 100 мс

  • 1: 252.5 мс

  • 2: 211.25 мс

  • 3: 318.75 мс

  • 4: 417.50 мс

  • 5: 546.25 мс

  • 6: 760.00 мс

  • 7: 852.50 мс

  • 8: 1022.5 мс

  • 9: 1285 мс

  • A: 2000 мс

  • B: 3000 мс

  • C: 4000 мс

  • D: 5000 мс

  • E: 6000 мс

  • F: 7000 мс

Значение по умолчанию для HM-10: 0 (100 мс). Использование более медленного интервала снижает энергопотребление.

Команда

Описание

Подробности

AT+ADTY?

Запрос типа объявлений

Возвращает OK+Get:x, где x от 0 до 3.

AT+ADTYx

Установить тип объявлений

x от 0 до 3

Значения типов:

  • 0: Advertising ScanResponse, Connectable (подключаемый)

  • 1: Разрешить подключение только последнему устройству за 1.28 секунд

  • 2: Только Advertising и ScanResponse

  • 3: Только Advertising

По умолчанию: 0.

Вариант 3 (только Advertising) отключает соединения и снижает энергопотребление. Это важно при использовании iBeacon на батарейках. В режимах iBeacon 0 и 1 HM-10 остаётся подключаемым и данные могут передаваться через FFE1 как обычно.

Команда

Описание

Подробности

AT+DELOx

Установить режим развёртывания iBeacon

Возвращает OK+DELOx, где x = 1 или 2. 1: трансляция и сканирование. 2: только трансляция.

Вариант 2 переводит HM-10 в режим только трансляции. Это значительно экономит энергию, и этот вариант следует использовать при создании простого iBeacon. При использовании AT+DELO2 HM-10 останется в режиме только трансляции до следующего цикла питания (для сброса необходимо отключить питание).

Энергосберегающий iBeacon

Для создания энергосберегающего iBeacon:

  • Уменьшите интервал объявлений насколько возможно с помощью AT+ADVIx.

  • Сделайте его неподключаемым с помощью AT+ADTY3.

  • Установите режим только трансляции с помощью AT+DELO2.

При настройке нового iBeacon рекомендуется перезагрузить HM-10 после ввода всех команд с помощью AT+RESET.