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 нужно мобильное устройство и приложение для сканирования маяков. Я использую Android с iBeacon & Eddystone Scanner от flurp laboratories, но существует множество других приложений.
На первой странице отображаются все найденные 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.