апну тему, вдруг кому то будет интересно в будущем.
ниже многобукв
мои изискания на тему BLE
В общем в процессе изучения у меня были такие модули
X-NUCLEO-IDB05A1 с модулем SPBTLE-RF
X-NUCLEO-IDB04A1 с чипом (BlueNRG-MS)
SPBTLE-1S
и отечественный модуль НАВИА BT-01 (STM32F030+BlueNRG-MS)
(оффтоп: еще у меня были HM-10(СС2541 TI),nRF52832(Nordic),RN4870(Microchip) Но они не относятся к ST и про них особо писать не хочется. хотя там тоже были свои движения. Кроме Nordic - c ним что-то не заладилось с самого начала и поэтому временно был отложен)
В общем понимание всех решений и методы работы с ними пришли ко мне не сразу. Поэтому я попытаюсь вкрадце рассказать что есть что в этом деле.
Если зайти на сайт ST и посмотреть что они предлагают, то получается так:
A)
три чипа
1. BlueNRG-MS
2. BlueNRG-1
3. BlueNRG-2
Все чипы основаны на Cortex M0 (вроде PLUS)
B)
три сертифицированных модуля
SPBTLE-RF (в основе BlueNRG-MS)
SPBTLE-RF0 (можно сказать тоже самое что просто RF)
SPBTLE-1S (в основе BlueNRG-1)
C)
новая серия двухядерных МК - STM32WB55 (Cortex M4+Cortex M0+)
D)
разные отладочные платы. Ну из штуки 4-5 , не много в принципе. половина из них у меня как раз была.
A. Про чипы:
насколько я понимаю изначально , при появлении блютус чипа он назывался просто BlueNRG. в дальнейшем на нем добавили приставку BlueNRG-MS.
Эти чипы выполняют только блютус функции. В них нельзя записать какую-то свою прошивку и нельзя их использовать отдельно от другого МК. В общем они выполняют только те функции которые просит выполнить основной МК. связь между хостом и чипом осуществляется по интерфейсу SPI при помощи определенных команд. Идея нормальная, но к сожалению у меня так и не хватило времени и терпения чтобы разобрать примеры от ST , в виду того что все примеры написаны с помощью библиотеки HAL и имеют такой уровень абстракции, что просто ужас какой-то. Мне терпения не хватило, а изобретать именно свой велосипед не хватило желания, так как перспективнее было ковырять именно более новое решение (BlueNRG-1)
Из некоторых прикольных фишек касательно именно BlueNRG-MS и отладочных плат на их основе , мне понравилось ПО которое называется BlueNRG GUI. Суть его в том что в отладочную демоборду например NUCLEO-L053R8 заливается специальная прошивка которая по сути своей является простым переходником COM-SPI . на борду вешается плата например X-NUCLEO-IDB04A1 и после этого через программу BlueNRG GUI можно выполнять всю работу Bluetooth чипом , испытывая его возможности. С точки зрения самой разработки это наверно не совсем правильно, но с точки зрения понимания сути вещей очень мощный инструмент для того чтобы понять что и как надо делать в основной программе. Типа ручное управление... (хотя и глюки в самом ПО тоже имеются)
В общем если разобраться с командами, то вполне себе неплохой чип , стоит порядка 50-60 рублей, маркируется в интернет магазинах по разному , например BLUENRGQTR . (главное не путать с BLUENRG-132( 232 134 234)). На самом чипе написано BLUENRG + всякие буковки.
далее идут более продвинутые решения BlueNRG-1,2
Честно скажу, второй чип я в руках не держал и особо про него не читал, но суть вроде такая же как с первой моделью. В целом это полноценные МК с возможностями BLE. из доступной периферии у них есть GPIO, UART, SPI, I2C, 2 таймера. В общем для простых приложений самое то. плюс не стоит забывать что в него можно залить прошивку и управлять от внешнего хоста на подобии чипов MS. Библиотека для разработки чем то похожа на SPL , но люди которые любят регистры, вполне быстро смогут разобраться с периферией, так как в плане регистров там все попроще чем с обычными STM32.
Прошиваются чипы c помощью ST-Link через утилиту BlueNRG ST-Link Utility (визуально ничем не отличается от STM ST-Link Utility) . Jlink тоже умеет прошивать, если что.
Также можно заливать прошивку через UART. т.е. перевести чип в бут(закоротив ножку DIO7 на питание) и использовав программу BlueNRG-1 Flasher
Еще из фишечек еще есть ПО - BLueNRG-1 Radio Parameters Wizart которая помогает создать фаил с дефайнами для работы Bluetooth. можно конечно и вручную все считать, но с ней удобнее. Мне потребовалось два часа чтобы убедиться в том что считает она правильно.
Модули маркируются обычно BLUENRG1(2) , в каталогах магазинов числятся как BLUENRG-132 ( 1 модель чипа в корпусе с 32 ножками QFN) или например BLUENRG-234 (2 модель чипа с 34 ножками корпуса WLCSP34
стоимость до 100 рублей и примерно на треть дешевле чем старые MS.
Обращаю внимание на маркировку, так как я по глупости больше месяца пытался впаять чип MS в плату которую развел под BLUENRG-1. было забавно, так как я три платы как только не перепаивал, но они так и не заработали. а я еще удивлялся почему?!?!
Кстати , обращаю внимание на то что несмотря на то что корпуса у BlueNRG-MS и BlueNRG-1(2) одинаковые, ножки у них разные и обвязка тоже отличается. т.е. если вы плату делаете для BlueNRG-1 то впаивать туда BlueNRG-MS нельзя! (как и наоборот)
Кстати с точки зрения самих плат - есть куча схем, но в целом они все сводятся к простым вещам :
1. у каждой ножки питания должны быть конденсаторы от помех.
2. в схеме должны быть конденсаторы на ножках VDD1v2 и SMPSFILT2
3. должна быть индуктивность 10мкГ на SMPSFILT1 (хотя есть варианты... но более детально см даташит)
4. должен быть балун BALF-NRG-01D3 (или схема на индуктивностях и конденсаторах) - кстати запаять его в домашних условиях вполне возможно, хотя изначально кажется малореальным.
5. должна быть индуктивность у антенны.
6. Важно -подтяжка RESET .внутри чипа ее нет и поэтому надо делать внешнюю.
...
если чип будет использовать внешние кварцы, то еще их обвязка. но чип может работать и на внутреннем кварце.
По некоторым намекам от сотрудников ST в этом году выйдет что-то новое. Мои предположения что это будет BlueNRG-3 c BLE5.0 и возможностью других беспроводных технологий.
B. Про модули
В принципе говорить тут особо и нечего. из модулей надо использовать SPBTLE-1S и не ломать себе голову. он единственный который сделан на BlueNRG1. Использовать модули можно в готовых устройствах и они сертифицированы и насколько я понимаю это дает возможность просто втыкать их в свои устройства и вешать лейбл блютуса на устройство. Естестенно для своих проектов это не имеет никакого значение, но с коммерческой точки зрения , использовать модули наверно лучший вариант.
С. STM32WB55
Решение безспорно интересное, но одновременно достаточно сложное. RM который больше 1,5к страниц неспешно читается перед сном. Несмотря на то что у меня есть отладочная плата P-NUCLEO-WB55 создать какой-то свой проект пока не очень получается. Естественно можно очень быстро натыкать в Кубе, но при этом создается такое количество кода, что голова идет кругом. Ни о каких сниппетах уже речи не идет (ST от них отказались в пользу HAL). Поэтому разобраться во всем на низком уровне теперь задача не из легких. Сама работа с блютус очень похожа на BlueNRG, но для того чтобы к этому придти нужно вначале провести инициализацию ядер, настроить их взаимодействие и разобраться в их синхронной работе. А это не так просто. В кубовских решениях используется планировщик задач и в будущем ST планируют туда включить свою полноценную ОС и насколько я понял это не FreeRTOS. в общем МК интересный, но в тоже время сложный. В Nucleo наборе есть еще USB dongle который работает совместно с ПО STM32Cube Monitor RF. Само ПО по функционалу схоже с BlueNRG GUI и в принципе выполняет те же функции. ПО еще сыровато, но как я понял оно только начинает свое развитие. В принципе побаловаться с BLE самое то.
Что касается самой технологии BLE - чтобы понять как все работает нужно читать статьи в интернете, на сайте блютуса, смотреть все ролики, разбирать стандартные примеры, разобраться в терминологии. При том изучать это можно без упора на какой-то определенный чип. во всех чипах все в целом одно и тоже.
Касательно ПО клиента ( ПК, планшет, телефон) сказать особо и нечего. с Андройдом не знаком , но думаю что там много примеров. Найти примеры Swift и Xcode для iPhone тоже вполне реально. написание самого приложения занимает гораздо меньше времени чем изучения теоретических моментов BLE.
Не знаю буду ли я где-то это использовать , но опыт получил не плохой. Почти все что хотел , все сделал. В общем свое изучения этой темы считаю на 90% выполненным. Остальные 10% будут идти во второстепенном(фоновом) режиме
P.S. пример подключения автомобильного датчика к телефону по блютусу я описывал тут Если вы не интересуетесь машинами, то особо там смотреть нечего. просто статья про датчик +видяшка
Отредактировано Atomic-dm (2019-04-11 00:21:33)