Рынок маячков: обзор beacon-сервисов в России. Концепция Physical web. Bluetooth маячки. Сравнение стандартов iBeacon, AltBeacon и Eddystone

  • 05.05.2019
  • Разработка мобильных приложений
  • У нас уже есть умные термостаты, весы, камеры, телевизоры, холодильники, датчики, замки и тд. С каждыми днём на рынке появляется всё больше и больше умных устройств от самых разных производителей, притом некоторые из них действительно хороши и полезны. Но как сегодня выглядит наше взаимодействие с такими устройствами, например, первоначальная настройка и мониторинг? В подавляющем большинстве случаев, у каждого производителя есть приложение, с помощью которого мы и можем взаимодействовать с его продуктами. На первый взгляд выглядит нормально, так ведь?

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

    Если мы верим в закон Мура, то маленькие, недорогие, подключенные устройства скоро ворвутся в нашу жизнь, наполняя наши дома, рабочие и общественные места. В настоящее время большинство умных устройств для интернета вещей требует установки специального приложения. Такое узкое решение просто не масштабируется до взаимодействия со всем множеством умных устройств. Я не имею ничего против приложений, приложения это здорово! Но их много и то взаимодействие, которое они нам предлагают не всегда удобно.

    Концепция Physical Web

    Physical Web - это попытка построить мост между цифровым и физическим миром, который позволяет нам расширить суперсилу web - URL - для повседневного использования. В своей основе, Physical Web является службой обнаружения: умный объект передает соответствующий URL-адрес, который могут принимать любые устройства поблизости, например ваш смартфон или планшет. Эта простая возможность транслировать обычный URL открывает новые, захватывающие способы взаимодействия.

    Видео o Physical web от Scott Jenson. Рекомендую посмотреть.




    Представьте, что вы можете легко взаимодействовать со всеми умными устройствами в вашем доме, без труда их настроить или получить диагностические данные. Подойдя к остановке вы можете узнать когда прибудет ближайший автобус, сев в него, вы узнаете информацию по маршруту, время до следующей остановки. В торговом центре вы узнаете об акциях и скидках. Подойдя к торговому автомату, вы сможете купить и получать товар, не уговаривая его принять ваши деньги и даже не прикасаясь к нему. Вы можете купить билет в музей или кино, а подойдя к постеру или предмету экспозиции получить о нем дополнительную информацию. Можно арендовать машину или велосипед, оплатить парковку, совершив меньше ненужных действий. Или занять очередь. Занять очередь, Карл! Мы же в России так любим очереди. Даже если вы окажетесь в другом городе, для вас ничего не изменится.

    Всё это возможно без установки кучи ненужных приложений, вам понадобиться одно единственное приложение, для Android это - Physical Web Browser , а на iOS - данный функционал встроен в Google Chrome . Google Chrome с поддержкой Physical web для Android сейчас находится в стадии beta. Так же поддержку Physical Web в скором времени получит Opera c переходом на кодовую базу Chrome 49.

    Physical Web является естественным решением, предлагающим взаимодействие по требованию без дополнительных усилий и накладных расходов в виде установки приложений. Это совершенно новый User eXperience , предлагающий взаимодействие по требованию, только тогда когда это действительно нужно пользователю. Вы просто нажимаете на ссылку и получаете то, что вам нужно. Никаких Push уведомлений, вибраций или чего то подобного.
    Physical Web экономит силы, средства и время на разработку приложений, т.к. не нужно писать приложение под каждую платформу, достаточно сделать одно, адаптивное Web приложение.

    Пример того как это выглядит:



    Physical Web еще не готов до конца и не является продуктом Google . Это экспериментальный проект, находящийся на ранней стадии и разрабатываемый Google в открытом виде, как и все вещи, связанные с интернетом.

    Устройство маячков

    Как вы уже могли легко догадаться, источником так нужного нам URL являются маячки (англ. Beacon - маяк). Маячки представляют собой простейшее устройство, которое с заданной частотой транслирует какие-то данные, так называемый advertisement packet , с помощью технологии Bluetooth v4 или Bluetooth Low Eenergy(BLE) .

    Для тех, кто переживает за приватность: маячки принципиально не могут вас отслеживать, они умеет только транслировать сообщения и ничего о вас не знают. Им всё равно, один человек получает от них пакеты или 30.

    Ниже, как пример, представлен маячок от компании Estimote в разобранном виде:


    Производителей устройств сейчас достаточно, поэтому на рынке представлены самые различные реализации как по размеру, форм-фактору, так и по назначению. Есть, например, и промышленные реализации, способные работать на улице и питаться от постоянного источника энергии. Цены на готовые устройства также варьируются.

    Далеко не полный пример разнообразия устройств:



    Маячки, которые у меня есть в данный момент:



    В чем же концептуальная разница между маячками, если не брать в расчет цену и исполнение? Разница заключается в формате транслируемых сообщений.

    Сейчас есть три основных стандарта:

    • iBeacon
    • AltBeacon
    • Eddystone
    На самом деле есть еще стандарты, например PayPal beacon или какие-то свои реализации от вендоров, например gimbal и estimote, но именно перечисленные выше являются на данный момент основными, доминирующими стандартами.

    Большинство устройств сейчас умеют транслировать сообщения в любом из этих трех форматов, а некоторые даже одновременно в нескольких. Давайте рассмотрим их чуть подробнее чтобы понять, в чем между ними разница.

    iBeacon

    Первым стандартом был iBeacon , он был представлен компанией Apple inc . в 2013 году. Основным его назначением было применение в области розничной торговли и мобильного маркетинга, а также для локального позиционирования внутри помещений.

    Стандарт iBeacon предполагает трансляцию только 1 типа advertisment packet , который состоит из следующих частей:

    • UUID - 16-байтный уникальный идентификатор группы маяков;
    • Major
    • Minor - 2-байтное беззнаковое значение;
    • Measured Power - значение уровня сигнала в 1 м от передатчика. 8-битное знаковое целое - значение показателя уровня принимаемого сигнала (RSSI - Received Signal Strength Indicator), которое используется для определения близости (proximity) маяка к приёмнику (мобильному устройству). Измеряется в dBm.

    iBeacon frame:


    Устройство или iOS сами по себе эти пакеты ничего не значат, их должно обрабатывать приложение. В каждом отдельном случае, для каждого сценария использования пользователю придется ставить отдельное приложение. Количество UUID с которым может работать приложение ограничено. Среди недостатков стандарта стоит отметить его проприетарность, отсутствие нативной поддержки на платформе Android и то, что он умеет транслировать только один тип advertisment packet .

    AltBeacon

    Консорциумом RadiusNetwork"s был представлен альтернативный и открытый стандарт AltBeacon . Он изначально разрабатывался как интероперабельный и обратно совместимый со стандартом iBeacon . AltBeacon обладает почти таким же функционалом что и iBeacon , хотя и позволяет передать чуть больше полезной информации.

    AltBeacon frame:


    Из 28 байт Advertisment packet , нам доступны 25 байт которые состоят из:
    • MFG ID - 2 байта. Идентификатор производителя устройства
    • BEACON CODE - 2 байта. Код Advertisment packet
    • BEACON ID - 20 байт. Уникальный идентификатор устройства
    • MFG RSVD - 1 байт. Специальное зарезервированное поле (в основном используется для Bluetooth assigned numbers)
    В свою очередь BEACON ID может быть представлен как у iBeacon , т.е. 16-byte id1 + 2-byte id2 + 2-byte id3 . Подробнее со спецификаций протокола можно ознакомиться . Так как это по сути открытый аналог iBeacon , то и недостатки у него такие же.

    Eddystone



    В 2015 году компанией Google был представлен новый и полностью открытый стандарт Eddystone , который эволюционировал из проекта URIbeacon . Как и 2 других стандарта, Eddystone - это спецификация протокола, которая определяет формат сообщений BLE . Eddystone включает весь опыт других стандартов и призван быть более гибким и устранить недостатки присущие ibeacon и AltBeacon

    В отличие от них, он умеет рассылать уже 3 типа пакетов:

    • Eddystone-UID - 16-байтовый идентификатор устройства, который состоит из 10-байт namespaceId и 6-байт instanceId .
    • Eddystone-URL - транслирует URL используя сжатый формат кодирования. Любой длинный URL можно сократить с помощью Google URL Shortener (https://goo.gl/), что бы поместится в ограниченный 18 байтами Advertisment packet . После декодирования, URL может быть использован любым клиентом с доступом к интернету. Например, если маячок транслирует URL: https://goo.gl/Aq18zF , то любой клиент, который получил этот пакет может посетить этот URL (https://goo.gl/Aq18zF).
    • Eddystone-TLM - телеметрия, доступны такие данные как напряжение аккумуляторной батареи, температура устройства, количество отправленных пакетов с момента включения и время с момента включения.

    Eddystone frame:


    Eddystone-URL является основой Physical Web и позволяет легко обнаруживать и взаимодействовать с окружающим нас веб-содержимым. Так как он транслирует обычный URL нам не нужно ничего кроме браузера. Никаких специальных приложений, библиотек или SDK!
    Для случаев когда нужно сделать не публичное, обычное приложение для внутреннего или специального использования, Eddystone-URL не подходит, мы должны использовать Eddystone-UID.

    Как я уже писал выше, есть маячки, которые позволяют одновременно транслировать несколько видов пакетов, например iBeacon и Eddystone-URL или Eddystone-UID и Eddystone-URL. Как и для чего это можно использовать я расскажу дальше.

    Как это выглядит на примере маячков RadBeacon USB, RadBeacon Dot и iBKS 105:


    Работа с маячками и реализация Physical Web

    В самом простом случае, для реализации Physical Web, достаточно ble-маячка с поддержкой Eddystone. Разные модели маячков инициализириуется и конфигурируютсятся по разному. Можно легко развернуть 5, 10, или, скажем 100 маячков. Вы просто назначаете им URL, потом, если это необходимо, меняете только сам контент. Но если вам нужно развернуть большое количество разных устройств, от разных производителей на достаточно большой площади (торговый центр, аэропорт, район города или даже целый город), при том что часть маячков могут быть в постоянном движении, например в транспорте. В таком случае у вас возникают некоторые проблемы, но решения есть. Некоторые производители предоставляют свои облачные решения и CMS для управления маячками, например Estimote , Kontakt.io , Blesh , Phy.net и LightCurb . Estimote и Kontakt.io так же предоставляют на github свои SDK .

    На мой взгляд, наиболее универсальным и простым инструментом для решения подобных задач является (Google"s beacon platform )[https://developers.google.com/beacons/ ]. Google"s beacon platform позволяет легко мониторить и управлять сразу всеми устройствами. Платформа позволяет работать с разными маячками от разных производителей, предоставляй разработчикам единый, простой и гибкий инструмент, о котором я подробно расскажу в отдельной статье.
    Мы можем добавить в уже имеющееся, популярное у пользователей приложение возможность работы с маячками, например для навигации или получения каких то дополнительных данных. Понятно что в этом случае Eddystone-URL не подходит, нам нужно использовать Eddystone-UID. Но благодаря тому что некоторые маячки умеют рассылать сразу два типа пакетов одновременно, например Eddystone-URL или Eddystone-UID, мы можем обеспечить пользователей с приложением дополнительными данными, а пользователей без приложения, самим приложением.
    В случае когда необходимо сделать не публичное приложение для специального или внутреннего использования, мы просто используем Eddystone-UID.

    Маячки могут использоваться для навигации, при том не только внутри помещений(indoor). На первый взгляд эта задача выглядит на такой уж сложной, ведь мы можем определять расстояние до маячка с помощью RSSI. Но даже в идеальных условиях значение сигнала скачет. Связанно это с особенностями антенны, распространения волн, зашумленностью и преградами. В целом, приблизительно, вы можете определить расстояние и кому то этого достаточно. Но если вам нужны более точные показания, то придётся применять триангуляцию сигнала, фильтр Калмана и т.д. В целом, на хабре было написано достаточно про особенности indoor навигации, вот неплохие статьи.

    "Так. Ключи где? Ага, в кармане. Ноутбук? Да, на месте. Телефон! Ага, один здесь, другой здесь. Ключи! Точно, где ключи? Зарядка для ноутбука! Да где же она?" - примерно так строится мой диалог с самим собой при выходе из дома. Чтобы не потерять различные мелочи и не расстраиваться по этому поводу, вам может пригодиться устройство с типично американским названием .

    Устройство представляет собой Bluetooth-маячок с липкой задней поверхностью. Размер пластикового корпуса схож с пятирублевой монетой, однако толщина выше. В маячке, которых в зависимости от комплекта может быть от 2 до 10 (комплекты по 2, 4, 6 и 10 штук), имеется все необходимое для дальнейшего обнаружения — писклявый динамик, не услышать который невозможно, светодиод, клейкая поверхность снаружи и модуль Bluetooth внутри.

    Характеристики Stick-n-Find:

    Диаметр: 24 мм
    Толщина: 4 мм
    Вес: 4,5 гр.
    Связь: Bluetooth 4.0 Low Energy
    Радиус действия: порядка 30 метров в зависимости от окружения
    Батарея: CR2016, срок службы до 1 года

    Для того, чтобы начать пользоваться Stick-n-Find, необходимо загрузить одноименное приложение из или Google Play, в котором можно производить все необходимые поисковые мероприятия и обновлять программное обеспечение маячков. Серьезно, при первом соединении маячка и смартфона произошел апдейт этого гаджета.

    В приложении присутствует радар — на нем будут отображаться все находящиеся вокруг Bluetooth-маячки, принадлежащие вам. Например, вы потеряли в радиусе порядке 30 метров пульт от телевизора (согласитесь, такое случается очень часто). Достаточно просто открыть приложение на смартфоне и взглянуть на радар, чтобы оценить расстояние, на котором находится предмет. Нажатием кнопки «Вызвать его» можно заставить маячок пищать дурным голосом и сверкать светодиодом для того, чтобы искомое нашлось.

    Вообще, говоря о приложении Stick-n-Find, нельзя не отметить тот факт, что локализовано оно весьма выборочно. На одном экране могут встречаться пункты как на английском, так и на русском языке. Конечно, на функциональности приложения и маячка это не сказывается, но визуально такая мешанина выглядит далеко не лучшим образом.

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

    В Bluetooth-маячке Stick-n-Find используется стандартный часовой элемент питания — батарея типа CR2016. В обычном режиме работы такая батарея продержится порядка 12 месяцев, ее заряд отображается в приложении. Там же можно узнать температуру среды, окружающей Bluetooth-маячок — эта информация также выводится в приложении на экране с радаром.

    Также можно активировать весьма полезный в быту режим «Поводка». В случае, если вы удаляетесь от объекта с Bluetooth-маячком, последний при потере связи начнем пищать. Например, если вы забыли кошелек на столе в кафе, то на выходе из этого заведения телефон с приложением Stick-n-Find зазвенит, уведомляя вас о том, что вы вот-вот потеряете важную вещь. К тому же имеется режим «Найти меня». Он окажется полезным в том случае, если маяк вышел из радиуса действия. Вы получите уведомление о том, что он снова доступен.

    Stick-n-Find – относительная молодая компания из Флориды (США), называющая себя мировым лидером в разработке и производстве Bluetooth low energy (BLE) технологий, а в частности – миниатюрных поисковых маяков и программного обеспечения к ним. Компания была основана в 2004 году, однако в интернете есть информация, что ее серьезные подвижки с маяками начались немногим больше двух лет назад, когда на популярной краудфандинговой площадке Indiegogo закончилась кампания по сбору средств , причем закончилась очень успешно, с превышением минимального бюджета в $70 000 более чем в 10 раз.

    Итак, что предлагает Stick-n-Find? Суть сводится к размещению на личных вещах, местоположение которых нужно контролировать (ключи, документы, сумки, пульты ДУ и проч.) тех самых миниатюрных маяков и установки из App Store или Google Play одноименных приложений на смартфон. Далее такая связка маяк-смартфон позволяет контролировать расстояние до маяков и пользоваться разными видами оповещений на смартфоне.

    Кратко теория выглядит так, подробности – в обзоре ниже.

    Внешний вид, технические характеристики

    Поисковые маяки Stick-n-Find поставляются комплектом по 2, 4, 6, 10 или 20 шт., цветовое оформление также разное. В небольшой коробочке кроме них находится определенное количество пластиковых брелоков по форме напоминающих медиаторы для музыкальных инструментов.

    Поисковый маяк представляет собой Bluetooth-устройство в миниатюрном пластиковом корпусе, похожим монету или «таблетку» от домофона. Размеры устройства составляют 24х4 мм, масса – около 5 г.

    На одной из сторон маяка (пусть будет аверсом) за вырезами в пластике видны металлические элементы антенны, реверс «таблетки» снабжен фирменным клейким слоем 3M VHB, адгезивные свойства которого, кстати, усиливаются со временем (согласно инструкции за 1 час обеспечивается 60 % сцепления, за 12 часов 80 %, за 24 часа – 100 %).

    Ребро корпуса маяка составное, как бутерброд – кольца из непрозрачного пластика прикрывают среднее прозрачное кольцо, благодаря чему, в том числе, возможна реализация в «таблетке» светодиодной подсветки.

    Питается вся начинка от аккумулятора CR2016, производитель гарантирует от 7 до 12 месяцев автономной работы устройства от одной батарейки (разбежка зависит от выбранного режима инициализации маяка). Замена батареи представляется, субъективно, довольно трудоемким процессом, если нет цели, конечно, разворотить и так не сильно прочный пластиковый корпус.

    Основные технические характеристики поискового маяка приведены в таблице:

    Параметр

    Значение

    Максимальный радиус действия

    Bluetooth, спецификация Bluetooth low energy (BLE) *

    Диапазон температур, о С.

    10 – +65 о С

    ОС смартфона

    Версия Bluetooth смартфона

    не ниже 4,0

    *– некоторыеотличия характеристик BLE от классического Bluetooth:

    Параметр

    Bluetooth

    Bluetooth low energy

    Максимальный радиус действия

    Скорость передачи данных

    Пропускная способность

    Общее время передачи данных

    Максимальный потребляемый ток

    < 20 мА (макс. 15 мА при работе от батареи)

    В работе, функциональность ПО

    Для работы в связке с маяками был использован смартфон Lenovo P90 с последней версией ОС Android. В Google Play при поиске по имени Stick-n-Find обнаруживаются два приложения: Stick-n-Find Android и Stick-n-Find BeaconMaker скачивается и устанавливается первое.

    В уже обозначенной выше инструкции производитель предупреждает, что маяки в долгой дороге до пользователя находятся в спящем режиме, а потому для их активации нужно несколько раз постучать ими по твердой поверхности – маяк ответит звучанием и подсветкой. Несмотря на старания, со стуком так ничего и не получилось – помогло отключение и подключение батареи.

    Приложение Stick - n - Find Android русифицировано, представляет собой оболочку с пятью вкладками: Начать, Радар, Карта, Оповещения, Настройки .

    Для полноты возможностей работы с маяками стоит создать и активировать учетную запись. Тем самым станет доступна регистрация маяков и некоторые дополнительные возможности. Базовые функции, однако, доступны и без «учетки».

    Подключение маяков начинается с кнопки Синхронизировать новые наклейки во вкладке Начать или Настройки. Важный момент – во время подключения голубая полоса справа от названия маячка означает не «прогресс бар», а уровень сигнала. Стоит просто «тапнуть» и маяк подключен. Каждому маяку можно задать индивидуальное имя: «ключи», «записная книжка» и так далее.

    После синхронизации имя маяка становится доступным по кнопке Где моя наклейка? вкладки Начать . Тап активирует поиск, в случае успеха приложение переходит к следующей вкладке.

    Радар – основная вкладка приложения. Именно с ней завязано основное взаимодействие с маяками: можно оценить расстояние (не направление!) до маяка, активировать его поиск (устройство отзывается светодиодной подсветкой и мелодией), оценить температуру, переключиться на другой маячок.

    Здесь выявились и первые помарки. Так, переключение между маяками часто занимало до 15-30 с, когда хочется делать это мгновенно. Кроме того, показания температуры в данных экземплярах не соответствовали действительности и обновлялись по собственному желанию, когда вздумается.

    Еще важный момент – на вкладке доступна кнопка Зарегистрировать наклейку (понятно, должна быть активирована учетная запись и присутствовать доступ в интернет).

    После регистрации по кнопке Управление зарегистрированными наклейками вкладки Начать (еще минус – метание по вкладкам вперед-назад) также становится доступным имя маяка и некоторые дополнительные функции.

    Что хорошо продумано разработчиком, так это разбросанные по вкладкам приложения ссылки с пояснениями той или иной функции.

    Вкладка Карта оказалась самой бесполезной: несмотря на «танцы с бубнами» –регистрации маяков, обновление различных сервисов и конфигурирование настроек смартфона увидеть отображение маяков на карте так и не получилось.

    Вкладка Оповещения . Здесь на каждый подключенный маяк доступны два типа оповещения:

    - Поводок – активация тревожного сигнала на смартфоне при удалении от маяка;

    - В зоне – активация тревожного сигнала на смартфоне при приближении к маяку.

    Граничное значение в обоих случаях – радиус действия BLE – 45 м в теории, 5-15 метров на практике. Субъективное замечание разработчикам – уменьшить минимальный порог времени отключения поводка .

    Вкладка Настройки ничем особым не выделяется.

    Примечательна лишь кнопка Помощь/ЧаВо с подробным описанием устройства, принципов работы и объемным разделом T roubleshooting (все сводится к проблемам отсутствия или неуверенной связи). Последний факт огорчает и радует одновременно – за качество и обратную связь.

    Заключение

    Вывод после нескольких дней использования напрашивается такой – забавно; с одной стороны вроде и практично, но добавляет суеты – либо всегда носи с собой все маяки, либо не забывай отключать неактуальные оповещения.

    P.S. второе приложение Stick - n - Find BeaconMaker в Google Play возможно понравится специалистам – присутствуют некоторые опции конфигурирования маяков.

    RuuviTag – Bluetooth маячок датчик с открытым исходным кодом для производителей, разработчиков, IoT компаний, студентов и обычных пользователей.

    Bluetooth маячок и The Physical Web – темы, которые активно обсуждают сегодня в мировом ИТ сообществе. В ближайшем будущем нас будут окружать небольшие интеллектуальные сети Bluetooth маячков, которые анализируют окружающую среду и предлагают информацию о распродажах, расписании общественного транспорта или рекламных постерах. На западном рынке Bluetooth маячки уже используют такие гиганты как McDonald’s и розничная сеть Tesco.

    Чтобы пользоваться возможностями, которые дают Bluetooth маячки, вам достаточно включить Bluetooth в мобильном устройстве. Не нужно устанавливать специальную программу. Маячок обнаружит в радиусе действия мобильное устройство и отправит сообщение. Оно может содержать информацию о распродаже в магазине, мимо которого вы проходите. Либо маячок может быть с кнопкой, и чтобы получить информацию о расписании на автобусной остановке, достаточно нажать кнопку и на мобильное устройство поступит сообщение с графиком движения.

    RuuviTag отличается от Apple iBeacon и Google Eddystone открытым исходным кодом и наличием датчиков – температуры, относительной влажности воздуха, атмосферного давления, высоты и ускорения.

    Чтобы использовать маячок RuuviTag в большинстве сценариев, не потребуется программирование. Все настройки несложно произвести в специальном мобильном приложении.

    Питается Bluetooth маячок RuuviTag от одной батарейки таблетки, которая может работать до 10 лет, в зависимости от условий экплуатации. Маячок совместим с мобильными устройствами на Android (4.3.2 или выше) и iOS (8.0 и выше). RuuviTag готов к работе с новым стандартом Bluetooth 5, и совместим с аппаратной платформой Arduino.

    Кампания по сбору средств на краудфандинговой платформе Kickstarter за 10 часов собрала более 200% от целевой суммы. На момент публикации проект поддержали более 1000 человек суммой свыше $61000. Целевая сумма $10000.

    Цена Bluetooth маячка RuuviTag со всеми датчиками – от $25 (1 шт) до $15.98 (50 шт). Планируемый срок поставки октябрь 2016 года.

    Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter .

    Если перед вами поставлена задача спроектировать решение на базе устройств, питающихся от одной батарейки, собирающих информацию в течении многих лет и передающих ее по каналу Bluetooth Low Energy, то самое логичное решение – обратиться к опыту компании Texas Instruments, включающему аппаратные и программные решения и средства разработки.

    Под «маячками» в этой статье подразумеваются миниатюрные радиопередатчики на основе технологии Bluetooth Low Energy с батарейным питанием, которые периодически отправляют данные в эфир. Давайте детально рассмотрим наиболее важные аспекты, которые нужно учитывать при проектировании маячков. С использованием BLE-стека Texas Instruments разработка маячков происходит простым и интуитивно понятным способом.

    Что такое Beacon?

    Beacon (маячки) в беспроводной технологии - это тип миниатюрных батарейных устройств для передачи информации малого объема. Информация может быть любой, начиная от параметров окружающей среды (температура, давление, влажность и так далее) или состоянии объекта (местоположение, ускорения, вибрации) до уведомлений о ценах и товарах в магазине.

    Переданные данные, как правило, статические, но могут быть также динамическими и изменяться со временем. Маячки, использующие Bluetooth Low Energy, как правило, предназначены для работы в течение многих лет на одной батарее размером с монету. Рассмотрим, с чего начать реализацию решений на базе маячков, распространяющих информацию при помощи объявлений (advertisement), то есть широковещательных рассылок по технологии Bluetooth Low Energy, которая также известна под маркетинговым именем Bluetooth Smart.

    Bluetooth Low Energy и Bluetooth Smart

    Модуль Bluetooth Low Energy может работать в четырех различных режимах, при которых устройства ведут себя по-разному. Первые два режима основаны на процедуре «соединения» (connection-based), то есть на установлении непосредственной связи с другим конкретным устройством:

    • периферийное устройство выполняет функцию объявителя (advertiser), оно может устанавливать соединение и работать как ведомое устройство (slave) в случае соединения, например, термометр или монитор сердечного ритма;
    • центральное устройство сканирует объявителей и может инициировать соединение. Оно работает как ведущее устройство (master) при одном или более соединениях, например, смартфоны и компьютеры. Это означает, что устройства, которые участвуют в процедуре соединения, могут работать как периферийные или центральные. Два других режима используются в устройствах с однонаправленной передачей или приемом данных:
    • широковещательный передатчик (Broadcaster) – объявитель без функции соединения, например, температурный датчик, который передает текущую температуру, или электронная метка для слежения за объектами;
    • наблюдатель (Observer) сканирует эфир в поисках объявлений, но не может инициализировать соединения. Это может быть удаленный дисплей, который получает температурные данные и выдает их на экран или следит за электронными метками.

    Очевидные режимы для приложений маячка - это периферийное устройство (Peripheral) и широковещательный передатчик. В этих режимах посылается один и тот же тип объявлений за исключением одного определенного флага внутри пакета, который указывает, является устройство соединяемым или несоединяемым. Периферийное устройство, которое реализует сервер GАТТ (архитектура для хранения информации и обмена ею между двумя или более устройствами), известно под маркетинговым названием “Bluetooth Smart”. Итак, название Bluetooth Smart указывает, что это устройство является соединяемым периферийным устройством, которое содержит данные и с которым центральное устройство может взаимодействовать.

    Технология Bluetooth Low Energy идеальна для маячков, потому что имеет низкое энергопотребление, присутствует в большинстве смартфонов или в других доступных на рынке устройствах Bluetooth Smart Ready. Низкое энергопотребление достигнуто за счет максимального уменьшения времени передачи и перехода в спящий режим между отправкой пакетов.

    Несоединяемые маячки

    Несоединяемый маячок - это устройство Bluetooth Low Energy в широковещательном режиме. Он просто передает информацию, которая хранится в его памяти. Поскольку в режиме несоединяемой передачи не активируется функция приема, достигается самое низкое возможное потребление энергии. Устройство просыпается, передает данные и возвращается в спящий режим. Недостаток такого устройства - передаются только те динамические данные, которые известны устройству, или данные, которые можно загрузить в маячок через проводной интерфейс, например, через последовательный вход UART, SPI или USB.

    Соединяемые маячки

    Соединяемый маячок является устройством Bluetooth Low Energy в периферийном режиме. Такой маячок может не только передавать, но получать данные, что позволяет центральному устройству (например, смартфону) соединяться и взаимодействовать с сервисами, реализованными в маячке. Каждый сервис имеет один или более атрибутов, которые могут быть изменены подключенным к маячку устройством. Один из примеров такого атрибута - строка данных, которая представляет широковещательную информацию. Таким образом, можно иметь маячок с перестраиваемой конфигурацией, которая легко обновляется по эфиру.

    Пакет данных

    Переданные от устройства Bluetooth Low Energy данные имеют формат, соответствующий базовой спецификации Bluetooth, и состоят из нескольких частей, которые показаны на рисунке 1.

    Преамбула - однобайтовое значение, используемое для синхронизации в приемнике. Для широковещательных пакетов она всегда равна 0xAA. Адрес доступа также фиксирован для широковещательных пакетов и установлен в 0x8E89BED6. Полезная нагрузка пакета состоит из заголовка и, собственно, полезной нагрузки. Заголовок описывает тип пакета, а тип PDU определяет назначение устройства. Для широковещательных приложений есть три различных типа PDU (таблица 1). ADV_IND и ADV_NONCONN_IND были описаны ранее (как соединяемый и несоединяемый), в то время как ADV_SCAN_IND - несоединяемый широковещательный передатчик, который может предоставить дополнительную информацию в ответ на сканирование.

    Таблица 1. Типы PDU-объявлений для широковещательных данных

    Бит TxAdd указывает, является ли адрес объявителя (содержащийся в полезной нагрузке) публичным (TxAdd = 0 ) или случайным (TxAdd = 1 ). RxAdd зарезервирован для других типов пакетов, не рассматриваемых в данной статье, поскольку они не применяются к маячкам.

    Последняя часть передаваемого пакета – циклический избыточный код (CRC). Циклический контроль избыточности - код с обнаружением ошибок, используемый для проверки целостности пакета от нежелательных изменений, как правило, вследствие помех в эфире. Это гарантирует целостность данных всех переданных по эфиру пакетов.

    Полезная нагрузка пакета включает адрес объявителя наряду с определяемыми пользователем данными, включаемыми в пакет объявления (user defined advertised data), как показано на рисунке 2. Эти поля представляют собой широковещательный адрес маячков и данные.

    Адрес устройства

    Широковещательный адрес может быть или публичным, или случайным. Публичный адрес (Том 6.C.1.3, стр. 2500), в соответствии со стандартом IEEE 802-2001 используется как уникальный идентификатор организации (OUI), полученный из центра регистрации IEEE. Компания Texas Instruments обеспечивает адреса IEEE для всех устройств Bluetooth Smart. Случайные адреса могут быть непосредственно сгенерированы маячком и бывают трех различных типов (рисунок 3): статический, неразрешимый частный и разрешимый частный (resolvable private). Статический адрес не разрешается менять, пока устройство не перезагрузится. Частный адрес может меняться со временем, а разрешимый адрес может использоваться, чтобы получить истинный адрес. Неразрешимый адрес также может измениться со временем, в этом его отличие от статического адреса. Случайный адрес - средство обеспечения секретности, которое предотвращает слежение за устройством. Есть определенные правила генерации случайных адресов, подробности можно найти в базовой спецификации (Том 3.C.10.8, стр. 2020).

    Переданные данные могут быть отформатированы согласно специальным форматам данных SIG Bluetooth, некоторые примеры показаны в таблице 2 . Далее уделим внимание флагам и данным, специфичным для изготовителя.

    Таблица 2. Типы данных объявлений

    Флаги

    Первые три байта широковещательных данных определяют возможности устройства. Это требование базовой спецификации (Vol 3. стр. 2029 C.13.1.1), формат байтов определен в таблице 3.

    Таблица 3. Флаги типов данных установки соединения

    Флаги режима обнаружения - маскированные биты, их различные значения представлены в таблице 3. Если никакие битовые флаги не установлены, флаг типа данных может быть опущен . Он, например, не требуется для несоединяемого пакета объявления (ADV_NONCONN_IND).

    Данные, специфичные для изготовителя

    Когда задаются данные, специфичные для изготовителя (то есть определяемые и сформатированные исключительно по правилам самого производителя), чтобы показать наличие этих данных, используется флажок “0xFF”. Первые два байта самих данных должны быть кодом идентификатора компании.

    Формат пакета Bluetooth Low Energy позволяет устройству передавать 25 байтов данных, специфичных для изготовителя, если объявление имеет тип соединяемого ненаправленного объявления (ADV_IND) или сканируемого ненаправленного объявления (ADV_SCAN_IND), при этом требуется флаг режима обнаружения. Для несоединяемого ненаправленного объявления (ADV_NONCONN_IND) максимальная длина данных в поле “Manufacturer-Specific Data” может достигать 28 байт. Эти данные определяются производителем и могут содержать любую информацию.

    Широковещательные данные могут быть также форматированы стандартным способом. Во время написания этой статьи существовало два стандарта: iBeacon от Apple и AltBeacon от Radius Networks. iBeacon защищен в соответствии с лицензией MFi и взаимодействует со всеми iOS-устройствами. AltBeacon - открытый стандарт, его спецификация может быть загружена со страницы http://altbeacon.org/.

    Интервал объявления

    Маячок обеспечивает низкое энергопотребление, по преимуществу находясь в бездействии и просыпаясь только на короткие периоды для передачи данных. Время между этими событиями вещания называется интервалом объявлений (рисунок 4). Для несоединяемых маячков интервал не может быть меньше 100 мс, а для соединяемых маячков – меньше 20 мс. К этому интервалу добавляется псевдослучайная задержка 0…10 мс, это гарантирует, что маячки могут работать совместно, даже если они начали передачу в одно и то же время.

    Интервал объявлений выбирается на основе компромисса между потребляемой мощностью и временем ожидания. Больший интервал позволяет проводить в режиме ожидания больше времени, но при этом также увеличивается период ожидания наблюдателем получения широковещательного пакета.

    Наблюдатель обычно выполняет сканирование с длительностью циклов менее 100%, чтобы снизить потребление энергии или предоставить другим беспроводным протоколам время для работы. Хороший пример - смартфоны, у которых в большинстве случаев есть один общий чип для Bluetooth и Wi-Fi®. Если наушники соединены через классический Bluetooth, а через Wi-Fi поддерживается связь с точкой доступа, то сканирование Bluetooth Low Energy будет, вероятно, производиться лишь на коротких интервалах работы. Временные интервалы доступа к эфиру на этом устройстве разделены между несколькими 2,4-гигагерцевыми протоколами.

    Наблюдатель может сканировать в пассивном или активном режиме. Если будет использоваться активный режим и маячок его поддерживает, то посылается команда “Scan Request”, на которую маячок должен выдать Scan Response. Запрос (Request) - это пустой пакет (нет никаких данных), тогда как ответ (Response) - это, как правило, статическая информация, например, название или модель устройства. Ответ полностью определяется самим устройством. Таким образом, это могут быть данные с каких-либо датчиков или любая другая полезная информация. Когда наблюдатель сканирует в пассивном режиме, он не будет посылать запрос сканирования.

    Таблица 4. Типы данных объявления, формат данных, специфичных для изготовителя

    Питание

    Маячок может получать энергию несколькими путями. Есть три различных основных способа (рисунок 5):

    • источник питания постоянной доступности (USB, электросеть и так далее);
    • батарейки (CR2032, AAA, литиевая и так далее);
    • сбор энергии – солнечной, кинетической и тому подобное (energy harvesting).

    Как правило, сначала выбирают батарейки, времени жизни которых достаточно для большинства приложений, и которые позволяют выпускать небольшие и бюджетные продукты. Можно также использовать перезаряжаемые аккумуляторы, причем в некоторых приложениях – вместе с беспроводной зарядкой. Выбор типа батарейки важен, потому что некоторые батарейки могут плохо работать в режиме отдачи максимального тока. Емкость батарейки выбирается на основе того, как часто необходима передача и требуется ли дальнейшая обработка (чтение датчика, алгоритмы обработки полученных данных и так далее). Взаимодействие с датчиком обычно подразумевает последовательную передачу данных с использованием интерфейсов UART, SPI или I2C, что требует дополнительной энергии, которая может оказаться даже больше, чем при выполнении радиообмена по протоколам Bluetooth Low Energy.

    Если устройство питается от источника постоянного тока, то предполагается, что потребляемая мощность не является критическим параметром. А если этот параметр все-таки критичен, используются те же требования к проекту, что и для работающего от аккумулятора устройства.

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

    Расстояние

    Теоретически расстояние для заданной радиочастоты зависит от многих факторов, например, таких как:

    • чувствительность радиоприемника;
    • выходная мощность радиопередатчика;
    • окружающая среда и помехи;
    • характеристики антенны.

    Маячки, как правило, работают на расстояниях от сантиметров до несколько сотен метров. Максимальная выходная мощность, определяемая базовой спецификацией, равна 10 дБм, при этом может покрываться расстояние до нескольких сотен метров, если все вышеупомянутые факторы учтены.

    Совместимость

    В открытом диапазоне частот 2,4 ГГц, который используется Bluetooth Low Energy, работают также многие другие беспроводные протоколы, такие как Wi-Fi и ZigBee. В этой полосе частот возможны и потенциальные помехи от домашних приборов, например микроволновых печей. Подобная активность в радиоэфире может мешать работе устройств Bluetooth Low Energy. Широковещательная передача объявлений происходит последовательно на трех различных каналах (рисунок 6).

    Каналы 37, 38 и 39 были выбраны для того, чтобы не вступать во взаимодействие с тремя обычно используемыми каналами Wi-Fi - 1, 6 и 11 (рисунок 7).

    Несмотря на то, что каналы объявлений Bluetooth Low Energy стратегически размещены в полосе 2,4 ГГц так, чтобы не взаимодействовать с наиболее традиционными каналами Wi-Fi, из рисунка 8 видно, что проблемы совместимости с этими частными каналами Wi-Fi так или иначе могут возникать. Впрочем, нужно заметить, что в данном случае частотный спектр был измерен на маячке, расположенном непосредственно на корпусе устройства Wi-Fi.

    В зависимости от приложения маячка к совместимости предъявляются различные требования. Даже малое количество активных маячков создает помехи друг другу, что вызывает потерю пакетов. Как уже отмечено, Wi-Fi имеет, в общем случае, более высокую мощность TX и занимает более широкую полосу ISM на 2,4 ГГц, чем устройства Bluetooth Low Energy.

    Проектирование маячка Bluetooth Low Energy

    Как и при любой разработке, здесь также есть параметры, которые могут быть оптимизированы с учетом различных плюсов и минусов. Один из примеров - интервал объявлений. Выбор меньшего интервала, то есть частая передача, увеличивает вероятность того, что информация будет быстрее доходить до устройства наблюдателя, хотя потребляемая мощность при этом увеличивается.

    Средства разработки

    При проектировании маячка сначала принимается решение о том, какие средства разработки использовать. Есть несколько доступных отладочных наборов компании Texas Instruments, которые представлены на рисунке 9. Эти средства включают в себя как небольшие платы с питанием от дискового элемента (CC254XDK-MINI , CC2541DK-SENSOR), так и многофункциональные платформы, идеальные для моделирования устройств любой сложности (CC2540DK). Подробная информация об этих средствах разработки находится на сайте ti.com/ble.

    Создание приложения маячка с BLE-стеком TI

    BLE-стек, поставляемый компанией Texas Instruments для беспроводных MCU CC254x , обеспечивает простую и надежную реализацию соединяемых и несоединяемых маячков. Есть типовые приложения, которые могут использоваться как программные шаблоны при проектировании маячка, они описаны в таблице 5. Предполагается, что разработчик уже знаком со средой разработки IAR Embedded Workbench и BLE-стеком.

    Таблица 5. Примеры программного обеспечения маячка для CC254x

    Пример проекта Назначение GAP Тип Поддержка устройств
    SimpleBLEPeripheral Периферийное устройство Соединяемый CC2540 , CC2540T , CC2541 , CC2541-Q1
    SimpleBLEBroadcaster Диктор Несоединяемый CC2540, CC2540T, CC2541, CC2541-Q1

    Есть также универсальное типовое приложение - широковещательный передатчик, специально спроектированный для CC2543 и работающий в несоединяемом режиме . Для CC2543 есть образец разработки для многофункционального широковещательного передатчика .

    Проект SimpleBLEPeripheral полностью описан в «Руководстве по разработке программного обеспечения» и является, в общем случае, лучшей отправной точкой при реализации соединяемого маячка. SimpleBLEBroadcaster - упрощенная версия SimpleBLEPeripheral, которая поддерживает только несоединяемые маячки. API поддерживает те же функции маячка, что и для указанных выше проектов. Таким образом, приведенные ниже примеры, применимые к обоим проектам, в частности, SimpleBLEBroadcaster (BLEv1.4), можно использовать как эталонный пример проекта. Есть две аппаратных платформы для SimpleBLEBroadcaster: CC2541 и CC2541DK-MINI Keyfob. В этой статье рассматривается применение платы CC2541EM . Конфигурирование производится с помощью всплывающего списка рабочих пространств (рисунок 10). Кроме того, существует версия проекта для CC2540 с подобными встроенными опциями.

    Приложение реализовано в SimpleBLEBroadcaster.c, где широковещательные данные определены как advertData:

    static uint8 advertData =
    {
    //Флаги; они устанавливают устройство в режим ограниченного обнаружения
    //(установка соединения один раз в течение 30 секунд) вместо общего
    //режима обнаружения (объявления не определены)
    0x02, //длина этих данных
    GAP_ADTYPE_FLAGS,
    GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED, //трехбайтовое объявление данных «1, 2, 3»
    0x04, //длина этих данных
    GAP_ADTYPE_MANUFACTURER_SPECIFIC, //данные, определяемые производителем
    //тип данных объявления
    1,
    2,
    3
    };

    По умолчанию передаваемые данные содержат обязательные флаги, за которыми идут три байта данных Manufacture-Specific Data (номера 1, 2 и 3). Эти данные могут быть изменены на какие-либо иные данные, при этом в случае необходимости следует обновить длину данных. В зависимости от аппаратной платформы объявления устанавливаются по-разному. Для CC2541 Вuild, который является общим для микросхем CC2541, по умолчанию эта переменная имеет значение TRUE. В типовом приложении тип объявления по умолчанию установлен как константа GAP_ADTYPE_ADV_SCAN_IND. Это позволяет во время соединения использовать команды Scan Request/Response. Чтобы запретить сканирование, что, кстати, уменьшит потребляемую мощность, тип объявления (advType) может быть изменен на константу GAP_ADTYPE_ADV_NONCONN_IND. После этого изменения можно также не задавать три байта флагов:

    //Для других аппаратных платформ устройство начинает процедуру соединения
    //после инициализации
    uint8 initial_advertising_enable = TRUE;
    //в случае использования несоединяемого объявления
    uint8 advType = GAP_ADTYPE_ADV_SCAN_IND;

    Конфигурированные переменные далее поступают на уровень GAP для использования стеком BLE. Отметим, что режим advertEnable не запускается мгновенно, во всяком случае, это не происходит во время инициирования приложения (simpleBLEBroadcaster_Init). Объявления начнут передаваться после того, как запустится стек протокола:

    GAPRole_SetParameter (GAPROLE_ADVERT_ENABLED, sizeof (uint8), &advertEnable);
    GAPRole_SetParameter (GAPROLE_ADVERT_DATA, sizeof (advertData), advertData);
    GAPRole_SetParameter (GAPROLE_ADV_EVENT_TYPE, sizeof (uint8), &advType).

    Интервал объявления по умолчанию установлен равным 100 мс, хотя он может быть увеличен до 10,24 с, что является максимумом, разрешенным базовой спецификацией BLE. Если необходимы более длинные интервалы – можно вручную разрешать и отключать передачу данных с помощью таймера OSAL, например:

    //Интервал между процедурами соединения (шаг 625 нс, 160 = 100 мс)
    #define DEFAULT_ADVERTISING_INTERVAL 160

    Чтобы гарантировать обнаружение объявлений, есть общее правило: интервал объявлений + 10 должен быть меньше, чем окно сканирования наблюдателя. Это означает, что маячок должен быть спроектирован с учетом возможностей партнерского устройства, иначе для получения переданных пакетов потребуется много времени. Подразумевается, что меньший интервал объявления позволит быстрее обнаруживать отправляемые данные, хотя для этого требуется больше мощности из-за более частых «пробуждений». Интервал устанавливается с помощью следующего API:

    uint16 advInt = DEFAULT_ADVERTISING_INTERVAL;
    GAP_SetParamValue (TGAP_LIM_DISC_ADV_INT_MIN, advInt);
    GAP_SetParamValue (TGAP_LIM_DISC_ADV_INT_MAX, advInt);
    GAP_SetParamValue (TGAP_GEN_DISC_ADV_INT_MIN, advInt);
    GAP_SetParamValue (TGAP_GEN_DISC_ADV_INT_MAX, advInt).

    Для получения дополнительной информации относительно прикладной архитектуры и описания API, смотрите «Руководство по разработке программного обеспечения» .

    При использовании сниффера пакетов TI переданные данные могут быть проконтролированы. На рисунке 11 показан пакет из канала 37 (0x25 ), который является соединяемым (ADV_IND). Значение AdvA - адрес IEEE, advData включает флаги (0x01 ) и Manufacturer-Specific Data (0xFF ).

    Заметим, что в коде примера, основанном на BLEv1.4, Manufacturer-Specific Data не включает код компании, то есть, согласно базовой спецификации, это неправильный формат. Чтобы исправить это, просто добавьте код компании к AdvertData с помощью прикладной программы, как показано ниже. Не забудьте обновить длину данных, специфичных для изготовителя, которые также включают флажок для типа данных:

    //GAP - данные объявления (максимальный размер = 31 байт, хотя лучше их делать короче, чтобы снизить потребление во время события объявления)
    static uint8 advertData =
    {
    //флаги; они переводят устройство в режим ограниченного обнаружения
    //(установка соединения один раз в течение 30 секунд) вместо общего режима обнаружения (объявления не определены)

    CC2650 оптимизирован для создания устройств с питанием от малогабаритных дисковых элементов – потребление радио в режиме непрерывного приема составляет лишь 5,9 мА.

    Низкое потребление нового чипа позволило инженерам Texas Instruments создать опорную разработку беспроводного сенсора 2,4 ГГц для мониторинга окружающей среды, который работает более 10 лет от одной батареи CR2032. Датчик измеряет значения температуры и влажности и передает их один раз в минуту в виде широковещательного BLE-пакета (nonconnectable Bluetooth Smart advertisement packet). Практические испытания показали дальность действия в пределах 130 м внутри офисного здания.

    Для достижения экстремально низкого тока потребления в режиме сна в схеме использован уникальный нанотаймер TPL5110 , который имеет ток собственного потребления 35 нА в режиме счета времени 0,1 с…2 ч. Коммутация питания выполнена с помощью аналогового ключа TS5A3160 с током утечки ±20 нА. Использование этих компонентов позволило получить потребление всей системы 183 нА в режиме сна (59,97 с) и средний ток 4,04 мА при активном процессоре и работающем передатчике (30 мс).

    Схема и рабочий проект печатной платы выложены в открытом доступе, поэтому разработчик может легко модифицировать плату, добавляя новые датчики на шину I2C. Печатная плата позволяет использовать не только микросхему CC2650, которая включает поддержку разных беспроводных протоколов, но и чипы CC2640 (только Bluetooth Smart) или СС2630 (только ZigBee), которые по выводам полностью совместимы с CC2650.

    О компании Texas Instruments