Микроконтроллеры

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Микроконтроллеры » Другие » BlueNRG


BlueNRG

Сообщений 1 страница 20 из 20

1

Добрый день!

Очень хочется разобраться с bluetooth low energy , но как всегда бывает - опыт и знания не дают быстро взять и что-то сделать. Если кто-нибудь что-нибудь делал с этим - натолкните на мысль, с чего начинать. Имею несколько плат от ST , примеры посмотрел - действительно все рабочие. :)

Есть конечно и коды , в том числе и в Keil. Но там какой-то уж очень заоблачный стиль абстракции. Обычный HAL stm32 кажется детской игрушкой... В общем буду рад любым материалам или книжкам или примерам типа "Hello world" где самые базовые вещи делаются с минимальным уровнем абстракции. 
Так же интересуют любые материалы по GAP , HCI и так далее.
Сам конечно потихоньку постигаю, но если будет правильное направление, то будет еще продуктивнее.

2

Atomic-dm написал(а):

быстро взять и что-то сделать ... натолкните на мысль, с чего начинать

Не начинать )

3

vt написал(а):

Не начинать )

позняк, уже начал :) .
попытка не пытка, инструменты все есть, время вроде тоже позволяет, да и желание присутствует :)))

4

Решил немного дополнить , чтобы не вводить никого в заблуждение...   

На данный момент у меня нет нужды ковырять сам BlueNRG со всеми его свойства...  Это скорее более поздние задачи(хотя и интересные).  Сейчас желание научиться работать с модулем SPBTLE-1S (стоит на плате X-NUCLEO-IDB05A1) и прилагаемыми библиотеками.
 
В принципе все примеры запустились, также полезно было почитать интернет.

Для разбора примеров очень хорошо подходит этот документ
https://www.st.com/content/ccc/resource … 169392.pdf
и этот
https://www.st.com/content/ccc/resource … 162667.pdf

В общем теперь моя задача отвязать все примеры от всей этой абстракции. Естественно речь не идет о переписывании библиотек, а лишь о верхнем уровне в котором встречается привязка к демоплатам , модулям и функциям HAL STM32

в целом задача вполне реальная.

5

Сегодня все же решил отвязаться от внешнего МК(STM32l) и попробовать программировать сам МК BlueNRG (SPBTLE-1S) . Припаялся, накачал софта - BluNRG St-link Utility.  Посмотрел примеры с Keil'а ,зарылся в разных документах от ST. Получилось заставить работать сам МК , мигал светодиодом ножки(в принципе все достаточно просто, регистров мало) , но вот с самим основным функционалом BLE какая то засада. По отладчику - типа все хорошо, а на практике телефон не видит никакого BLE устройства.

Вот и засада... или работать через кучу абстракций по SPI и управлять внешним МК или реализовывать программу на самом BlueNRG (но пока не совсем понятно как)

P.S. что удивительно все примеры от ST делает исключительно для своих демо плат.  Т.е. даже для программирования их же модуля (SPBTLE-1S) их же примерами, приходится вначале убирать лишнее, которое относится к демо платам.

6

Atomic-dm, а какая вообще цель [глобально, стратегически, в идеале] - ble девайсы для смартфона/планшета?

7

vt написал(а):

Atomic-dm, а какая вообще цель [глобально, стратегически, в идеале] - ble девайсы для смартфона/планшета?

ну целей несколько, но в целом просто научиться использовать блютус в совокупности с планшетами и смартфонами.
Есть и свои проекты в которых это можно применить, плюс если нормально разберусь, то и на рабочий проект поставлю. (там в устройстве борьба за потребление идет и обычный SPP блютус ставить не хочется)

8

Atomic-dm написал(а):

использовать блютус в совокупности с планшетами и смартфонами

А что со стороны планшета/смартфона, какие-то готовые программы или тоже свои?

9

vt написал(а):

А что со стороны планшета/смартфона, какие-то готовые программы или тоже свои?

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

Польше волнует что никак не получается заставить работать. Два дня назад подключал модуль 6 проводами (питания,земля,swd, reset, boot) потихоньку понимал что нужно еще подпаивать провода. Сегодня в итоге плюнул на все и подключил на гребенку все возможные контакты. получился некий "паук". Посмотрел как работает вывод в юарт на МК, протестировал приложение которое может заливать прошивку по юарту (по аналогии с STM32 Flasher) В общем периферия работает, это плюс. Но все что касается самого блютуса... увы , раскочегарить пока не получается.

Пробовал подключать модуль на плату Nucleo взамен отладочного BLE модуля с которым проблем не было и использовать рабочие примеры. пока попытка не увенчалась успехом. В общем пока результатов нет, но экспириенс растет ....

10

http://s5.uploads.ru/t/e5jZO.jpg
Вот некоторые из "подопытных"
Слева направо:

X-NUCLEO-IDB05A1
SPBTLE-1S
X-NUCLEO-IDB04A1+ NUCLEO-L476RG

за кадром остались
NUCLEO-L053R8
X-NUCLEO-IKS01A2

В общем борьба ведется с SPBTLE-1S , остальное так ... для компании.

На несколько дней уезжаю, потом продолжу. Если не справлюсь с SPBTLE-1S, то попытаюсь подключиться к BlueNRG на плате X-NUCLEO-IDB04A1, там вроде есть пины сервисного разъема в котором есть SWD. попробую и его "сломать" (сейчас он работает :) )

P.S. еще - понравился St-link на Nucleo .   
1. mass storage - очень удобно чтобы закинуть тестовые примеры.
2. также при подключении создается виртуальный ком порт который подключен к порту на плате. тоже удобно посмотреть отладочные сообщения(особенно на примерах)
3. Проекты для Nucleo в Keil вроде не привязаны к размеру кода. Возможно потому что серия L.  В тоже время при компиляции прошивки для самого BlueNRG уже ругается на превышении лимита кода.

Отредактировано Atomic-dm (2018-10-03 22:55:21)

11

Удивительно что по отладке все вроде как запускается

приложение чат

BlueNRG-1 BLE Chat Server Application (version: 1.0.0)
aci_gatt_init() --> SUCCESS
aci_gap_init() --> SUCCESS
aci_gatt_update_char_value() --> SUCCESS
Chat Service added.
TX Char Handle 000D, RX Char Handle 0010
Add_Chat_Service() --> SUCCESS
BLE Stack Initialized
aci_gap_set_discoverable() --> SUCCESS

приложение Beacon

aci_gatt_init() --> SUCCESS
aci_gap_init() --> SUCCESS
hci_le_set_scan_resp_data() --> SUCCESS
aci_gap_set_discoverable() --> SUCCESS
hci_le_set_advertising_data() --> SUCCESS
BlueNRG-1 BLE Beacon Application (version: 1.1.0)

Начинаю думать что проблема на физическом уровне ... может антена глючит или еще что-то..

12

если кому интересно , то сообщаю
SPBTLE-1S заработал с примерами ST (почему то правда не со всеми)
Основная моя ошибка была в том, что в примерах используется кварц на 16Мгц , а на данном модуле стоит 32М. В примерах кейла настраивается на директивах(дефайнах) предпопроцессора.
в данный момент собираю в кейле новый проект с нуля с желанием убрать лишние файлы и библиотеки,уменьшить уровень абстракции и оставить только самое важное. Сложности как всегда вызывают три момента
1. отсутствие знаний
2. стек BLE распространяется как библиотека объектных файлов и на нее завязаны разные дефайны часть которых пока не совсем ясна (см. п1)
3. очень скудная информационная поддержка от ST. инфа конечно есть, но не так хороша как на stm32, в основном завязана на готовые отладочные модули которые по ардуиновски насаживаются на отладочные платы nucleo.

Из плюсов - если не брать в расчет BLE, то вся периферия самого МК достаточно проста и ясна. Запустить его и поморгать диодом думаю сможет любой кто сталкивался с библиотекой SPL (ну те кто пишут на CMSIS думаю вообще проблем не испытают. регистров мало и они описаны в документах)

P.S.  немного разобрался со схемами и обвязками, возможно попробую сделать свой модуль.

13

так много чего хочется сказать, но лучше не буду, пьян. в дребезг.
так что вообщем... любой блю стек лучше начинать имея под рукой платы производителя( с кем имеете интерес "секуса"), при чем топовые решения - все и сразу. тогда вам будут доступны все примеры из которых будет ясно, что и ( и-и) как. а вот уже основываясь на этих данных можно и далее...
иначе "секус" с самим собой долгое время, перед тем как вам кто то даст. 
все так запутано... что здец... ведь можно настолько все проще это сделать. но бабло, бабло, сцуко рулит.
так что читаем доки и на низком уровне потихоньку, положив на все библиотеки производителя писать свои...
хотя с другой стороны st дали все и бесплатно( на камни, даж кодеген), один ..уй мне не нравиться :) :) опять все ту даже, в низкий уровень. отсюда вывод - свинье в низу рыться, и рыло не задирать. а если задираешь, то плати...
я без наездов на кого либо. просто если хочется просто и быстро, то смотри выше.
Atomic-dm хоть коды хелло ворд покажи.
сию мессагу могу удалить. завтра виднее будет.

14

Хорошо что я не видел вчера, просто я был в аналогичном состоянии, могла получиться любопытная беседа :)))))

На счет плат от производителя - в этом и штука , имею я все эти платы и все примеры. Но от этого не легче. Да, примеры работают, но даже имея их код на руках разобраться очень сложно, ибо уровень абстракции просто зашкаливает. плюс учитывая что с BLE не так все и просто, то в сумме вообще жопа получается. чуть позже покажу куски этого ужаса.
В итоге любой отход от демоплаты это гиганская работа по отвязке всего ненужного кода и дефайнов которые прописаны в примерах.
Плюс примеры есть двух типов :
1. сторонний МК+ BlueNRG - В bluenrg зашита прошивка которая принимает по SPI команды и работает уже с BLE
2. BlueNRG с программой - сам имеет свою прошивку , работает с периферией и общается с BLE

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

15

В общем что-то начинает получаться.  Даже для iphone тестовое приложение сделал.  Гугления 2 дня и их кучи примеров и собственных размышлений и удалось разобраться в swift и xcode.
Если кто-то будет что-то делать с блютусом 4.0 то самое основное разобраться в самой технологии блютуса 4.0 и уже потом что-то пытаться делать с bluenrg. Без понимания основ можно очень сильно завязнуть даже на стандартных примерах.

P.S. я пока еще только начинаю понимать :)

16

забыл отписаться - то что хотел то сделал. а хотел я принимать данные по юарту BlueNRG и выдавать их по блютусу на iOS .  С переферией как я и говорил проблем изначально не было(после STM32 любой разберется). с блютусом пришлось повозиться и выкинуть весь хлам(опять же - главное читать общую теорию про технологию BLE). Чтобы написать элементарное приложение под iOS ушло пару дней на изучение SWIFT примеров из интернета и создание самого приложения. (естественно дизайн там был никакой)

В связи с всякими граблями по iOS разработке софта, так и не понял как можно применить сей опыт.  Даже думаю об Андройде. на нем думаю с софтом проще...  В общем учитывая этот фактор и что BlueNRG чет подорожал и перестал быть в наличии решил переключиться на более дешевые решения , которые легко покупаются на али.  Итого сейчас в свободное время решил посмотреть как обстоят дела у TI и их CC2541 (модуль HC-10), только только начал и результаты пока скромные... но это уже совсем другая история.

17

апну тему, вдруг кому то будет интересно в будущем.

ниже многобукв :)

мои изискания на тему 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)

18

Atomic-dm написал(а):

В общем они выполняют только те функции которые просит выполнить основной МК. связь между хостом и чипом осуществляется по интерфейсу SPI при помощи определенных команд. Идея нормальная, но к сожалению у меня так и не хватило времени и терпения чтобы разобрать примеры от ST , в виду того что все примеры написаны с помощью библиотеки HAL и имеют такой уровень абстракции, что просто ужас какой-то.
...
RM который больше 1,5к страниц неспешно читается перед сном.

ST не даёт описания протокола по spi ?

Atomic-dm, так а что в сухом остатке, какой практический результат изучения ?
Ну кроме средства для засыпания )

19

vt написал(а):

ST не даёт описания протокола по spi ?

Atomic-dm, так а что в сухом остатке, какой практический результат изучения ?
Ну кроме средства для засыпания )


описание команд есть в "BlueNRG-MS Bluetooth® LE stack application command interface(ACI)" UM1865
просто какой смысл общаться с старым чипом по SPI , если в новом это можно делать напрямую.

какой практический результат ?!?! смотря что подразумевать под результатом. я разобрался как вообще все устроено, при необходимости я могу использовать эти знания. Я провел эксперимент с подключением автомобильного датчика к Iphone . Именно этот функционал еще никто не делал, люди оценили. делать ли серийное устройство или нет, я пока не решил, так как есть сомнения в загрузки самого приложения в Itunes. Параллельно изучил как работают "умные часы" Mi Band. Если на работе руководство решил подключить наши устройства к гаджетам, то я уже буду знать как это быстро и правильно реализовать и что для этого нужно.

вот хотел спросить- что ты подразумеваешь под практическим результатом ?

20

Atomic-dm написал(а):

вот хотел спросить- что ты подразумеваешь под практическим результатом ?

Освоенное, проверенное, готовое к дальнейшему применению решение, модуль, метод и т.п.
В идеале - готовое не только для себя, но и для других

Отредактировано vt (2019-04-11 13:12:20)


Вы здесь » Микроконтроллеры » Другие » BlueNRG