Обзор беспроводных датчиков StickNFind. Чтобы ничего не терять. Направленный Bluetooth-маяк (iBeacon) и полный мобильный факап. Создание приложения маячка с BLE-стеком TI

Обзор беспроводных датчиков StickNFind. Чтобы ничего не терять. Направленный Bluetooth-маяк (iBeacon) и полный мобильный факап. Создание приложения маячка с BLE-стеком TI

16.02.2019

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

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


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


Маяки 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 ситуация может быть лучше. По крайней мере однороднее на спектре мобильных устройств.


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


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

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

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

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

    Концепция 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 навигации, вот неплохие статьи.

    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 .

    В 2013 году компания Apple представила iBeacon - технологию передачи Bluetooth-сигнала между компактными маячками и совместимыми устройствами вроде смартфонов, планшетов и ноутбуков. Идею подхватили Google и анонсировали технологию Eddystone. Сейчас маячки применяют в разных отраслях, в том числе и ритейле.

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

    Что такое iBeacon

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

    Вот как Bluetooth-маячки выглядят изнутри. Источник: estimote.com

    Когда совместимое устройство получает сигнал, приложение активирует заранее определённое действие: приветствует посетителей, предлагает дополнительную информацию о товаре или услугах, рассказывает историю. Маячки используют в музеях, на стадионах, выставочных центрах и магазинах.

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

    Стадион Камп Ноу, Барселона

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

    Комплекс BMW World, Мюнхен

    Как применять iBeacon в ритейле

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

    Маячки в магазине. Источник: estimote.com

    Для получения дополнительной информации

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

    Отследить поведение покупателя по всем каналам. Геолокационные возможности маячков помогут вам узнать о поведении клиента в физическом магазине: на что обращает внимание и какими товарами интересуется. На основе этой информации ритейлер делает релевантное предложение клиенту в других каналах продаж.

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

    Отправлять push-уведомления. Благодаря маячкам push-уведомления будут не бездумными сообщениями в пустоту, а полезными и своевременными напоминаниями. Например, когда клиент придёт в магазин, уведомление сообщит, что у него есть бонусы, которые он может потратить прямо сейчас на покупку фотоаппарата или чехла для телефона.

    Для быстрой выдачи заказов

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

    Для помощи продавцам

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

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

    Когда маячки не принесут пользы

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

    Но создать приложение – лишь часть решения проблемы. Куда сложнее – мотивировать клиентов установить его на смартфон. Однако и установка приложения — только начало трудностей, ведь клиенту для взаимодействия с маячками нужно включить Bluetooth, достать смартфон из кармана, прочитать уведомление и зайти в магазин. Это меняет привычное поведение покупателя и усложняет шоппинг.

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

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

    Вот как Bluetooth-маячки работают в нашем «Интерактивном промоутере»

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

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

    Маячки могут оптимизировать работу продавцов-консультантов и – если у вас в магазине есть готовая технологическая база – улучшить презентацию товара.

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

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

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



    © 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows