NexxDigital - компьютеры и операционные системы

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

Зачем придумали BLE

Как только люди научились передавать информацию без помощи проводов, встала задача передачи данных, используя устройство с батарейным питанием. Проблема в том, что ему должно помогать другое устройство, которое будет постоянно либо прослушивать эфир, либо передавать данные. Проблема возникает в том случае, если и приемник и передатчик имеют батарейное питание. В этом случае приходит на помощь BlueTooth Low Energy (BLE). Он впервые вошел в протокол BlueTooth 4.0. На данный момент уже вышла спецификация BlueTooth 5.0, однако мы будем рассматривать в основном формат BlueTooth 4.0, иногда указывая нововведения для формата 5.0. В качестве одного из устройств обычно выступает смартфон, а второго - батарейный гаджет. Андроид поддерживает BLE с версии 4.3.

Для передачи и приема данных необходима энергия, поэтому поднимают скорость передачи данных, что бы в единицу времени успеть передать больше информации. Для этого в BLE принята скорость передачи информации в 1 Mbit/c. Однако не только скорость передачи данных важна. Самым важным в BLE является то, что устройства связи умеют переходить в синхронный режим работы. Другими словами, устройства спят 99% времени, потом просыпаются на очень короткое время, обмениваются информацией и опять засыпают. Однако перед тем как войти в этот режим, необходимо пройти процедуру синхронизации. Для этого существует режим «advertising». Его мы рассмотрим позднее. А перед тем как погрузится в описание протокола BLE, хотелось бы затронуть тему инструментальных средств, для работы с протоколом BLE.

Инструменты

Для того чтобы разобраться во всем многообразии посылок и запросов нам необходимы инструментальные средства. С их помощью мы смогли бы увидеть содержимое посылок и проконтролировать механизм взаимодействия между устройствами. Для этих целей мы будем использовать nRF51822 Development Dongle (PCA10000), программу сниффера и, для отображения результатов, хорошо известную всем сисадминам программу «Wireshark».


Программы бесплатные, но достать сам донгл может оказаться проблемой. Однако без инструментария, заниматься разработкой таких сложных устройств будет весьма проблематично. На первом этапе может помочь программа на андроиде «nRF Connect».


Она позволяет сканировать эфир, находить и разбирать посылки как присоединяемых, так и не присоединяемых устройств. У Nordic-a есть и ещё инструменты для разработки BLE устройств, но нам будет достаточно этих. На российском рынке присутствует представитель компании Nordic – фирма «Rutronik» (rutronik24.com, rutronik.com). Через её представителей можно приобрести необходимые микросхемы, отладочные платы и т.д. Кроме того, в интернете имеется форум , на котором представители фирмы отвечают на вопросы разработчиков.

Сначала вкратце поговорим о том, как пользоваться нашими инструментами. Вставим в разъем USB наш донгл и запустим программу ble_sniffer_win. Мы увидим следующее окно.


Если донгл увидит BLE устройства, то внизу появится информация о них. В данном случае, в эфире присутствует одно устройство с именем «TestBLE». Так же отображается его уровень сигнала, MAC адрес и то, что этот адрес является случайным (random). Забегая вперед, хочется заметить, что здесь кроется один из подводных камней для разработчиков. Некоторые телефоны (LG G3S, Samsung S6) работают только с устройствами, MAC адреса которых зарегистрированы (public).

У сниффера есть два режима работы. Если мы нажмем кнопку «w» на клавиатуре, то запустится программа «Wireshark». Сниффер будет сканировать три рекламных канала и выдавать информацию обо всех устройствах объявления. Если мы сначала нажмем цифру на клавиатуре, такую же, как напротив интересующего нас устройства, то включится другой режим работы. В нем сниффер будет отслеживать трафик только одного выбранного устройства, причем как на каналах объявления, так и на рабочих каналах


Используя «Wireshark», легко получить всю информацию о посылке. Программа состоит из трех окон. Сверху отображаются все принятые посылки, во втором окне – детальная информация о выбранном пакете, а в третьем окне отображается сам фрейм. В свою очередь, во втором окне имеется три блока информации. В самом верхнем – временные значения выбранного фрейма, во втором (Nordic BLE sniffer meta) – общая информация о фрейме, такие как уровень сигнала, частотный канал и некоторые другие. Самым интересным для нас является третий блок информации (Bluetooth Low Energy Link Layer). В нем можно посмотреть разбор самого фрейма. В дальнейшем мы будем говорить именно об этом блоке информации. Сначала мы разберем формирование рекламных пакетов.

Advertising

Посмотрим на рисунок ниже. На нем показаны распределения каналов по частотам для BLE. Рекламные каналы - это 37 (2402Мгц), 38 (2426Мгц) и 39 (2480Мгц) каналы. Такое распределение рекламных каналов выбрано не случайно. Во-первых, рекламные каналы попадают между каналами Wi-Fi (1, 6, 11 каналы), что позволяет даже при малом уровне мощности, быть услышанными другими устройствами. Во-вторых, когда мы разносим рекламные каналы далеко друг от друга, мы получаем гарантированную доставку сообщения. Это связано с интерференцией сигнала в помещениях. Известно, что в результате отражения радиосигналов от стен, может получиться ситуация, когда приемник и передатчик не слышат друг друга. Однако в нашем случае, когда передача рекламных пакетов идет последовательно на трех разных каналах, максимально удаленных друг от друга по частоте, этот эффект отсутствует.


Рассмотрим теперь формат самого пакета advertising. В спецификации длина данных измеряется в октетах. Для нас это байты. Самым первым байтом идет преамбула. Она состоит из чередующихся нулей и единиц. Это нужно для синхронизации передатчика и приемника. Следом за преамбулой передаются четыре байта адреса доступа(Access Address). После него идет пакет данных (PDU). В спецификции 4.0 максимальная длина PDU составляет 39 байт, а в версии 5.0 длина пакета данных увеличена до 257 байт. В конце каждого рекламного пакета идут три байта контрольной суммы (CRC).
Здесь надо заметить, что Access Address служит для того, что бы устройства понимали, для кого предназначен BLE пакет. Это своеобразный код доступа. Если этот код доступа не знаком устройству, то пакет игнорируется. На всех рекламных каналах, в отличии от рабочих, он одинаков (0x8E89BED6), поэтому все устройства на каналах объявления видят друг друга.

Рассмотрим теперь формат блока данных PDU. В самом начале пакета PDU идет заголовок длинной 16 бит. В нем содержится тип пакета, флаги TxAdd, RxAdd, а так же длина всего поля PDU в байтах. RFU – это зарезервированные поля. Для спецификации 4.0 это выглядит так:


Заголовок:
Для спецификации 5.0 увеличена длина поля Payload до 255 байт, а так же добавлены новые поля в заголовок:
Заголовок:
Поле TxAdd как раз и отвечает за то, как будет видеться MAC адрес устройства. Если это поле равно единице, то МАС устройства будет виден как random. Рассмотрим теперь какие бывают типы advertising пакетов. На рисунке приведен их список для спецификации 4.0. В формате 5.0 их число увеличено, но мы будем рассматривать то, что есть в обоих форматах.


ADV_IND – это ненаправленные пакеты, которые рассылают устройства, готовые к присоединению. Большинство гаджетов при рассылке рекламных пакетов используют именно их.

ADV_NONCONN_IND – рекламные пакеты, которые рассылают не присоединяемые устройства. Это маяки (beacon). Обычно они служат для получения какой-либо справочной информации. Например, при входе в магазин могут информировать об акциях. Кроме того, измеряя уровень сигналов от маяков и зная карту их расположения, можно осуществить автоматическое позиционирование внутри помещений. Это актуально для автоматизированных складов.

SCAN_REQ, SCAN_RSP, CONNECT_REQ – пакеты, которыми обмениваются присоединяемое устройство и телефон в процессе установления синхронного соединения. Эти пакеты и сам процесс присоединения мы рассмотрим во второй части статьи.

ADV_SCAN_IND – эти пакеты рассылает не присоединяемое устройство, которое может предоставить дополнительную информацию в ответ на запрос при сканировании.

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

Печерских Владимир

Теги:

  • ble
  • bluetooth 4.0
Добавить метки

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

Bluetooth повсеместно используется для подключения периферийных устройств (он встраивается в смартфоны, телефоны, КПК, планшеты, навигаторы, ноутбуки, принтеры, наушники, мыши, клавиатуры и т.д.) и передачи небольших объемов информации (например, по Bluetooth вы запросто можете перекинуть в телефон друга мелодию или картинку). По сравнению с Wi-Fi Bluetooth потребляет гораздо меньше электроэнергии, но при этом и скорость его в десятки раз меньше

Bluetooth 1.0/1.1

Bluetooth 1.0/1.1 - разработан в 1998 году. Скорость первой версии стандарта была небольшой и составляла всего 150 Кбит/с (Bluetooth 1.0/1.1).

Bluetooth 2.0

Bluetooth 2.0 является эволюционным развитием стандарта 1.0/1.1, в результате которого значительно увеличилась скорость соединения (до 3 Мбит/с ) и повысилось энергосбережение. На сегодняшний день Bluetooth 2.0 является самым распространённым стандартом. Он используется в беспроводных гарнитурах, наушниках, клавиатурах и мышках, сотовых телефонах, смартфонах, ноутбуках и т.д.

Bluetooth 3.0

Для увеличения скорости передачи данных в 2009 году был принят стандарт Bluetooth 3.0, который сочетает в себе технологии Bluetooth и Wi-Fi . Bluetooth 3.0 позволяет работать в двух радиорежимах: в одном передача данных осуществляется со скоростью до 3 Мбит/с (как и у Bluetooth 2.0) и характеризуется пониженным энергопотреблением (что позволяет значительно экономить электроэнергию и увеличивать время работы мобильного устройства без дополнительной подзарядки), во втором скорость передачи достигает 24 Мбит/с , но значительно увеличивается энергопотребление. Выбор режима работы происходит автоматически в зависимости от размера передаваемого файла. Для передачи небольших файлов используется медленный канал, для больших – быстрый.

Важно помнить, что хотя Bluetooth 3.0 и использует технологию Wi-Fi стандарта 802.11, с Wi-Fi 802.11b/g/n он несовместим!

Bluetooth 4.0

Bluetooth 4.0 как стандарт был принят в июне 2010 года. Отличительной особенностью версии 4.0 является режим сверхнизкого энергопотребления и стабильная работа на расстоянии до 100 м. В первую очередь Bluetooth 4.0 рассчитан на использование в разнообразных миниатюрных датчиках, которые смогут работать до нескольких лет от одной батарейки. Особенность состоит в том, что в датчиках Bluetooth активируется только в момент приема/передачи информации. Для остальных устройств (телефоны, смартфоны, планшеты, ноутбуки) Bluetooth доступен для использования в классическом понимании – передача файлов, обмен фотографиями и музыкой, пересылка контактов. При этом максимальная скорость, как и в спецификации Bluetooth 3.0, составляет 24 Мбит/с .

Для удобства пользователей, введены два новых понятия: Bluetooth SMART и Bluetooth SMART READY .

  • Bluetooth SMART – обозначение миниатюрных устройств со встроенными датчиками, собирающими самую разнообразную информацию: электронный измеритель пульса, давления, датчик закрытия окон или дверей, электронный цифровой замок автомобиля, домашний термометр пульт от телевизора и многое другое.
    ВАЖНО!!! Устройства Bluetooth SMART смогут передавать информацию только на Bluetooth SMART READY совместимые устройства.
  • Bluetooth SMART READY – обозначение устройств, работающих с датчиками Bluetooth SMART, то есть считывающих и обрабатывающих информацию поступающую от них. Например, устройства подсчитывающие количество сожженных калорий получая данные с шагомера или же подающие звуковой сигнал в случае срабатывания беспроводного датчика задымления помещения и многое другое. Bluetooth SMART READY устройства полностью совместимы с Bluetooth 2.0/3.0 оборудованием.

Технология Bluetooth энергично пробивает себе место в сфере интернета вещей. Часть этой технологии, именуемая Bluetooth LE (Bluetooth Low Energy , она же Bluetooth Smart , она же BLE ) прямо позиционирует себя как идеальный выбор для IoT (Internet of things ). Трудно не согласится. BLE уже умеет маршрутизировать Internеt трафик, определять координаты в помещениях, подключать промышленные программируемые логические контроллеры, поддерживать WEB серверы, подключать весы, термометры, пульсометры, оксиметры, тонометры и массу других вещей. C BLE автоматически решается множество проблем присущих решениям с использованием Wi-Fi . Недолго осталось до момента, когда устройства с BLE смогут организовываться в MESH сети , по технологии схожей с ZigBee . Это уже отражено в спецификации Bluetooth 5.0

Поэтому при разработке своего IoT модуля я безусловное предпочтение отдал именно BLE в противоположность использованию Wi-Fi . Периферийную часть сети BLE я буду рассматривать на примере отладочного модуля K66BLEZ .

Здесь я хотел бы описать свой маршрут разработки от почти полного неведения о BLE до выпуска серийного изделия.

Знакомство с модулем K66BLEZ1 было начато в этих статьях:

Модуль K66BLEZ в качестве приемо-передатчика BLE использует чип MKW40Z160 (48 MHz Cortex-M0+, 160 KB Flash, 20 KB RAM ) производства копании NXP . Чип интересен тем, что наряду с BLE может работать и как приемо-передатчик сигналов стандарта 802.15.4 . А стандарт 802.15.4 , как известно, является несущей в технологии ZigBee . Непосредственно стек ZigBee для MKW40Z не выпущен, но уже предлагается фирмваре где 802.15.4 работает одновременно с BLE .

Схема части модуля с чипом BLE приведена ниже.


(Кликнуть для увеличения)

На смену чипу MKW40 уже есть чип MKW41 с объёмом RAM 128 кБ, объёмом Flash 512 кБ и поддержкой всех популярных протоколов: BLE 4.2, BLE Mesh, ZigBee, Thread, IPv6 6LoBLE . На новый чип пока нет открытой документации, но он обещает быть pin совместимым с MKW40.

BLE чип MKW40 на модуле соединяется с главным микроконтроллером MK66 интерфейсами SPI и I2C. Интерфейс I2C также соединяет чип с микросхемой зарядника. Главный канал связи реализован на интерфейсе SPI со битовой скоростью 6 Мбит/сек.

Отладка программы в чипе MKW40 может выполняться через SWD интерфейс с помощью JTAG адаптера и через отладочный интерфейс UART0 также выведенный на разъем отладчика X4.
Фирма NXP предоставляет более двух десятков примеров реализации различных приложений на чипе MKW40 среди которых: измерители давления, уровня глюкозы, температуры, датчики приближения, измерители частоты сердечных сокращений и т.д. Есть приложения для беспроводного UART и беспроводного загрузчика.

Мной был проделан глубокий рефакторинг фреймворка от NXP для этих чипов и созданы новые профили с демонстрационными программами на Windows PC не требующими отдельного адаптера на стороне PC. Но об этом позже.

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

Расшифровка и перевод терминов и сокращений, сленг.

  • Pairing - связывание (пайринг). Процесс создания парами BLE устройств одного или более совместных секретных ключей для последующего шифрования трафика. Пользователь оказывается вовлечён в этот процесс, когда система просит ввести PIN код.
  • Bonding - привязка(бондинг). Процесс сохранения совместных секретных ключей для использования при последующих доверительных соединениях пар BLE устройств.
  • Device authentication - проверка(аутентификация) на предмет того, что два устройства имеют одинаковые секретные ключи.
  • Advertising - Процесс широковещательной трансляции BLE устройством пакетов оповещений(адвертайсинг). В этих пакетах устройство сообщает своё имя и адрес, сообщает о сервисах, которые предоставляет, а также специальную информацию.
  • Scanning - Процесс приёма пакетов адвертайсинга от других BLE устройства при пассивном сканировании. При активном сканировании отсылка пакетов запросов на дополнительную информацию от устройств, работающих в режиме адвертайсинга.
  • Profile - профиль. Набор перечней функций, свойств, поведений и ролей для совокупности уровней определённого стека протоколов.
  • UUID - universally unique identifier. 128-и битный уникальный идентификатор атрибута.
  • BLE Host - хост. Часть программного обеспечения стека BLE выполняющаяся на главном процессоре, на котором выполняется и основное приложение либо выполняется функциональность моста к основному приложению. Хост содержит GAP, GATT, базу данных GATT, L2CA.
  • BLE Controller - контроллер. Часть программного обеспечения стека BLE выполняющаяся на радио-чипе Bluetooth.
  • HCI - Host Controller Interface. Протокол или API в зависимости от контекста для взаимодействия между BLE хостом и BLE контроллером.
  • GAP - Generic Access Profile, типовой профиль доступа. Обычно сразу же это называют layer (слой). Но это довольно странно называть профиль слоем. В исходниках это представлено как множество макросов, объявления и функций для установления и поддержания связи между BLE устройствами.
  • GATT - Generic Attribute Profile, типовой профиль атрибутов. В исходниках это набор функций для обмена данными между устройствами. Атрибуты - это единицы данных разных типов (строки, числа, структуры...) организованные в виде иерархического дерева узлами которого являются сервисы, характеристики, дескрипторы и т.д. Атрибут характеризуется тем, что имеет уникальный идентификатор UUID.
  • L2CA - Logical Link Control and Adaptation Layer. Программный слой с соответствующим протоколом ответственный за установления и поддержание логических каналов связи. Занимается планированием пересылок, контролем ошибок, сегментацией пакетов, управлением потоками, мультиплексированием пакетов между протоколами верхнего уровня. Является частью BLE хоста.
  • SMP - Security Manager Protocol. Протокол используемый для пайринга. Работает по выделенному каналу в L2CA.
  • LTK - Long-Term Key. Секретный ключ применяющийся при шифровании BLE трафика.
  • IRK - Identity Resolving Key. Ключ для расшифровки реального адреса устройства из запутанного публичного.
  • CSRK - Connection Signature Resolving Key. Ключ для подписи сообщений.
  • RAND - 64-х битная случайная величина, применяется для формирования LTK
  • EDIV - 16-и битная случайная величина, применяется для формирования LTK
  • MITM - man-in-the-middle. Попытка вскрыть третьей стороной совместный секретный ключ двух устройств внедряясь в канал связи между устройствами как промежуточное звено.
  • Message integrity - защита от подделки сообщений.
  • Фреймворк - так я здесь называю программное обеспечение в исходных текстах, призванное упростить создание приложений на определённой аппаратной платформе с определёнными библиотеками стеков коммуникационных протоколов. Включает обычно в себя BSP (board support package), HAL (hardware abstraction layer), OSA (OS abstraction layer), промежуточное программное обеспечение (middleware) такое как: менеджеры памяти, файловые системы, планировщики и таймеры и проч.

Анализ конкурирующих решений

При выборе чипа для BLE я провёл небольшой анализ предложений от наиболее известных производителей. Больше всего меня интересовал состав предлагаемого программного обеспечения, фреймворки и инструменты компиляции-сборки-отладки проектов под ядро ARM. Важным фактором была преемственность со средой IAR и фреймворком RTOS MQX которые используются при разработке приложения на главном процессоре модуля.

Кроме этого предлагается пакет nrf5 IoT SDK . В него входят исходники протоколов MQTT, COAP, TLS (взятый из проекта MBED), cJSON, lwip (свободный стек протоколов TCP/IPv4/IPv6), интерфейс сокетов, адаптер к IPv6. Есть и 6LoWPAN , но без исходных текстов.

Три частоты (на рисунке выше обозначены номерами каналов 37,38,39) выделены для широковещательных безадресных посылок, а остальные для передачи пакетов при установлении логических каналов связи между устройствами. Известной особенностью Bluetooth является то, что при передаче пакетов каждый следующий пакет передаётся на другой частоте выбираемой псевдослучайно из списка разрешённых.

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

Модули BLE могут работать как однонаправленные передатчики, т.е. без установки двунаправленного соединения, просто транслировать в эфир какие-то данные в форме пакетов объявлений, например, температуру. Для этого может использоваться тип данных в Advertising пакетах обозначенный как Manufacturer Specific Data . Компьютер или планшет могут принимать данные с сотен таких передатчиков без лишних предварительных действий по поиску, установлению соединения, вводу пинкода и проч.
Другой возможностью передать данные без установки канала связи является передача в режиме запрос-ответ (запрос - пакет ScanRequest , ответ модуля - пакет ScanResponce ). Этим BLE существенно отличаются от Wi-Fi , где даже для простейшего термометра надо устанавливать соединение, отнимающее ресурсы роутера.

Стек протоколов BLE

Ниже на рисунке дано представление BLE как его видит программист микроконтроллеров. Стек BLE состоит из двух программных частей: Host и Controller . Программная часть Host занимается высокоуровневыми функциями организации и управления данными, подключениями, а Controller управляет физической периферией приёмопередатчика, работает с секретными ключами и занимается другими низкоуровневыми функциями. Названные части соединены программным интерфейсом HCI (Host Controller Interface ). В реализации для ПК часть Host работает на компьютере, а часть Controller работает в аппаратном приемо-передатчике Bluetooth , а протокол HCI чаще всего передаётся по USB . В реализации на микроконтроллере обе части работают на одном чипе, а интерфейс HCI превращается просто в прямую передачу данных из задачи (программного модуля) хоста в задачу (программный модуль) контроллера и обратно.
По сути программист видит несколько наборов API работающих на уровне Host : называемые GATT , GAP, L2CA, SMP, HCI . С помощью GAP API устанавливается режим работы устройства - Central, Peripheral, Observer, Broadcaster и устанавливается соединение, когда нужно. А с помощью GATT API выполняется непосредственная передача и приём полезных данных и их разбор.


(Кликнуть для увеличения)

Большинство существующих устройств пока поддерживают версию BLE 4.1, несмотря на существование версии 4.2.

Все отличия версии 4.2 от предыдущей касаются именно улучшений в части BLE: увеличение скорости, возможность передачи IP протокола и HTTP трафика, усиление криптографической защиты и неопознаваемости для внешних наблюдателей.

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

Ниже приведена грубая иерархия атрибутов в BLE устройстве.


(Кликнуть для увеличения)

Ниже чуть более подробное типовое дерево атрибутов. Это не полное дерево, большинство опущено поскольку заняло бы слишком много места. Цветами выделяются уровни дерева, каждый атрибут имеет уникальный номер - UUID. Запись стандартных номеров сокращается до 16-и бит. На данном рисунке все номера стандартные. Профили GAP и GATT тоже представлены как сервисы со своими стандартными характеристиками. У каждого сервиса может быть своя модель защиты и авторизация. Все дерево целиком в устройстве хранится как база данных называемая базой GATT, обычно в виде простой таблицы с перекрёстными ссылками.

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

Обмен данными между BLE устройствами производится записью и чтением значений характеристик. Потоковых каналов таких как TCP или UART здесь нет. А если устройства их имеют, то значит их организуют программные надстройки более высокого уровня.

Инструменты разработки

Средства разработки с предлагаемые сайтом Bluetooth Special Interest Group (Bluetooth SIG) -

На сайте главной организации стандартизации - Bluetooth SIG предлагаются следующие полезные инструменты:

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

Для решений на основе фреймворка NXP Kinetis KW40Z Connectivity Software плагинов пока нет.

Выше приведён скриншот единственного демонстрационного приложения для Windows - BLEServiceBrowser .

При работе с адаптерами также есть ограничения в анализе, вызванные шифрованием трафика в BLE.

Однако даже от триальной версии программы можно получить много пользы. Программа сопровождается демонстрационными записями перехватов обмена реальных устройств. Эти записи после загрузки в программу дают подробнейшую картину работы всего стека протоколов BLE. Просмотр одного такого перехвата заменяет изучение всей спецификации Bluetooth.

Bus Hound

Если требуется просто как-то наблюдать за активностью между компьютером и BLE устройством и можно обойтись без подробного разбора протокола, то сгодится известный перехватчик трафика драйверов Windows под названием Bus Hound .

На скриншоте ниже виден поток принимаемых пакетов адвертайзинга. Хорошо заметна неравномерность интервалов времени приема пакетов. Это говорит о значительных потерях пакетов. Интервал адвертайзинга у BLE устройства был установлен равным 20 мс.

Скриншоте ниже показывает представление BLE устройства в окне Bus Hound после пайринга с PC. Для каждого сервиса устройства после пайринга появляется свой логический канала связи. Здесь же можно увидеть UUID устройства и сервисов.

Анализатор BLE траффика (сниффер) USB-KW40Z

Это инструмент из комплекта поддержки разработки на платформе Kinetis. Поэтому остановлюсь на нём подробнее. Страница сниффера на сайте NXP.

Сниффер разработан фирмой NXP (вернее бывшей Freescale) и его можно недорого приобрести в популярных on-line магазинах радиодеталей: Mouser, Digi-Key, Farnell… Он предлагается фирмой NXP как инструмент наблюдения за радио-пакетами, посылаемыми BLE устройствами.

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

Скачать программное обеспечение для PC к снифферу можно по следующему поисковому запросу на сайте www.nxp.com - Kinetis_Protocol_Analyzer_Adapter.exe

Поскольку сниффер кроме основной функции может быть ещё и отладочной платформой для разных приложений, то к нему прилагаются бинарные файлы базовой прошивки, с помощью которых можно восстановить функциональность снифера после экспериментов. Файлы идут с пакетом KW40Z Connectivity Software , который скачивается с сайта www.nxp.com по поисковому запросу KW40Z_Connectivity_Software. Файлы будут называться Sniffer_processing_core_usbkw40z_k22f.bin (для микроконтроллера MK22FN512 на плате сниффера) и Sniffer_radio_core_usbkw40z_kw40z.bin (для микроконтроллера MKW40Z на плате сниффера). Файлы программируются с помощью SWD отладчиков: JLink, STLink, OpenSDA…

Со стороны ПК устройство воспринимается как композитное USB устройство с одним COM портом и одним отладочным портом согласно спецификации, OpenSDA с прошивкой CMSIS-DAP. Таким образом в среде IAR можно свободно программировать и отлаживать чип MKW40Z снифера используя другой его чип MK22FN512 в качестве носителя функциональности отладочного адаптера. Но оба чипа на плате имеют стандартные разъёмы SWD для внешнего отладочного адаптера.

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

Ниже показано окно программы анализатора пакетов. В окне включён перехват по всем трём каналам:

При инсталляции ПО анализатора на ПК, оно создаёт виртуальный Ethernet адаптер, который конвертирует пакеты, снятые через виртуальный COM порт снифера в вид Ethernet пакетов. В моем случае такой виртуальный адаптер автоматически получил незатейливое название - Ethernet.
Чтобы увидеть пакеты дополнительно нужно инсталлировать программу сниффер Ethernet пакетов Wireshark. Добавить метки

В индустрии хайтека очень важно, чтобы пользователь понимал преимущества тех или иных технологий. Простой пример - Wi-Fi 802.11n. Благодаря умелому маркетингу производителям удалось донести до клиентов, что устройства стандарта 802.11n передают данные быстрее своих предшественников. И этого достаточно - увидев магическую букву “n” на коробке с роутером, счастливый покупатель его с руками оторвёт. С технологией Wi-Fi разобрались, переходим к Bluetooth .

Что такое Bluetooth 4.0, о котором мы так часто говорим в последнее время? Дойдя до этого вопроса, любознательные полезут за ответом в Википедию. И будут правы, но это совсем не то, чего хотят производители. Им нужно обеспечить узнаваемость технологии. Им хочется, чтобы вы прыгали от восторга, увидев новую версию Bluetooth в списке характеристик очередного iPhone. Что мешает? Мешают, как ни странно, цифры. “Четыре ноль”, “два один” - для пользователя всё едино. Пользователь скажет: “Моя гарнитура работает с любым телефоном, какая мне разница, что там за версия?”

А ведь смысл-то в том, что Bluetooth 4.0 разрабатывался вовсе не под гарнитуры. Он хорош для небольших электронных датчиков: спортивных, медицинских и многих других. Иными словами, четвёртая версия - это не совсем общепринятый Bluetooth, это другая технология, другая по своей направленности . С её названием Bluetooth Special Interest Group (сокращённо Bluetooth SIG) села в лужу. Если уж разрабатываете что-то инновационное, не ставьте новинку в один ряд с привычными понятиями. Придумайте новое название.

Что Bluetooth SIG и сделали! Встречаем Bluetooth Smart . Ничего нового, это просто имя для технологий, заложенных в стандарт Bluetooth 4.0.

Устройства Bluetooth Smart предназначены для сбора определённых видов информации (Все ли окна в моём доме закрыты? Каков мой уровень инсулина? Сколько я сегодня вешу?) и их отправки на совместимое устройство.

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

Из официального пресс-релиза Bluetooth Smart

Таким образом, через годик-другой вы сможете напичкать свой дом, свои вещи и самого себя разнообразными датчиками, которые будут дружно посылать информацию на ваше устройство. Благодаря энергосберегающим алгоритмам четвёртого Bluetooth любой такой датчик проработает долгие годы от одной-единственной батарейки. Вы сможете спросить у Siri: “Закрыта ли моя машина?” - и она вам ответит!

В ассоциации Bluetooth SIG состоят несколько крупных производителей, но из всех них только Apple активно внедряет чипы Bluetooth 4.0 в свои устройства. Первыми двумя “ласточками” стали летние . Теперь подоспел ещё . А вот линейку MacBook Pro, несмотря на вчерашний , пока оставили “за бортом”. Заменить процессоры при неизменной структуре чипсета - это одно дело. Внедрить новую технологию - совсем другое. [macrumors ]

сайт В индустрии хайтека очень важно, чтобы пользователь понимал преимущества тех или иных технологий. Простой пример - Wi-Fi 802.11n. Благодаря умелому маркетингу производителям удалось донести до клиентов, что устройства стандарта 802.11n передают данные быстрее своих предшественников. И этого достаточно - увидев магическую букву “n” на коробке с роутером, счастливый покупатель его с руками оторвёт. С технологией...

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

Bluetooth повсеместно используется для подключения периферийных устройств (он встраивается в смартфоны, телефоны, КПК, планшеты, навигаторы, ноутбуки, принтеры, наушники, мыши, клавиатуры и т.д.) и передачи небольших объемов информации (например, по Bluetooth вы запросто можете перекинуть в телефон друга мелодию или картинку). По сравнению с Wi-Fi Bluetooth потребляет гораздо меньше электроэнергии, но при этом и скорость его в десятки раз меньше

Bluetooth 1.0/1.1

Bluetooth 1.0/1.1 - разработан в 1998 году. Скорость первой версии стандарта была небольшой и составляла всего 150 Кбит/с (Bluetooth 1.0/1.1).

Bluetooth 2.0

Bluetooth 2.0 является эволюционным развитием стандарта 1.0/1.1, в результате которого значительно увеличилась скорость соединения (до 3 Мбит/с ) и повысилось энергосбережение. На сегодняшний день Bluetooth 2.0 является самым распространённым стандартом. Он используется в беспроводных гарнитурах, наушниках, клавиатурах и мышках, сотовых телефонах, смартфонах, ноутбуках и т.д.

Bluetooth 3.0

Для увеличения скорости передачи данных в 2009 году был принят стандарт Bluetooth 3.0, который сочетает в себе технологии Bluetooth и Wi-Fi . Bluetooth 3.0 позволяет работать в двух радиорежимах: в одном передача данных осуществляется со скоростью до 3 Мбит/с (как и у Bluetooth 2.0) и характеризуется пониженным энергопотреблением (что позволяет значительно экономить электроэнергию и увеличивать время работы мобильного устройства без дополнительной подзарядки), во втором скорость передачи достигает 24 Мбит/с , но значительно увеличивается энергопотребление. Выбор режима работы происходит автоматически в зависимости от размера передаваемого файла. Для передачи небольших файлов используется медленный канал, для больших – быстрый.

Важно помнить, что хотя Bluetooth 3.0 и использует технологию Wi-Fi стандарта 802.11, с Wi-Fi 802.11b/g/n он несовместим!

Bluetooth 4.0

Bluetooth 4.0 как стандарт был принят в июне 2010 года. Отличительной особенностью версии 4.0 является режим сверхнизкого энергопотребления и стабильная работа на расстоянии до 100 м. В первую очередь Bluetooth 4.0 рассчитан на использование в разнообразных миниатюрных датчиках, которые смогут работать до нескольких лет от одной батарейки. Особенность состоит в том, что в датчиках Bluetooth активируется только в момент приема/передачи информации. Для остальных устройств (телефоны, смартфоны, планшеты, ноутбуки) Bluetooth доступен для использования в классическом понимании – передача файлов, обмен фотографиями и музыкой, пересылка контактов. При этом максимальная скорость, как и в спецификации Bluetooth 3.0, составляет 24 Мбит/с .

Для удобства пользователей, введены два новых понятия: Bluetooth SMART и Bluetooth SMART READY .

  • Bluetooth SMART – обозначение миниатюрных устройств со встроенными датчиками, собирающими самую разнообразную информацию: электронный измеритель пульса, давления, датчик закрытия окон или дверей, электронный цифровой замок автомобиля, домашний термометр пульт от телевизора и многое другое.
    ВАЖНО!!! Устройства Bluetooth SMART смогут передавать информацию только на Bluetooth SMART READY совместимые устройства.
  • Bluetooth SMART READY – обозначение устройств, работающих с датчиками Bluetooth SMART, то есть считывающих и обрабатывающих информацию поступающую от них. Например, устройства подсчитывающие количество сожженных калорий получая данные с шагомера или же подающие звуковой сигнал в случае срабатывания беспроводного датчика задымления помещения и многое другое. Bluetooth SMART READY устройства полностью совместимы с Bluetooth 2.0/3.0 оборудованием.


Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ:
NexxDigital - компьютеры и операционные системы