блютуз метка что это такое
Практика вероятности: Bluetooth против угонщиков
— Девушка, какова вероятность, что, выйдя из дома, вы встретите динозавра?
— Пятьдесят на пятьдесят! Либо встречу, либо нет…
Если бы смекалистую блондинку из этого анекдота спросили о шансах вернуть угнанный автомобиль, то ее ответ наверняка был бы таким же: либо найдут, либо нет. Но если машина оборудована цифровым маркером, то расклад может оказаться иным.
Правильно это называется «цифровая маркировка». Именно так, в кавычках. Потому что к знакомым нашим автолюбителям маркировочным «царапинам» (Литэкс, DataDot, VIN-антивор, Krimistop, SABR — помните?) эта технология не имеет никакого отношения. Роль маркера здесь выполняет миниатюрная Bluetooth-метка с индивидуальным цифровым «клеймом», поисковым инструментом служит смартфон, а сети, в которые должны попасть угонщики, расставляют волонтеры, вооруженные специальными поисковыми интернет-приложениями (Цифровая маркировка, Magic Systems и Сar-Online), — в Москве и Санкт-Петербурге пользователей уже более 7000.
Чем цифровой маркер отличается от GSM-маяков и других радиопоисковых устройств, помогающих бороться с угонами? Во-первых, размерами: Bluetooth-передатчик в три—четыре раза меньше самого компактного радиомаяка, и спрятать его в машине можно надежнее, чем иголку в стоге сена. Второе отличие — в организации радиоканала, обеспечивающей метке лучшую защиту от стандартных криминальных глушилок. Расчет здесь делается на то, что, вскрывая автомобиль, технически подкованные злодеи включают генератор помех, нацеленный на диапазоны 433/868/900 и 1800 МГц, в которых работают пейджеры, сигнализации с двусторонней связью и различные GSM-оповещатели. А чтобы подавить участок спектра, выделенный для Bluetooth-передатчиков, нужна аппаратура, настроенная на более высокие частоты (2400 МГц). Полноценной защитой от радиоэлектронного подавления это, конечно, назвать нельзя, но уловка может сработать.
Маркер выглядит как ключ-транспондер от бесконтактного иммобилайзера и представляет собой Bluetooth-передатчик с индивидуальным номером, работающий по энергосберегающему протоколу
Органов управления у «синезубого» маркера нет. После подсоединения батарейки и привязки к интернет-приложению метка сразу становится активной и благодаря энергосберегающему протоколу Bluetooth LE (low energy) работает без смены элемента питания как минимум полтора года. На открытом пространстве смартфон должен видеть ее на расстоянии до пятидесяти метров (приложение показывает дальность и направление), и наличие контакта свидетельствует о работоспособности канала связи.
Маячки Bluetooth Low Energy
Если перед вами поставлена задача спроектировать решение на базе устройств, питающихся от одной батарейки, собирающих информацию в течении многих лет и передающих ее по каналу 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), то есть на установлении непосредственной связи с другим конкретным устройством:
Очевидные режимы для приложений маячка — это периферийное устройство (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.
Рис. 1. Пакет данных Bluetooth Low Energy
Преамбула — однобайтовое значение, используемое для синхронизации в приемнике. Для широковещательных пакетов она всегда равна 0xAA. Адрес доступа также фиксирован для широковещательных пакетов и установлен в 0x8E89BED6. Полезная нагрузка пакета состоит из заголовка и, собственно, полезной нагрузки. Заголовок описывает тип пакета, а тип PDU определяет назначение устройства. Для широковещательных приложений есть три различных типа PDU (таблица 1). ADV_IND и ADV_NONCONN_IND были описаны ранее (как соединяемый и несоединяемый), в то время как ADV_SCAN_IND — несоединяемый широковещательный передатчик, который может предоставить дополнительную информацию в ответ на сканирование.
Таблица 1. Типы PDU-объявлений для широковещательных данных
Тип PDU | Название пакета | Описание |
0 | ADV_IND | Событие соединяемого ненаправленного объявления |
10 | ADV_NONCONN_IND | Событие несоединяемого ненаправленного объявления |
110 | ADV_SCAN_IND | Событие сканируемого ненаправленного объявления |
Бит TxAdd указывает, является ли адрес объявителя (содержащийся в полезной нагрузке) публичным ( TxAdd = 0 ) или случайным ( TxAdd = 1 ). RxAdd зарезервирован для других типов пакетов, не рассматриваемых в данной статье, поскольку они не применяются к маячкам.
Последняя часть передаваемого пакета – циклический избыточный код (CRC). Циклический контроль избыточности — код с обнаружением ошибок, используемый для проверки целостности пакета от нежелательных изменений, как правило, вследствие помех в эфире. Это гарантирует целостность данных всех переданных по эфиру пакетов.
Полезная нагрузка пакета включает адрес объявителя наряду с определяемыми пользователем данными, включаемыми в пакет объявления (user defined advertised data), как показано на рисунке 2. Эти поля представляют собой широковещательный адрес маячков и данные.
Рис. 2. Широковещательные данные Bluetooth Low Energy
Адрес устройства
Широковещательный адрес может быть или публичным, или случайным. Публичный адрес [1] (Том 6.C.1.3, стр. 2500), в соответствии со стандартом IEEE 802-2001 используется как уникальный идентификатор организации (OUI), полученный из центра регистрации IEEE. Компания Texas Instruments обеспечивает адреса IEEE для всех устройств Bluetooth Smart. Случайные адреса могут быть непосредственно сгенерированы маячком и бывают трех различных типов (рисунок 3): статический, неразрешимый частный и разрешимый частный (resolvable private). Статический адрес не разрешается менять, пока устройство не перезагрузится. Частный адрес может меняться со временем, а разрешимый адрес может использоваться, чтобы получить истинный адрес. Неразрешимый адрес также может измениться со временем, в этом его отличие от статического адреса. Случайный адрес — средство обеспечения секретности, которое предотвращает слежение за устройством. Есть определенные правила генерации случайных адресов, подробности можно найти в базовой спецификации [1] (Том 3.C.10.8, стр. 2020).
Рис. 3. Типы адресов маячка
Переданные данные могут быть отформатированы согласно специальным форматам данных SIG Bluetooth, некоторые примеры показаны в таблице 2 [2, 3]. Далее уделим внимание флагам и данным, специфичным для изготовителя.
Таблица 2. Типы данных объявлений
Тип данных AD | Значение | Описание |
Флаги | 0x01 | Возможности обнаружения устройства |
Сервис UUID | 0x02…0x07 | Службы GАТТ-устройства |
Локальное имя | 0x08…0x09 | Имя устройства |
Уровень мощности TX | 0x0A | Выходная мощность устройства |
Данные, специфичные для изготовителя (Manufacturer-Specific Data) | 0xFF | Определяются пользователем |
Флаги
Первые три байта широковещательных данных определяют возможности устройства. Это требование базовой спецификации [1] (Vol 3. стр. 2029 C.13.1.1), формат байтов определен в таблице 3.
Таблица 3. Флаги типов данных установки соединения
Байт | Бит | Флаг/значение | Описание |
0 | – | 0x02 | Длина этих данных |
1 | – | 0x01 | Флаг типа AD GAP |
2 | 0 | Ограниченный режим обнаружения LE | Объявление 180 c |
– | 1 | Общий режим обнаружения LE | Неопределенное время объявления |
– | 2 | BR/EDR не поддерживается | – |
– | 3 | Одновременно LE и BR/EDR (контроллер) | – |
– | 4 | Одновременно LE и BR/EDR (главный компьютер) | – |
– | 5…7 | – | Зарезервированы |
Флаги режима обнаружения — маскированные биты, их различные значения представлены в таблице 3. Если никакие битовые флаги не установлены, флаг типа данных может быть опущен [2]. Он, например, не требуется для несоединяемого пакета объявления (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 мс, это гарантирует, что маячки могут работать совместно, даже если они начали передачу в одно и то же время.
Рис. 4. Интервал объявлений
Интервал объявлений выбирается на основе компромисса между потребляемой мощностью и временем ожидания. Больший интервал позволяет проводить в режиме ожидания больше времени, но при этом также увеличивается период ожидания наблюдателем получения широковещательного пакета.
Наблюдатель обычно выполняет сканирование с длительностью циклов менее 100%, чтобы снизить потребление энергии или предоставить другим беспроводным протоколам время для работы. Хороший пример — смартфоны, у которых в большинстве случаев есть один общий чип для Bluetooth и Wi-Fi®. Если наушники соединены через классический Bluetooth, а через Wi-Fi поддерживается связь с точкой доступа, то сканирование Bluetooth Low Energy будет, вероятно, производиться лишь на коротких интервалах работы. Временные интервалы доступа к эфиру на этом устройстве разделены между несколькими 2,4-гигагерцевыми протоколами.
Наблюдатель может сканировать в пассивном или активном режиме. Если будет использоваться активный режим и маячок его поддерживает, то посылается команда “Scan Request”, на которую маячок должен выдать Scan Response. Запрос (Request) — это пустой пакет (нет никаких данных), тогда как ответ (Response) — это, как правило, статическая информация, например, название или модель устройства. Ответ полностью определяется самим устройством. Таким образом, это могут быть данные с каких-либо датчиков или любая другая полезная информация. Когда наблюдатель сканирует в пассивном режиме, он не будет посылать запрос сканирования.
Таблица 4. Типы данных объявления, формат данных, специфичных для изготовителя
Байт | Значение | Описание |
0 | 0x03…0x1F | Длина этих данных |
1 | 0xFF | Флаг данных, специфичных для изготовителя |
2 | 0x0D | Идентификатор компании |
3 | 0x00 | Идентификатор компании (например, 0x000D – Texas Instruments) |
4…31 | — | Определяемые пользователем (дополнительные) данные |
Питание
Маячок может получать энергию несколькими путями. Есть три различных основных способа (рисунок 5):
Рис. 5. Варианты питания
Как правило, сначала выбирают батарейки, времени жизни которых достаточно для большинства приложений, и которые позволяют выпускать небольшие и бюджетные продукты. Можно также использовать перезаряжаемые аккумуляторы, причем в некоторых приложениях – вместе с беспроводной зарядкой. Выбор типа батарейки важен, потому что некоторые батарейки могут плохо работать в режиме отдачи максимального тока. Емкость батарейки выбирается на основе того, как часто необходима передача и требуется ли дальнейшая обработка (чтение датчика, алгоритмы обработки полученных данных и так далее). Взаимодействие с датчиком обычно подразумевает последовательную передачу данных с использованием интерфейсов UART, SPI или I2C, что требует дополнительной энергии, которая может оказаться даже больше, чем при выполнении радиообмена по протоколам Bluetooth Low Energy.
Если устройство питается от источника постоянного тока, то предполагается, что потребляемая мощность не является критическим параметром. А если этот параметр все-таки критичен, используются те же требования к проекту, что и для работающего от аккумулятора устройства.
Сбор энергии реализуется чаще для беспроводных проектов с низким энергопотреблением, и маячок может быть оснащен источником сбора энергии. Механическое давление и солнечная энергия — самые известные источники. Даже свет в помещении [4] может использоваться для питания маячка.
Расстояние
Теоретически расстояние для заданной радиочастоты зависит от многих факторов, например, таких как:
Маячки, как правило, работают на расстояниях от сантиметров до несколько сотен метров. Максимальная выходная мощность, определяемая базовой спецификацией, равна 10 дБм, при этом может покрываться расстояние до нескольких сотен метров, если все вышеупомянутые факторы учтены.
Совместимость
В открытом диапазоне частот 2,4 ГГц, который используется Bluetooth Low Energy, работают также многие другие беспроводные протоколы, такие как Wi-Fi и ZigBee. В этой полосе частот возможны и потенциальные помехи от домашних приборов, например микроволновых печей. Подобная активность в радиоэфире может мешать работе устройств Bluetooth Low Energy. Широковещательная передача объявлений происходит последовательно на трех различных каналах (рисунок 6).
Рис. 6. Широковещательные объявления
Каналы 37, 38 и 39 были выбраны для того, чтобы не вступать во взаимодействие с тремя обычно используемыми каналами Wi-Fi — 1, 6 и 11 (рисунок 7).
Рис. 7. Полоса частот и каналы Bluetooth Low Energy
Однако Wi-Fi имеет значительно более высокую выходную мощность – до 23 дБм по сравнению с максимально допустимыми 10 дБм для Bluetooth Low Energy. Это означает, что при размещении маячка очень близко к источнику Wi-Fi, принимаемые от него данные исказятся, поскольку паразитное излучение модуля Wi-Fi на побочных каналах будет накладываться на сигнал маячка (рисунок 8). На этом рисунке видны три пика выходной мощности маячка на широковещательных каналах 37, 38 и 39 в сравнении с максимумом выходной мощности Wi-Fi при передаче данных на скорости 24 Mбит/с.
Несмотря на то, что каналы объявлений Bluetooth Low Energy стратегически размещены в полосе 2,4 ГГц так, чтобы не взаимодействовать с наиболее традиционными каналами Wi-Fi, из рисунка 8 видно, что проблемы совместимости с этими частными каналами Wi-Fi так или иначе могут возникать. Впрочем, нужно заметить, что в данном случае частотный спектр был измерен на маячке, расположенном непосредственно на корпусе устройства Wi-Fi.
Рис. 8. Спектр 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.
Рис. 9. Средства разработки Bluetooth Smart
Создание приложения маячка с 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 и работающий в несоединяемом режиме [6]. Для CC2543 есть образец разработки для многофункционального широковещательного передатчика [7].
Проект SimpleBLEPeripheral полностью описан в «Руководстве по разработке программного обеспечения» [8] и является, в общем случае, лучшей отправной точкой при реализации соединяемого маячка. SimpleBLEBroadcaster — упрощенная версия SimpleBLEPeripheral, которая поддерживает только несоединяемые маячки. API поддерживает те же функции маячка, что и для указанных выше проектов. Таким образом, приведенные ниже примеры, применимые к обоим проектам, в частности, SimpleBLEBroadcaster (BLEv1.4), можно использовать как эталонный пример проекта. Есть две аппаратных платформы для SimpleBLEBroadcaster: CC2541 и CC2541DK-MINI Keyfob. В этой статье рассматривается применение платы CC2541EM. Конфигурирование производится с помощью всплывающего списка рабочих пространств (рисунок 10). Кроме того, существует версия проекта для CC2540 с подобными встроенными опциями.
Рис. 10. Встроенные опции для SimpleBLEBroadcaster
Приложение реализовано в 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, смотрите «Руководство по разработке программного обеспечения» [8].
При использовании сниффера пакетов TI [9] переданные данные могут быть проконтролированы. На рисунке 11 показан пакет из канала 37 ( 0x25 ), который является соединяемым (ADV_IND). Значение AdvA — адрес IEEE, advData включает флаги ( 0x01 ) и Manufacturer-Specific Data ( 0xFF ).
Рис. 11. Сниффер пакетов v2.18.1, пакет SimpleBLEBroadcaster получен по эфиру
Заметим, что в коде примера, основанном на BLEv1.4, Manufacturer-Specific Data не включает код компании, то есть, согласно базовой спецификации, это неправильный формат. Чтобы исправить это, просто добавьте код компании к AdvertData с помощью прикладной программы, как показано ниже. Не забудьте обновить длину данных, специфичных для изготовителя, которые также включают флажок для типа данных:
//GAP — данные объявления (максимальный размер = 31 байт, хотя лучше их делать короче, чтобы снизить потребление во время события объявления)
static uint8 advertData [] =
<
//флаги; они переводят устройство в режим ограниченного обнаружения
//(установка соединения один раз в течение 30 секунд) вместо общего режима обнаружения (объявления не определены)
0x02, // длина этих данных
GAP_ADTYPE_FLAGS, GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED,
//трехбайтовое вещание данных «1, 2, 3»
0x06, // длина этих данных
GAP_ADTYPE_MANUFACTURER_SPECIFIC, //отсылаемые данные определяются производителем,
//тип данных объявления
0x0D, //код компании TI
0x00, //код компании TI
1,
2,
3
>
Литература
Беспроводной сенсор от TI c рекордным сроком работы от батареи
Система на кристалле нового поколения CC2650 производства компании Texas Instruments включает в себя мультисистемное радио Bluetooth Smart, ZigBee, 6LoWPAN, RF4CE и производительный микроконтроллер Cortex-M3.
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.