BLE и передача потока данных

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
KIVi
Встал на лапы
Сообщения: 126
Зарегистрирован: Вс янв 27, 2013 19:02:19

BLE и передача потока данных

Сообщение KIVi »

Есть некоторый датчик, который я хочу считывать по SPI 1000 раз в секунду и получать каждый раз 24 байта данных. Я хочу эти данные переправлять по протоколу BLE на смартфон или ноутбук. Зачем именно BLE? Потому что я хочу, чтобы устройство большую часть времени находилось в энергосберегающим режиме, но сохраняло обнаруживаемость, а когда появляются желающие начинало передачу (я понимаю, что в этот момент оно будет потреблять больше обычного).
У меня уже есть платка с CC2541 и CC Debugger, я немного поигрался с примерами проектов.
Во-первых, это вообще реально передавать 24 кбайт/сек по протоколу BLE? Если нет, то сколько максимум можно, если расстояние между устройствами будет не более пары метров?
Во-вторых, в какую сторону копать? Какой способ взаимодействия по BLE мне лучше всего подходит для реализации этой затеи?
Реклама
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: BLE и передача потока данных

Сообщение Ser60 »

СС2541 поддерживает BLE 4.х. Тогда скорость передачи самого радио 1Mbps. Однако, из-за оверхеда протокола реально получается передать порядка 0.25 - 0.3 Mbps, или порядка 30 KBps. На скорости 25 KBps это будет уже совсем не LE (Low Energy), т.к. стек будет в активном режиме большинство времени. Полагаю, вопрос насчёт куда копать отпал сам собой, а вот последний вопрос я не понял.
Реклама
KIVi
Встал на лапы
Сообщения: 126
Зарегистрирован: Вс янв 27, 2013 19:02:19

Re: BLE и передача потока данных

Сообщение KIVi »

Нет, вопрос не отпал. Меня устраивает, что в активном режиме устройство будет много кушать., главное что в других режимах оно будет low energy.

Я хотел спросить, как именно можно обеспечить такую скорость по ble.
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: BLE и передача потока данных

Сообщение Ser60 »

Обеспечить высокую скорость можно путем посылки пакетов максимальной длины через минимально допустимый интервал между посылками.
Реклама
Эиком - электронные компоненты и радиодетали
KIVi
Встал на лапы
Сообщения: 126
Зарегистрирован: Вс янв 27, 2013 19:02:19

Re: BLE и передача потока данных

Сообщение KIVi »

Это звучит логично. Но пока, насколько я вижу BLE, протокол состоит не из посылок, а из "характеристик", которые можно читать и писать. Или имеется ввиду, что хост должен запрашивать значения характеристик с минимально возможным интервалом?
Реклама
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: BLE и передача потока данных

Сообщение Ser60 »

Нет, не совсем так. Peripheral может посылать периодические НОТИФИКАЦИИ мастеру без его на то запроса. Имеется всего 4 пита BLE сообшений, и нотификации (notification) - один из них. Почитать подробнее обо всём этом можно и следует в тех. литературе. Я рекомендую книгу, которая мне в своё время очень помогла. Для более глубокого ознакомления с технологией BLE могу порекомендовать эту книгу, однако, для начального ознакомления во многих случаях хватит и предыдущей.
Реклама
KIVi
Встал на лапы
Сообщения: 126
Зарегистрирован: Вс янв 27, 2013 19:02:19

Re: BLE и передача потока данных

Сообщение KIVi »

Так. То есть я правильно понял, что использовать GATT для моей задачи вполне нормальное решение и альтернатив особо нет.

Подредактировал пример SimpleBLEPeripheral для CC2541, чтобы он обновлял значение характеристики с минимальной задержкой (типа каждую 1 мс, но скорее всего реже), а также установил минимальный и максимальный интервал соединения в 1.25 мс. В итоге скриптом на Python, использующим библиотеку bluepy, запущенным на ноутбуке под управление Linux получил 400 обновлений в секунду. Однако если сделать доступной для подписывания ещё одну характеристики и также обновлять её, то получается лишь 460 обновлений в секунду, а не 800.

Кто виноват скорее всего? Микроконтроллер 8051 не справляется или радиомодуль? Поможет ли переход на NRF51822? Там всё же ARM + официально поддерживается 6 посылок за раз, а не 4.
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: BLE и передача потока данных

Сообщение Ser60 »

Не понял насчёт 1.5мс, т.к. минимальный интервал соединения, согласно характеристикам BLE-4, всего 7.5мс. Посмотрите эту статью для информации. Вот ещё конкретный пример достижения 260 kbps через GATT и L2CAP. Правда, это для другого BLE модуля.

Кто виноват - скорее всего каждый понемногу, включая библиотеку на компе. В основном, возможно, что именно она самая неповоротливая, но я с ней не работал, поэтому утверждать наверняка не берусь. ARM или не ARM в смысле обработки событий самого стека особого значения не имеет. Однако 6 пакетов за раз вместо 4 скорости, естественно, прибавит.
Ответить

Вернуться в «Разные вопросы по МК»