如何通过蓝牙在两个树莓派之间进行通信,并将传感器数据从一个派发送到另一个派



我正在为某个学校项目工作。我想通过蓝牙将温度传感器数据从一个树莓π4发送到另一个π4。我搜索了很多教程,但没有找到任何相关的教程。请任何人对此提供帮助,或者任何建议都将非常有帮助。

我对蓝牙知之甚少,这个答案可能过时或实践不当,但至少它有效。如果有人知道得更好,请提供一个更好的答案,我会删除这个。

所以,我有两个树莓派4运行树莓。我用在两者上安装了BlueDot

sudo pip3 install bluedot

然后我将它们配对,在第一个上运行

sudo bluetoothctl
[bluetooth]# discoverable on
[bluetooth]# pairable on
[bluetooth]# agent on
[bluetooth]# default-agent

第二个:

sudo bluetoothctl
[bluetooth]# discoverable on
[bluetooth]# pairable on
[bluetooth]# agent on
[bluetooth]# default-agent
[bluetooth]# scan on

当第一个RasPi(主机名=pi4(出现时,我通过在第二个RasPi:中键入以下内容来与它配对

[bluetooth]# pair DC:A6:32:03:0C:1B

然后我退出了两者的bluetoothctl

然后,我在第一个RasPiUNDERsudo:上运行了此服务器代码(可归因于此处(

#!/usr/bin/env python3
from bluedot.btcomm import BluetoothServer
from time import sleep
from signal import pause
def data_received(data):
print("recv - {}".format(data))
server.send(data)
def client_connected():
print("client connected")
def client_disconnected():
print("client disconnected")
print("init")
server = BluetoothServer(
data_received,
auto_start = False,
when_client_connects = client_connected,
when_client_disconnects = client_disconnected)
print("starting")
server.start()
print(server.server_address)
print("waiting for connection")
try:
pause()
except KeyboardInterrupt as e:
print("cancelled by user")
finally:
print("stopping")
server.stop()
print("stopped")

而这个代码(归属于这里(就在第二个,也在sudo:下

#!/usr/bin/env python3
from bluedot.btcomm import BluetoothClient
from datetime import datetime
from time import sleep
from signal import pause
def data_received(data):
print("recv - {}".format(data))
print("Connecting")
c = BluetoothClient("pi4", data_received)
print("Sending")
try:
while True:
c.send("hi {} n".format(str(datetime.now())))
sleep(1)
finally:
c.disconnect()

两个流氓成功地交换了信息,直到被打断。我测量了往返时间(RTT(,两个相距约一米的RasPi 4之间的平均时间约为30ms。

pi用户添加到dialoutLinux组(或其他组(可能比在sudo下运行要好。如果有人知道,请说。

相关内容