Обзор беспроводных датчиков StickNFind. Чтобы ничего не терять. Концепция Physical web. Bluetooth маячки. Сравнение стандартов iBeacon, AltBeacon и Eddystone

Если перед вами поставлена задача спроектировать решение на базе устройств, питающихся от одной батарейки, собирающих информацию в течении многих лет и передающих ее по каналу 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

Привычка следить за своим телефоном медленно входит в разряд бессознательных рефлексов. И если с поиском iPhone может хотя бы частично помочь встроенный сервис Find My iPhone , то как быть с какими-нибудь мелкими вещами? Например, ключи. Забыть их где-нибудь в машине или просто за диваном в собственной квартире можно проще простого. И в таких случаях поиски затянутся надолго. Если, конечно, вы заранее не озаботились и не надели на них датчик StickNFind .

StickNFind - отдушина и спасение для забывчивых людей, постоянно теряющих полезную бытовую «мелочёвку». Если говорить кратко, это маленький пластиковый датчик, общающийся с внешним миром по протоколу Bluetooth. Вы цепляете его на какой-нибудь предмет, после чего можете найти местоположение датчика по простому «локатору» в фирменном приложении для iPhone.

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

Сходство формы с пятирублёвой монетой просто-таки поразительное. Датчик выпускается в шести цветах, поэтому не вижу смысла обращать внимание на невзрачность чёрной версии. Зато никак нельзя оставить в стороне прозрачную «прослойку», прямо как в какой-нибудь «печеньке» с начинкой. Именно там спрятан светодиод, о котором я расскажу чуть позже. Всё это весит всего четыре с половиной грамма .

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

StickNFind прикрепляется к любым вещам с помощью клейкой плёнки, размещённой на нижней стороне. Плёнка эта, без преувеличения, убийственная, и если вы по-глупости познакомили её с задней панелью iPhone 5, готовьтесь ломать ногти. С тканями ситуация полегче, да и со временем поразительная «приставучесть» этого слоя обязательно ослабнет.

Для настройки и поиска брелков StickNFind скачивается одноимённое фирменное приложение для iOS [App Store ] или Android. Чтобы инициировать первичную настройку, нужно активировать датчик - постучать пальцами по нему и дождаться пронзительного писка встроенного динамика. Да-да, в этой маленькой штучке нашлось место и для «пищалки».

Активированные датчики почти сразу же появляются в приложении. Каждому из них можно (и обязательно нужно ) присвоить уникальное имя. Например, «Ключи» для датчика, который вы повесили на ключницу. К слову, делается это очень просто: вешаете «метку» на небольшую пластинку из комплекта поставки, а затем продеваете эту пластинку в кольцо вместе с ключами.

Процесс синхронизации полностью автоматизирован. В некоторых случаях приложение сразу же начнёт обновлять прошивку датчиков, потребовав от вас поднести смартфон как можно ближе к метке. По окончанию регистрации и синхронизации, вы можете уверенно наклеить датчики туда, куда хотите - и забыть о них. Производитель обещает, что StickNFind будут работать как минимум в течение года без замены батареи. А батарея там из разряда «часовой», то бишь заменить её можно самостоятельно.

Поиск метки осуществляется по «локатору» в программе для iPhone. Чем дальше вы отходите со смартфоном от метки, тем дальше она отображается на воображаемом «радаре». Дальность прямого обнаружения составляет примерно 30 метров. Поиск напоминает игру в «холодно-горячо»: вы можете видеть только относительное расстояние между вами и меткой, но не её направление или четко определённое местоположение. На словах звучит трудно. Но на самом деле вы просто поворачиваетесь в правильную сторону и идете вперёд, сверяясь с данными в приложении.

Помимо этого, датчик и мобильное приложение взаимодействуют ещё несколькими любопытными способами. Например, вы можете настроить функцию «Поводок»: как только вы отойдете от датчика на слишком большое расстояние, на iPhone придет соответствующее Push-уведомление, а сама «метка» начнет проигрывать звуковой сигнал. И мигать светодиодом, конечно. Ещё можно удаленно активировать звуковой сигнал датчика и/или световую индикацию.

Одной функции «поводка» достаточно, чтобы порекомендовать датчики StickNFind каждому . То есть вообще всем, включая и вас. Или вы ничего никогда не теряли? Можно использовать сразу несколько датчиков одновременно, следя за каждой архиважной вещью в доме. И теперь утренние сборы спросонья не будут стопориться на поиске ключа от квартиры. А бородатый таксист не уедет в кабак с вашим кошельком, оставленным после хорошего вечера в клубе. Полезная вещь!

Инверсия - великая вещь! Изобрети что-то одно, а потом возьми и выверни его наизнанку, получишь не менее интересный результат. Я сначала провернул такое с одной штукой, и только потом увидел, что в ТРИЗ (теория решения изобретательских задач) есть такой прием "инверсия или обратная аналогия". Век живи, век учись.


Но это все теория, а практика ставит всё на свои места...


Маяки Bluetooth Low Energy или iBeacon теперь не что-то из ряда вон. Их можно встретить на вокзалах, в аэропортах, в музеях и в торговых центрах. Как радио-инженер я участвовал в проектировании маяков и, в особенности, антенн к ним. Дело это, по-началу интересное, потом становится скучным. Нечем выделиться, ничего особо нового не изобретешь. И тут меня осенило!



Приведём небольшие фрагменты кода с логикой работы пеленгатора:


Получаем уровни с обеих антенн. Полученные уровни требуется усреднить, а после этого посчитать разницу. На самом деле это не разница сигналов, а их отношение. Но если измерять в децибелах , то будет разница.


Запись уровней в буфер

public boolean handleInfo(WFPacket data) { if (data.apName.equals(ssid) && data.mac.equals(mac)) { int idx = data.antIdx; if (0 <= idx && idx <= 1) { mLevels.get(idx).addLast(data.power); while (mLevels.get(idx).size() > avgCount) { mLevels.get(idx).removeFirst(); } needRecalc = true; print(); } else { Log.d(TAG, "LevelCalculator.HandleInfo() Bad rcvIdx: " + data.antIdx); } } else { return false; } return needRecalc; }


Усреднение и подсчёт разницы

public double getAvg() { if (needRecalc) { for (int idx = 0; idx < 2; idx++) { double sum = 0d; for (Double x: mLevels.get(idx)) { sum += x; } int count = mLevels.get(idx).size(); if (count != 0) { sum /= count; } avgLevels = sum; } avgDiff = Math.pow(10.0, (avgLevels - avgLevels) * 0.1 + 2.5); //Переводим обратно из децибелов needRecalc = false; } return avgDiff; }


Обработка "разницы". Если уровни на обеих антеннах различаются "сильно", то мы с некоторой точностью (плюс минус лапоть) направлены на источник. Чему равно это "сильно" на данный момент определяется методом научного тыка экспериментально.


private void updateLevelDiff(double levelDiff)

private void updateLevelDiff(double levelDiff) { long deltaTime = System.currentTimeMillis() - lastUpdateTime; int progress = (int) Math.floor(100.0 * levelDiff); // Масштабирование для красивого отображения на экране // Сохраняем пеленг if (deltaTime > TIME_PERIOD) { // Мы не хотим сохранять пеленги слишком часто if (progress < mThreshold) { // Если разница в уровнях больше порога, то мы как раз направлены на источник сигнала addBearing(); numUpdates++; } lastUpdateTime = System.currentTimeMillis(); } //Далее идёт обновление GUI }


А теперь ИНВЕРТИРУЕМ!


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


В стандарте Bluetooth версии 5 даже анонсирован похожий способ высокоточного позиционирования - Angle of Departure. До точного описания этого способа они еще не дошли, обещают в следующих версиях.


В рафинированном виде работу можно проиллюстрировать роликами: раз и два .


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



Сам маяк выглядит так:



А вот рендеры внутренностей:



Красавец, не правда ли?! Внутри антенна, как в пеленгаторе WiFi, и Bluetooth SoC nRF51822. Но все было тщетно...


Далее история переходит в факап, который заключается в том, что это работает на смартфоне Nexus 5 и найти другой гаджет, работающий хотя бы так же, оказалось не очень просто. Нет, они есть, Samsung Galaxy S7, Lenovo Phab 2 Pro, и на этом список пока заканчивается. Больше "хороших" гаджетов найти у друзей и знакомых не удалось. Из "плохих" можно отметить Samsung S4 mini.


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



Есть небольшая надежда, на то, что на iOS ситуация может быть лучше. По крайней мере однороднее на спектре мобильных устройств.


Есть также надежда, что найдется специалист, который поймет в чем проблема и подскажет решение.


А мне сейчас очень жаль, что эта идея не работает.

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

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

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

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

В поисковую метку, брелок, радиомаячок интегрируется модуль беспроводной связи. Чаще всего производители внедряют в наклейку энергосберегающий модуль Bluetooth стандарта Bluetooth Low Energy версии 4.0. Радиомаячок сопрягается с мобильным гаджетом и определяется через интерфейс приложения.

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

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

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

Современные поисковые стикеры обладают достоинствами, свойственными промышленным поисковым маякам, но при этом стоимостью, доступной рядовому потребителю. Последние модели поисковых комплектов предлагают системы, в которых местоположение метки определяется с помощью сотовой связи. Для такого стикера дальность удаления от приемника не является приоритетной – метка определится в любом месте, где действует сигнал вышки сотовой связи.

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

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 .