Компания Компэл приглашает разработчиков, технических руководителей и энтузиастов беспроводной связи на вебинар, посвященный новинке 2019 года – мультипротокольному беспроводному микроконтроллеру STM32WB55, который позволяет создавать устройства на базе стандартов BLE 5.0; BLE Mesh; 802.15.4/ZigBee и Thread.Сегодня BLE является, пожалуй, самым удобным беспроводным интерфейсом для взаимодействия с любой встраиваемой системой через обычный смартфон или планшет. Несмотря на относительную сложность стека Bluetooth Low Energy, новый беспроводной микроконтроллер STM32WB55 в сочетании с большим количеством типовых примеров разработки позволяет создавать полноценное BLE-приложение за один вечер!На вебинаре мы покажем, как с помощью привычных инструментов STM32Cube и STM32CubeMX можно создать свое первое, надежно работающее BLE-приложение.
Содержание
STM32WB55 – особенности и отличие от конкурентов
Инструменты разработчика и готовые примеры кода
Как создать BLE-проект с нуля с помощью STM32Cube
Запускаем пример «прозрачного UART» – аналог SPP для BLE
Общая информация
Начало: 27 ноября 2019 г. в 11:00 Продолжительность: 90 минут Форма участия: бесплатно Добавить в календарь: Google, iCal
Докладчик
Барсов Владислав – инженер по программированию и применению микроконтроллеров STMicroelectronics в компании Компэл.
Видео
Вопросы и ответы
Интересует максимальная частота пакетов, передаваемых по BLE для realtime обработки данных, а также совместимость c андроидами и айфонами.
STM32WB55 — сертифицированное решение для BLE, поэтому гарантирует совместимость с любыми смартфонами и планшетами BLE 4.2 и выше. Реальная скорость зависит от многих факторов, но можно ориентироваться на значения единицы килобайт в секунду при работе в BLE4.2. Для BLE 5.0 скорость увеличивается в несколько раз. Например, конкретное приложение для STM32WB55 передавало файл в 100 kB за 16 секунд, что соответствует 6,25 kB.
Сколько BLE устройств (кнопка) может работать одновременно с донглом на SM32WB55?
STM32WB55 как центральное устройство может быть подключен к 6 периферийным устройствам одновременно.
Какая максимальная скорость передачи данных (полезной нагрузки, без учета вспомогательной/служебной информации)?
Реальная скорость зависит от многих факторов, но можно ориентироваться на максимальные значения в единицы килобайт в секунду при работе в BLE4.2 Для BLE 5.0 скорость увеличивается в несколько раз. В наборе готовых примеров есть приложение BLE_DataThroughput для оценки пропускной способности.
Можно ли BLE использовать вместо USB?
Протокол BLE может использоваться вместо USB лишь в ограниченном спектре приложений, когда пересылаются крайне малые объемы данных. Например, компьютерная мышка или клавиатура может подключаться как по USB, так и по Bluetooth.
Насколько данные микросхемы доступны и можно ли рассчитывать, что через 5 лет их будет просто купить?
На микросхемы STM32WB55 распространяется действие программы «10 лет доступности».
Возможно ли организовать МЭШ сеть на базе данного контроллера. 200-500 устройств? Какова пропускная способность при наличии 1-2 точек доступа?
Да, для STM32WB55 доступен стек BLE-меш. Число устройств в сети теоретически может достигать и более 500 точек, но реальное тестирование проводилось лишь на десятках устройств. Метрик по скорости нет, но, в любом, случае, при таком числе узлов на скорости выше десятков-сотен байт в секунду я бы не рассчитывал.
Хотелось бы сравнить с SX1276 LoRa.
Это не сравнимые технологии. BLE и LoRa не конкурируют между собой, т.к. предназначены для разных задач.
Реализация радиобудилки микроконтроллера из стоп режима, чтобы при этом общее потребления контроллера и BLE не превышало 100мкА.
Такое решение возможно.
В чём преимущество данного решения перед аналогами от других производителей?
Меньшее потребление, большой объем FLASH/RAM, наличие USB, встроенный контроллер LCD, привычная экосистема STM32.
Возможно ли соединиться одновременно к четырем устройствам и передавать пакеты одновременно по времени, то есть организовать синхронизацию устройств с точностью 50нс
Одновременно подключиться к 4 периферийным устройствам возможно. Но получить точность в 50 нС не получится.
Интересует подключение микроконтроллера к устройствам ввода, например к клавиатуре или джойстику по BLE.
ST не предоставляет подобного готового проекта. Однако реализовать такое на STM32WB55 возможно, учитывая наличие примера реализации профиля HID (Human Interface Device profile as specified by the BLE SIG) и наличия USB.
Возможно ли одновременное подключение к stm32wb55 (используемого в качестве сервера) сразу нескольких устройств?
Возможно подключение центральное устройства (выступает, как правило, клиентом) к нескольким (до 6) периферийным устройствам (как правило, серверам). Пример (видео).
Какова дальность связи?
Десятки метров в помещении, сотни на открытом пространстве.
Есть ли программная заготовка (по сути, пример) для OAD?
Да, пример загрузки Firmware по эфиру входит в состав ПО STM32CubeWB Firmware Package. Подробнее.
Алгоритм разработки антенного тракта?
Статья по теме разработки на сайте КОМПЭЛ. Или смотрите рекомендации производителя (AN5165 Development of RF hardware using STM32WB microcontrollers).
При воспроизведении примеров из workshop’а от ST не на плате NUCLEO, а на своём устройстве с «чистым» МК, перед загрузкой основного проекта необходимо загрузить бинарный файл BLE стек по адресу, указанному в соответствующем release note и всё? обязательно ли заливать FUS?
Требует уточнения, но, возможно, так: если по SWD заливать, то нужно FUS, если по USB, то не нужно.
Возможно ли использовать BT5 и 802.15.4 одновременно?
Да, но в вытесняющем режиме. Т.е. физически в микросхеме только одно радио.
Совместимость BT 5.0 с более ранними версиями?
Да, обратная совместимость есть.
Работает ли функционал advertising extension?
Данный функционал является опциональным (необязательным) для сертификации устройства как BLE 5. В STM32WB55 не поддерживается.
Температурный диапазон нижнее ограничение?
Нижняя рабочая температура -40 °C (-10°C для бюджетной версии STM32WB50CG)
В каком документе описывается как работать в проприетарном режиме?
См. следующие документы
AN5270 STM32WB Bluetooth low energy (BLE) wireless interface
AN5289 Building wireless applications with STM32WB Series microcontrollers
Можно ли использовать два протокола, например BLE5.0 и Proprietary протокола одновременно (путем временного разделения)?
Да, можно. В примерах приложений STM32Cube_FW_WB_V1.3.0 есть проект одновременной работы Thread и BLE (Ble_Thread_Concurrent_Static application).
Есть ли поддержка AES-256?
Да, в STM32WB55 есть поддержка «AES-128bit and AES-256bit, supporting chaining modes ECB, CBC, CTR, GCM, GMAC, CCM».
А с точки зрения приёма, можно ли один и тот же кусок принятых данных, отправлять на 2 различных стека? на BT и 802.15.4, если мы, допустим, не знаем, в каком стандарте нам прилетел пакет…
Отправлять в общем виде ДА, но при работе в BLE, передаваемый формат данных определяется ранее созданными характеристиками. Т.е. то, что мы собираемся отправить через BLE должно «вписываться» в имеющиеся характеристики, созданные ранее в GATT.
Расскажите вкратце о SMPS
На сайте КОМПЭЛ будет отдельная статья «Как реализовать минимальное энергопотребление, беспроводного микроконтроллера STM32WB55», где будет инфо по SMPS. Или см. эти документы на сайте ST: [1], [2].
Возможно ли по BLE синхронизировать по времени несколько устройств?
Можно, но точность будет определяться предсказуемостью поведения стека. Т.к. параметры задержек не нормируются, то можно лишь предположительно оценить достижимую точность синхронизации в единицы миллисекунд.
Расскажите подробнее об Sequencer. Что это такое и для чего нужен?
Sequencer это подобие не вытесняющей ОС – машина состояний по факту, для лучшей масштабируемости приложения. Поверх него можно поставить еще и FreeRTOS и примеры есть. Он нужен для того, чтобы обрабатывать события от BLE в основном потоке (треде). Например, возникло событие – нажали кнопку, мы ставим задание в прерывании и в секвенсоре это задание потом выполняем. Ведь на одном BLE может крутиться 10 разных сервисов и в прерываниях или в разных кусках кода обновлять характеристики — это очень рискованное дело, можно быстро запутаться и наделать багов.
Какую дальность связи можно достичь при использовании имеющихся печатных антенн?
Можно предположить дальность около 30 метров в офисе и сотни на улице. Но лучше проверять на практике исходя из реальных требований приложения.
Как отлаживать код на двух ядрах через один SWD/JTAG, в какой среде можно это делать?
Вы не будете отлаживать код в CM0. Это «черный ящик» для вас. Разработка кода идет только для ядра CM4.
Для обоих ядер будет одна прошивка? Я имею в виду образ. Как определяется какой код каким ядром исполняется?
Вы создаете прошивку только для M4. В M0 загружается зашифрованный стек один раз (это .bin файл от производителя). Далее вы модифицируете в процессе разработки только прошивку для M4, при этом FW в CM0 никак не меняется.
Есть ли доступ с M0 к периферии ядра M4?
Нет (для вашего приложения). В M0 загружается зашифрованный стек в виде бинарного файла. Вы не можете модифицировать код для M0.
А если у меня разработано устройство на STM32f205 для автомобиля с двумя CAN шинами через USB, а я мечтаю выкинуть USB и поставить вместо него Bluetooth.
BLE даст вам скорость в единицы кбайт/сек. Если этого достаточно, то BLE можно использовать.
С каком максимальной частотой можно в режиме Notification отправлять пакеты (20 байт) с устройства на телефон (для realtime обработки данных с датчиков)? Зависит ли это от телефона?
Затрудняюсь сказать про максимальную частоту. С одной стороны, минимальный интервал соединения может по стандарту быть очень малым (7.5 ms). Но позволит ли OS телефона вашему приложению занять ресурс BLE с такой интенсивностью — сказать сложно. Т.е. от телефона это точно зависит.
Перепрошивка по воздуху (BLE) возможна?
Да, такой пример есть в составе ПО для отладочной платы P-Nucleo-WB55. Поддерживается приложением ST на смартфоне. Данному вопросу посвящен отдельный видеокурс STM32WB Firmware Update Over the Air (FUOTA)
Какая максимальная длина посылки по BLE?
До 31 полезных байт. До 251 байт для расширений, введенных в спецификации BLE4.2 и выше.
Насколько стабильна прошивка по BLE при наличии сильных помех?
Невозможно ответить абстрактно. Если прошивку не удается корректно передать из-за помех — ничего не выйдет. Для загрузки по эфиру используется обычное BLE-соединение. Если помехи не позволят успешно принять новый образ – обновления не произойдет.
Как заливать стек в M0 нового чипа через SWD? Специально тратить выводы и выносить отдельный USB только для прошивки M0 не хочется.
Есть такая возможность. В документации на STM32CubeProg рассказано о том, как это делать по SWD: [1], [2]
Что надо загрузить, чтобы в кубике при активации RF появился доступный STM32_WPAN? Сейчас он показан, но недоступен.
Скорее всего не в установке дело. Следует настроить правильно тактирование (32МГц и 32кГц) и включить HSEM и появится.
Есть ли в кубике поддержка сетевого стека? В кубике только 2 протокола BLE и Thread? А в презентации говорилось о трёх.
Будет добавлено позже.
В примере «счетчик воды/эл-ва» с передачей данных по BT, какой малопотребляющий таймер на счет внешних импульсов применить, чтобы он не конфликтовал со стандартной библиотекой BT от ST?
LPTIM как вариант.
Хотелось бы узнать примеры готовых приложений под iOs для начинающего разработчика BLE. Дайте немного информации о проектировании программ для работы с блютус со стороны компьютера или планшета.
Данная тема выходит за рамки семинара. Вы можете начать с простого интернет-поиска по запросу «Creating a Simple BLE application on iPhone» или «Простое приложение BLE для iPhone» или «Как создать BLE приложение». Выпадают вполне релевантные ссылки.
Интересует применения в системах IoT
BLE может использоваться в широком спектре IoT-устройств как удобный интерфейс взаимодействия с пользователем и беспроводной передачи данных на дистанциях нескольких десятков метров.
Наши информационные каналы