Технологии Bluetooth активно пробивает себе путь в пространство Интернета вещей.
Часть этой технологии называется Bluetooth ЛЕ ( Bluetooth с низким энергопотреблением , она такая же Bluetooth Смарт , она такая же БЛЕ ) напрямую позиционирует себя как идеальный выбор для Интернет вещей ( Интернет вещей ).
Трудно не согласиться.
БЛЕ уже умеет маршрутизировать интернет-трафик, определять координаты помещений, подключать промышленные программируемые логические контроллеры, поддерживать ВЕБ серверы, подключаем весы, термометры, пульсометры, оксиметры, тонометры и многое другое.
С БЛЕ автоматически решает многие проблемы, присущие решениям с использованием Wi-Fi .
Пройдет совсем немного времени, и устройства с БЛЕ сможет организовать в MESH-сети , с технологией, аналогичной ЗигБи .
Это уже отражено в спецификации Блютуз 5.0 Поэтому при разработке своего Интернет вещей Я отдал абсолютное предпочтение модулю БЛЕ в отличие от использования Wi-Fi .
Периферийная часть сети БЛЕ Я рассмотрю на примере отладочного модуля К66БЛЕЗ .
Здесь я хотел бы описать свой путь развития от практически полного незнания БЛЕ до выпуска серийного продукта.
Знакомство с модулем К66БЛЕЗ1 было начато в этих статьях:
Универсальный модуль контроллера для Интернета вещей.Модуль К66БЛЕЗ в качестве трансивера БЛЕ использует чип MKW40Z160 ( 48 МГц Cortex-M0+, 160 КБ флэш-памяти, 20 КБ ОЗУ ) производства компании НХП .Дыхание в жизни
Универсальный модуль контроллера для Интернета вещей.Тестирование FatF
Универсальный модуль контроллера для Интернета вещей.Основы программирования
Схема модуля Репозиторий проекта
Чип интересен тем, что наряду с BLE может работать и как приемопередатчик стандартных сигналов.
802.15.4 .
Стандарт 802.15.4 известен как носитель технологий ЗигБи .
Стек сам ЗигБи Для MKW40Z не выпущен, но уже предлагается на прошивках, где 802.15.4 работает одновременно с БЛЕ .
Схема части модуля с чипом BLE представлена ниже.
(Нажмите, чтобы увеличить)
Для замены чипа МКВ40 уже есть чип МКВ41 с объемом оперативной памяти 128 КБ, объемом Flash 512 КБ и поддержкой всех популярных протоколов: BLE 4.2, BLE Mesh, ZigBee, Thread, IPv6 6LoBLE .
Открытой документации на новый чип пока нет, но обещают, что он будет совместим по выводам с MKW40. Чип MKW40 BLE на модуле подключен к основному микроконтроллеру MK66 через интерфейсы SPI и I2C. Интерфейс I2C также соединяет чип с микросхемой зарядного устройства.
Основной канал связи реализован на интерфейсе SPI со скоростью передачи данных 6 Мбит/с.
Отладка программы в микросхеме MKW40 может осуществляться через интерфейс SWD с помощью JTAG-адаптера и через интерфейс отладки UART0, также подключенный к разъему отладчика X4. NXP предоставляет более двух десятков примеров реализации различных приложений на чипе MKW40, среди которых: измерители давления, уровня глюкозы, измерители температуры, датчики приближения, измерители сердечного ритма и т. д. Есть приложения для беспроводного UART и беспроводного загрузчика.
Я провел глубокий рефакторинг фреймворка NXP для этих чипов и создал новые профили с демонстрационными программами на ПК с Windows, которые не требуют отдельного адаптера на стороне ПК.
Но об этом позже.
Bluetooth LE сложно освоить.
Причина — объемная спецификация и большое количество ее кратких пересказов в документации производителей, которые сразу начинаются с непривычной терминологии.
Итак, начнем с этого.
Расшифровка и перевод терминов и сокращений, сленга.
- Сопряжение — привязка (спаривание).
Процесс создания парами устройств BLE одного или нескольких общих секретных ключей для последующего шифрования трафика.
Пользователь участвует в этом процессе, когда система просит ввести ПИН-код.
- Склеивание — связывание (бондинг).
Процесс хранения общих секретных ключей для использования в последующих доверенных соединениях между парами устройств BLE.
- Аутентификация устройства — проверка (аутентификация), чтобы убедиться, что два устройства имеют одинаковые секретные ключи.
- Реклама — Процесс трансляции пакетов уведомлений BLE-устройством (реклама).
В этих пакетах устройство сообщает свое имя и адрес, информирует о предоставляемых услугах, а также специальную информацию.
- Сканирование — Процесс получения рекламных пакетов от других BLE-устройств при пассивном сканировании.
Во время активного сканирования отправка пакетов запросов дополнительной информации от устройств, работающих в рекламном режиме.
- Профиль — профиль.
Набор списков функций, свойств, поведения и ролей для набора уровней определенного стека протоколов.
- UUID — универсальный уникальный идентификатор.
128-битный уникальный идентификатор атрибута.
- BLE-хост - хозяин.
Часть программного обеспечения стека BLE, работающая на главном процессоре, которая также запускает основное приложение или выполняет функции моста к основному приложению.
Хост содержит GAP, GATT, базу данных GATT, L2CA.
- BLE-контроллер — контроллер.
Программная часть стека BLE, работающая на радиочипе Bluetooth.
- HCI - Интерфейс хост-контроллера.
Протокол или API, в зависимости от контекста, для взаимодействия между хостом BLE и контроллером BLE.
- ЗАЗОР — Generic Access Profile, типовой профиль доступа.
Обычно это сразу называют слоем.
Но довольно странно называть профиль слоем.
В исходном коде это представлено в виде множества макросов, объявлений и функций для установления и поддержания связи между BLE-устройствами.
- ГАТТ — Общий профиль атрибута, типичный профиль атрибута.
В исходном коде это набор функций для обмена данными между устройствами.
Атрибуты — это единицы данных разных типов (строки, числа, структуры.
), организованные в виде иерархического дерева, узлами которого являются сервисы, характеристики, дескрипторы и т. д. Атрибут характеризуется наличием уникального UUID.
- L2CA - Уровень управления логическим каналом и адаптации.
Программный уровень с соответствующим протоколом отвечает за создание и поддержание логических каналов связи.
Занимался прямым планированием, контролем ошибок, сегментацией пакетов, управлением потоками и мультиплексированием пакетов между протоколами верхнего уровня.
Это часть хоста BLE.
- СМП - Протокол диспетчера безопасности.
Протокол, используемый для сопряжения.
Работает по выделенному каналу в L2CA.
- ЛТК - Долгосрочный ключ.
Секретный ключ, используемый для шифрования трафика BLE.
- ИРК - Ключ разрешения личности.
Ключ для расшифровки реального адреса устройства от замаскированного общедоступного.
- ЦРК - Ключ разрешения подписи соединения.
Ключ для подписи сообщений.
- РЭНД — 64-битное случайное значение, используемое для генерации LTK
- ЭДИВ — 16-битное случайное значение, используемое для генерации LTK
- МИТМ - человек посередине.
Попытка третьего лица раскрыть совместный секретный ключ двух устройств путем внедрения в канал связи между устройствами в качестве промежуточного звена.
- Целостность сообщения — защита от подделки сообщений.
- Рамки — это то, что я здесь называю программным обеспечением в исходном коде, предназначенным для упрощения создания приложений на конкретной аппаратной платформе с определёнными библиотеками стеков протоколов связи.
Обычно он включает в себя BSP (пакет поддержки платы), HAL (уровень абстракции оборудования), OSA (уровень абстракции ОС), промежуточное программное обеспечение, такое как менеджеры памяти, файловые системы, планировщики и таймеры и т. д.
Больше всего меня интересовал состав предлагаемого программного обеспечения, фреймворков и инструментов для компиляции, сборки и отладки проектов под ядро ARM. Важным фактором была преемственность среды и структуры ОАР.
ОСРВ MQX которые используются при разработке приложения на главном процессоре модуля.
СЕВЕРНЫЕ ПОЛУПРОВОДНИКИ
предоставляет SDK для чипа nRF51822 с ядром Кора головного мозга -М0. Компилируется в IAR, KEIL, GCC. Стек BLE представлен монолитной библиотекой без исходных кодов, называемой SoftDevice где реализованы все API: GAP, GATT, L2CA, HCI. Вокруг этой библиотеки построен фреймворк с драйверами.Фреймворк поставляется с двумя RTOS: РЛ-АРМ РТХ от Кейля и FreeRTOS .
Фреймворк использует технологию сериализации.
протобуф и отладка Сеггер РТТ .
Кроме того, мы предлагаем пакет nrf5 IoT SDK .
В него входят исходники протоколов MQTT, COAP, TLS (взято из проекта MBED), cJSON, lwip (свободный стек протоколов TCP/IPv4/IPv6), интерфейс сокета, адаптер на IPv6. Это также 6LoWPAN , но без исходных текстов.
Инструменты Техаса
производит только 2-ядерные чипы BLE на ARM СС2640 ( Кортекс-М3 и Кортекс-М0 ), но соответствующие характеристики Блютуз 4.2 .Предоставляет SDK для загрузки.
Программный стек SimpleLink Bluetooth с низким энергопотреблением 2.2.0 Собран в собственной среде разработки Code Composer Studio, а также в среде IAR. Поставляется со своей собственной RTOS ТИ-РТОС 2.16 и развитая структура вокруг библиотек стека BLE. SDK как один из сценариев предполагает использование внешнего процессора приложений — Simple Application Processor (SAP).
Сам чип СС2640 называемый простым сетевым процессором (SNP).
Связь между ними устанавливается с помощью протокола, называемого Единый интерфейс сетевого процессора (НПИ).
На стороне CC2640 требуется TI-RTOS; на стороне процессора SAP RTOS можно использовать по вашему усмотрению.
SDK поставляется с источниками протоколов NPI для сторон SAP и SNP. Это технология Простая ссылка .
Сам стек BLE разделен на 3 предварительно скомпилированные библиотеки без исходного кода: хост, контроллер, HCI. Все три библиотеки работают только на процессоре Cortex-M3, входящем в состав чипа CC2640. Помимо изучения TI-RTOS, пользователю здесь потребуется изучить специальный программный механизм или протокол взаимодействия со стеком BLE под названием iCall.
Микрочип-Атмел
производит чипы Bluetooth LE АТБТЛК1000 на ядре Кортекс-М0 .Весь стек микросхем записан в ПЗУ.
Никаких открытых инструментов для программирования этих чипов на сайте Atmel обнаружено не было.
Вместо этого Atmel предлагает использовать внешний микроконтроллер для взаимодействия с ATBTLC1000. Программное обеспечение для внешнего микроконтроллера и примеры находятся в пакете Atmel Software Framework. Компилируется в среде Атмел Студия (обертка для GCC) или в IAR.
Компания Cypress Semiconductor Corp.
производит семейства программируемых чипов BLE на ядре Кортекс-М0 — PSoC 4: PSoC 4XX8 И ПРОК CYBL1XX7X поддержка спецификации Блютуз 4.2 .Проекты для чипов создаются в специальной IDE. Создатель PSoC .
Чипы Cypress отличаются тем, что здесь нет готовой конфигурации периферии (UART, SPI, I2S, PWM и т.д.); его необходимо создать из библиотечных элементов в редакторе схем с добавлением программных библиотек.
Это сделано для обеспечения некоторой гибкости.
Хотя это добавляет разработчику немалый объем работы.
Сконфигурированный проект можно скомпилировать одним из тулчейнов: GCC, IAR, Keil. BLE — одна из библиотек.
Стек BLE поставляется в виде предварительно скомпилированной монолитной библиотеки без исходного кода, объединяющей хост BLE, контроллер BLE и HCI. Однако компания опубликовала исходный код приложений для Android и iOS, работающих с BLE.
Кремниевые лаборатории
производит Смарт-системы EFR32 Blue Gecko с Bluetooth на ядре ARM Кортекс-М4 поддержка спецификации Блютуз 4.2 Тип чипов EFR32BG1P332F256GMxx может передавать мощность до 19,5 дБм и объединить отдельный радиоканал на частоте 868 МГц мощностью до 20 дБм и чувствительностью -121,4 дБм.Особенностью чипов Silicon Labs является огромный выбор альтернативных функций выводов и система под названием Периферическая рефлекторная система (ПРС).
Хотя периферию нельзя создать подобно микросхемам от Cypress, их подключение к выводам практически произвольно; наличие PRS дает возможность периферийным устройствам взаимодействовать друг с другом без участия процессора.
Стек BLE от Silicon Labs способен принимать результаты генерации профиля программой.
Студия разработчиков Bluetooth о чем пойдет речь ниже.
Silicon Labs предлагает два стека Bluetooth. Один из них предназначен для модулей Bluegiga и помимо BLE поддерживает еще и обычный Bluetooth. Второй стек соответствует спецификации 4.2 и предназначен только для LE. Стек BLE поставляется как монолитная предварительно скомпилированная библиотека без исходного кода.
Для варианта с внешним микроконтроллером в исходном коде предлагается последовательный протокол и API. Его можно скомпилировать как в GCC, IAR, так и в Keil. Все делается в единой среде разработки Простота Студия V4 .
Сопутствующая структура стека не поддерживается RTOS. Но в исходном коде Simplicity Studio можно найти такие жемчужины, как Speex со скоростью 8 кбит/с, подходящий для передачи голоса по BLE, и мощный оконный графический интерфейс от Segger.
СТМикроэлектроника
производит чипы сетевых контроллеров СинийNRG на базе Кортекс-М0 содержащий стек BLE согласно спецификации Блютуз 4.1 .Сами микросхемы не программируются, но имеют последовательный командный интерфейс приложения (ACI), через который с ними должен взаимодействовать внешний микроконтроллер.
Для ACI была разработана платформа, которую можно включить как часть собственной среды разработки ST STM32Cube.
КСО ПЛК
не делает чипы BLE на ARM Cortex, но заинтересован в его реализации Сеть MESH по Bluetooth модули.видео Здесь .
Выкладываются исходники различных BLE-приложений для Android и iOS. Есть SDK.
Ренесас
производит чипы BLE на своем 16-битном ядре РЛ78 .Стек BLE выдается только премиум-пользователям.
Все свое — компилятор, ОСРВ, хост-микроконтроллер.
Но есть плагин для Студия разработчиков Bluetooth
Диалог Полупроводник
предлагают, как они утверждают, самые маленькие чипы BLE .Однако чипы с флэш-памятью DA14583 (остальное только с ПЗУ) самым маленьким назвать нельзя - 5х5 мм.
Основной Кортекс-М0 .
Максимальная мощность 0 дБм .
Поддержка спецификаций Блютуз 4.1. Чтобы получить SDK от компании, вам необходимо зарегистрироваться и пройти верификацию.
Но с такими параметрами чипа я даже не пытался получить SDK. Итак, исходники — MQTT, COAP, TLS, SPEEX, LwIP и т. д. входящие в разные SDK нас мало интересуют; их уже можно свободно найти на Github без привязки к конкретным фреймворкам.
Поддержка спецификации Bluetooth 4.2 мало помогает, поскольку ее пока нельзя использовать на ПК.
Нишевые ОСРВ, такие как TI-RTOS или специальные планировщики, нам будет сложно освоить, мы стараемся избегать таких решений.
Я был рад, что выбрал решение Kinetis. Чем интересен стек Bluetooth LE от NXP для семейства Kinetis. Стек BLE для Kinetis, как и другие, поставляется в виде предварительно скомпилированных библиотек.
На основе этих библиотек, включая драйверы и уровень абстракции оборудования, в исходном коде построена многозадачная среда, независимая от операционной системы.
Фреймворк можно настроить для работы без операционной системы или использовать ее.
Сразу из коробки фреймворк адаптирован под FreeRTOS. Но он взаимодействует с FreeRTOS через вспомогательный набор функций, называемый уровнем абстракции операционной системы (OSA).
Благодаря OSA FreeRTOS можно заменить любой другой операционной системой, поддерживающей очереди сообщений, вытеснение, флаги и таймеры.
Например, ОСРВ MQX. Стек, как ни странно, компилируется только в среде IAR. К счастью, в моем случае это не проблема.
Что еще интересно, стек разделен на две библиотеки — BLE-хост и BLE-контроллер.
А хост-библиотека BLE может работать на другом чипе.
В этом случае библиотеки взаимодействуют друг с другом через протокол HCI. Те.
В то время как другие производители предлагают другой протокол связи для приложения на внешнем микроконтроллере для взаимодействия со стеком BLE (например, SimpleLink), NXP предлагает стандартное решение.
И самое главное, при таком подходе, переместив BLE-хост на более мощный внешний микроконтроллер, мы значительно увеличиваем возможности нашей базы данных и сервисов GATT. Коротко о БЛ? Доступна открытая версия спецификации Bluetooth версии 4.2. Здесь .
Описание нижнего уровня BLE (слой Контроллер ) он включает в себя как «Пакет базовой системы Vol.6 [Том контроллера низкого энергопотребления]» со стр.
2544. Верхний уровень (уровень Хозяин ) с описанием протокола АТТ и профиля GATT находится в части «Том 3 Базовый пакет системы [хост-том]» документ со страницы 1693.
Диапазон используемых частот
(Нажмите, чтобы увеличить)
Три частоты (на рисунке выше обозначены номерами каналов 37,38,39) выделены для трансляции безадресных сообщений, а остальные — для передачи пакетов при установлении логических каналов связи между устройствами.
Известная особенность Bluetooth заключается в том, что при передаче пакетов каждый последующий пакет передается на разной частоте, псевдослучайно выбираемой из списка разрешенных.
Все данные в пакетах BLE могут быть зашифрованы и аутентифицированы.
Также используется динамическая случайная генерация адресов устройств и их идентификация с помощью хеширования, т.е.
перехватив адрес устройства в эфире, мы не сможем использовать его более 15 минут, так как за это время адрес изменится по алгоритм нам неизвестен.
Модули BLE могут работать как однонаправленные передатчики, т.е.
не устанавливая двунаправленного соединения, просто транслировать некоторые данные в виде пакетов объявлений, например, температуру.
Для этого тип данных в Реклама пакеты, обозначенные как Конкретные данные производителя .
Компьютер или планшет может принимать данные от сотен таких передатчиков без лишних предварительных действий по поиску, установлению соединения, вводу ПИН-кода и т. д. Другой возможностью передачи данных без установления канала связи является передача в режиме запрос-ответ (запрос-пакет СканЗапрос , ответ модуля - пакет СканРеспонс ).
ЭТим БЛЕ существенно отличаться от Wi-Fi , где даже для самого простого термометра нужно установить соединение, занимающее ресурсы роутера.
Стек протоколов BLE Рисунок ниже дает представление БЛЕ как это видит программист микроконтроллера.
Стек BLE состоит из двух программных частей: Хозяин И Контроллер .
Программная часть Хозяин занимается функциями высокого уровня по организации и управлению данными, соединениями и Контроллер управляет физической периферией трансивера, работает с секретными ключами и выполняет другие низкоуровневые функции.
Названные части соединены программным интерфейсом.
HCI ( Интерфейс хост-контроллера ).
Часть реализации ПК Хозяин работает на компьютере, а часть Контроллер работает в аппаратном трансивере Bluetooth и протокол HCI чаще всего передается USB .
В реализации микроконтроллера обе части работают на одном чипе, а интерфейс HCI превращается просто в прямую передачу данных от хост-задачи (программного модуля) к задаче контроллера (программного модуля) и обратно.
По сути, программист видит несколько наборов API, работающих на уровне Хозяин : называется ГАТТ , ГАП, L2CA, SMP, HCI .
Используя ГАП API установлен режим работы устройства - Центральный, периферийный, наблюдатель, вещатель и соединение устанавливается при необходимости.
И с помощью ГАТТ API Осуществляются непосредственная передача и прием полезных данных и их анализ.
(Нажмите, чтобы увеличить)
Большинство существующих устройств по-прежнему поддерживают BLE 4.1, несмотря на существование версии 4.2.
Все отличия версии 4.2 от предыдущей касаются именно улучшений BLE: увеличенной скорости, возможности передачи IP-протоколов и HTTP-трафика, усиленной криптографической защиты и неузнаваемости для внешних наблюдателей.
Важной особенностью BLE по сравнению с Wi-Fi является спецификация не только канала связи, но и самих прикладных приложений, которые его используют. Это так называемые профили и сервисы.
Профили с сервисами описывают роли устройств, назначение данных, состав и формат данных, защиту данных, порядок, типы и события обмена, а не только способ передачи данных.
Это позволяет не изобретать велосипед протоколов при разработке, например, датчика температуры тела или пульсометра.
Технические характеристики уже предоставлены; все, что остается на стороне устройства – это заполнить необходимые поля для отправки результатов измерений.
Клиенты таких устройств в виде смартфонов, планшетов, ПК или кухонной техники автоматически распознают эти данные и отображают их или используют соответствующим образом.
Это связано с тем, что все производители следуют одним и тем же спецификациям BLE в отношении представления данных о температуре или пульсе и работы с ними.
Но простор для фантазии разработчика еще есть, поскольку в профилях предусмотрены механизмы расширения функционала.
Ниже приведена приблизительная иерархия атрибутов устройства BLE.
(Нажмите, чтобы увеличить)
Ниже приведено немного более подробное типичное дерево атрибутов.
Это не полное дерево, большинство из них опущено, поскольку заняло бы слишком много места.
Уровни дерева выделяются цветом; каждый атрибут имеет уникальный номер — UUID. Запись стандартных чисел сокращена до 16 бит. На этой картинке все цифры стандартные.
Профили GAP и GATT также представлены как услуги со своими стандартными характеристиками.
Каждый сервис может иметь свою собственную модель безопасности и авторизацию.
Все дерево устройства хранится в базе данных, называемой базой данных GATT, обычно в форме простой таблицы перекрестных ссылок.
(Нажмите, чтобы увеличить)
Характеристики обслуживания имеют множество характеристик, как показано ниже.
Здесь мне придется извиниться за тавтологию, но в BLE действительно какой-то терминологический кризис.
Одним словом, характеристика, принадлежащая сервису, может иметь разрешения на чтение, запись, необходимость уведомлений, подтверждений, подписей и т.д.
(Нажмите, чтобы увеличить)
BLE — серьезная технология, поэтому многое было сделано для обеспечения безопасности и максимальной формализации, что, в свою очередь, должно облегчить достижение совместимости.
Обмен данными между устройствами BLE осуществляется путем записи и чтения значений характеристик.
Здесь нет потоковых каналов, таких как TCP или UART. А если они есть в устройствах, то они организованы программными надстройками более высокого уровня.
Инструменты разработки Инструменты разработки, предлагаемые веб-сайтом Bluetooth Special Interest Group (Bluetooth SIG) — https://www.bluetooth.com/develop-with-bluetooth/developer-resources-tools
На сайте главной организации по стандартизации - Bluetooth-сигнал Предлагаются следующие полезные инструменты:
Студия разработчиков Bluetooth
Студия разработчиков Bluetooth — инструмент, позволяющий правильно формировать и вставлять в реализацию профили, сервисы, характеристики и дескрипторы БЛЕ устройства, т. е.создать базу данных.
Если вы покупаете дополнительный Аппаратный адаптер Bluetooth тогда за 99$ программа позволяет перехватывать , расшифровывать и отображать пакеты протокола Bluetooth. В программе также есть возможности по отладке и тестированию созданных сервисов.
Поскольку в БЛЕ утвержденные профили описаны очень подробно, даже незначительные ошибки в отношении формата, нумерации, доступности и т. д. в этих профилях могут вызвать проблемы совместимости.
Но даже для нестандартных профилей очень сложно обойтись без инструмента, который точно строит дерево сервисов, характеристик и дескрипторов с соблюдением всех спецификаций.
В названиях сервисов, характеристиках, дескрипторах и их многобайтовых уникальных номерах легко запутаться — UUID .
Результатом работы инструмента, в частности, является сгенерированный XML файлы, описывающие профили, сервисы, характеристики и дескрипторы в пользовательском проекте.
Эти XML-файлы напрямую используются IDE Simplicity IDE от Silicon Labs для интеграции во встраиваемые проекты для своих чипов.
(Нажмите, чтобы
Теги: #Программирование микроконтроллеров #микроконтроллеры #Сделай сам или Сделай сам #Электроника для начинающих #Интернет вещей #BLE #Bluetooth с низким энергопотреблением #кора руки #Bluetooth LE #Kinetis #встроенный модуль
-
Философия Разработчиков Rails
19 Oct, 24 -
7 Навыков Высокоэффективных Программистов
19 Oct, 24 -
Techday Make It Real - 17 Декабря, Москва
19 Oct, 24