Raspberry Pi 3B+ BLE связь с Arduino Nano 33 IOT
У меня есть Arduino Nano 33 IOT, и он использует BLE. Я хочу, чтобы он разговаривал с моим Pi 3B+ и отправлял все свои данные датчиков. Я не могу найти способ сделать это с помощью Python для Pi и библиотеки ArduinoBLE для моего Nano IoT. Возможно ли это?
1 ответ
Для полноты, кажется, что соответствующая библиотека Python может быть установлена с:
pip3 install adafruit-circuitpython-ble
Тестовый код, используемый с кодом Arduino "Echo" из библиотеки ArduinoHardwareBLE, приведен ниже. Это было обновлено, чтобы позволить вам выбрать имя устройства (здесь, MY_BLE), а не любое случайное устройство, которое имеет возможность UART. Он также позволяет отправить небольшой файл из нескольких строк, с"#", обозначающим комментарий (первый символ в строке). ESC и возврат выходят из программы.
# Подключение к службе "eval()" через BLE UART.
from adafruit_ble import BLERadio
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
from adafruit_ble.services.nordic import UARTService
ble = BLERadio()
uart_connection = None
def send_stuff(s):
uart_service.write(s.encode("utf-8"))
uart_service.write(b'\n')
readline=uart_service.readline().decode("utf-8")
while(len(readline)>0):
print(readline)
readline=uart_service.readline().decode("utf-8")
while True:
if not uart_connection:
print("Trying to connect...")
print("ESC then RETURN to exit.")
for adv in ble.start_scan(ProvideServicesAdvertisement):
if UARTService in adv.services:
regular_name = adv.complete_name
if(regular_name=='MY_BLE'):
uart_connection = ble.connect(adv)
print("Connected")
# for some reason, we have to read a line...
uart_service = uart_connection[UARTService]
print(uart_service.readline().decode("utf-8"))
break
ble.stop_scan()
if uart_connection and uart_connection.connected:
uart_service = uart_connection[UARTService]
while uart_connection.connected:
s = input("Prompt: ")
if(len(s)>0):
if(ord(s[0])==27):
print("done.")
exit()
else:
# Check if "!" character is used; if so, send contents of a file
if(s[0]=="!"):
print("sending commands")
count=0
file1=open('commands.txt','r')
Lines=file1.readlines()
for line in Lines:
count=count+1
tmp=line.strip()
if(len(tmp)>0):
if(tmp[0]=='#'):
print("comment:" + tmp)
else:
print("Line{}: {}".format(count, tmp))
send_stuff(tmp)
else:
send_stuff(s)
Будет ли это работать на Pi 3B+, потому что я не знаю, работает ли он., @DragonflyRobotics
Если вы добавите адаптер BT, вы должны иметь такую возможность., @asylumax
Спецификации на 3B+ говорят, что у него есть BLE, так что это может сработать. Однако я не тестировал его; только с системой Ubuntu 20.04 LTS с (Anaconda) Python 3.7.7., @asylumax
- Отправка/получение данных от/на Raspberry Pi к/от Arduino с помощью HM-10 (модуль Bluetooth LE)
- Можно ли соединить miband2 и arduino nano?
- Bluetooth-модуль HC-05 — команда INQ не работает
- Самая низкая мощность, возможная в Arduino
- Энергопотребление Arduino Nano IoT
- Проблемы с последовательной связью от Arduino к Bluetooth HC-05
- Библиотека ардуино или код для ESP32 для сканирования устройств Bluetooth?
- Подключение Arduino Nano к Raspberry Pi Zero
это описывает сторону Arduino ... вы должны будете выяснить сторону RPi, так как это не по теме здесь .. https://www.arduino.cc/en/Reference/ArduinoBLE, @jsotola
Ладно, спасибо., @DragonflyRobotics