Отправка/получение данных от/на Raspberry Pi к/от Arduino с помощью HM-10 (модуль Bluetooth LE)
Моя цель — отправить строку с Arduino через Bluetooth-модуль HM-10 на Rasperry Pi. Я сделал это сегодня, подключив HM-10 на Arduino к другому модулю HM-10 (главный/подчиненный), а затем от этого модуля к Raspberry Pi через последовательный USB-адаптер, который дает мне /dev/ttyUSB0, который я могу прочитать. Я хотел бы просто подключить Arduino HM-10 напрямую к Bluetooth Raspberry Pi без каких-либо дополнительных модулей.
Я нашел приложение "Arduino Bluetooth Controller" (Android), которое может подключаться к модулю, и последовательная связь работает.
У меня также есть модуль HC-05, и я могу решить эту проблему с помощью rfcomm bind 2 , но это не работает на HM-10.
Я открыт для любого решения, которое может это сделать. Либо привяжите последовательную связь с помощью rfcomm (или альтернативы), как на HC-05, либо попробуйте создать приложение, которое делает то же самое, что и приложение для Android, только на Raspberry Pi.
@miccet, 👍0
1 ответ
Лучший ответ:
HM-10 — это устройство BLE. Вам нужно будет понимать программирование BLE, которое сильно отличается от классического Bluetooth. Стандартной службы BLE для последовательной связи не существует. Лучший способ использовать BLE на Pi — использовать
- модули noble и bleno для node.js .
- Или начните с поиграйте с gatttool.
Если вы подходите для Phyton: Устройство в стиле HM-10 будет отправлять уведомления, которые может прочитать устройство BLE Pi. В основном вам нужно прикрепите функцию обратного вызова «делегата» к периферийному объекту, а затем ждите уведомлений. Затем обратный вызов может обрабатывать полученные данные. Вам нужно будет установить bluepy lib на PI. Этот пример кода записывает данные в устройство Arduino HC-10
import bluepy.btle as btle
p = btle.Peripheral("AA:BB:CC:DD:EE:FF")
s = p.getServiceByUUID("0000ffe0-0000-1000-8000-00805f9b34fb")
c = s.getCharacteristics()[0]
c.write(bytes("Hello world\n", "utf-8"))
p.disconnect()
Вот код для чтения с устройства Arduino HC-10
import bluepy.btle as btle
class ReadDelegate(btle.DefaultDelegate):
def handleNotification(self, cHandle, data):
print(data.decode("utf-8"))
p = btle.Peripheral("AA:BB:CC:DD:EE:FF")
p.withDelegate(ReadDelegate())
while True:
while p.waitForNotifications(1):
pass
p.disconnect()
- Raspberry Pi 3B+ BLE связь с Arduino Nano 33 IOT
- Связь Arduino с Raspberry Pi с помощью HC-05
- Как использовать HM-10 в качестве клиента и отправлять сообщения конкретным службам/характеристикам?
- Отправка строк из NRF24L01 в приложение
- Проблема с первыми двумя образцами последовательных данных, полученных RPi
- Можно ли измерить скорость акселерометром? Насколько точно?
- Модуль Bluetooth HC-05 мигает красным светом - Arduino Uno
- Модуль Bluetooth HC-05 возвращает закодированные данные
В итоге я использовал bluepy, как в вашем примере, и с некоторым разделением входящих данных (кажется, ограничение в 20 байтов) все отлично работает! Спасибо!, @miccet