我正在为某个学校项目工作。我想通过蓝牙将温度传感器数据从一个树莓π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
用户添加到dialout
Linux组(或其他组(可能比在sudo
下运行要好。如果有人知道,请说。