Можно ли отправлять данные в режиме вещания BLE? - PullRequest
0 голосов
/ 16 ноября 2018

Я хотел бы спросить вас, можно ли отправить данные (строку) в режиме вещания с устройства BLE (например, Raspberry Pi, Onion или Arduino с ключом Bluetooth) на другое устройство (например, на телефон или другое устройство). Raspberry Pi), который покажет данные на экране.

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

Я провел много исследований по этой теме, но я мог только найти ответы о Beacons, эти объекты не могут отправлять полезные данные для моего проекта (например, строки), или устройства BLE, которые должны соединяться друг с другом для отправки / получения данные.

Я бы хотел создать программу на C, чтобы достичь этого результата. Я искал что-то полезное в библиотеке BlueZ, но ничего не смог найти, потому что они не объясняют смысл своих функций. Если это возможно, я не хочу создавать приложение для Android / iOS.

1 Ответ

0 голосов
/ 17 ноября 2018

Да, это возможно.Как вы, возможно, уже знаете, в Bluetooth Low Energy (BLE) есть четыре роли: -

  • Broadcaster - устройство, которое просто объявляет данные.
  • Peripheral - устройство, которое объявляет данныено могут быть подключены и к удаленным устройствам.
  • Observer - устройство, которое просто сканирует данные.
  • Central - устройство, которое может сканировать данные и подключаться к ним.

Когда впервые появилась BLE, маяки / датчики (например, частота сердечных сокращений, термометр) занимали первые две категории, а телефоны / компьютеры занимали две другие.Однако с тех пор BLE развился, и многие устройства теперь поддерживают все четыре роли, и устройство может работать в одной или нескольких ролях одновременно.

Относительно вашего вопроса, как отметил Ли Дэниел Крокер, данные - это данныеи то, что вы помещаете в рекламу, будет просто байтами, которые должен понять другой конец.Вы можете поместить только 31 байт данных в отчет об объявлении *, поэтому передача данных с установлением соединения более эффективна.

Что касается возможности программирования, я бы рекомендовал начинать с команд BlueZ на обоих устройствах, которые будутреклама и устройство, которое будет читать данные.Вы можете сделать это с помощью команды Bluetoothctl следующим образом: -

На вещательном / периферийном устройстве

#bluetoothctl
[bluetooth]menu advertise
[bluetooth]advertise data 00 00 00 00
[bluetooth]back
[bluetooth]advertise on

На наблюдательном / центральном

#bluetoothctl
[bluetooth]scan on

Я использую BlueZ версии 5.50 , и я рекомендую вам сделать то же самое.

Как только вы сможете рекламировать данные и правильно читать их с другого конца, вы можете просмотреть исходный код и посмотреть, что вы можетерычаг для вашего приложения C.Для функций bluetoothctl вы хотите начать со следующих двух файлов: -

  • bluez-5.50 / client / main.c
  • bluez-5.50 / client / advertising.c

Надеюсь, это поможет.

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

...