通过蓝牙串行将2个ESP32连接到Raspberry

2024-04-26 07:55:27 发布

您现在位置:Python中文网/ 问答频道 /正文

希望你没事!真的希望你能在这方面帮助我。
我有两个ESP32和一个覆盆子。每个ESP32都有一个按钮,当我按下任何按钮时,必须通过每个ESP32的蓝牙发送消息

ESP32_1信息:“1L 100 200”
ESP32_2信息:“2R 100 200”

我可以在两个不同的终端上使用以下命令通过蓝牙成功连接ESP32和raspberry:

sudo rfcomm connect 1 XX:XX:XX:XX:XX(MAC1)
sudo rfcomm connect 2 XX:XX:XX:XX:XX(MAC2)

我需要的是,如果我按下ESP32_1的按钮_1,消息1必须以树莓色接收。否则,如果我按下ESP32_2的按钮_2,则必须接收消息2并在raspberry中打印

问题是,当我按下按钮2时不发送任何信息,当我按下按钮1之后,发送按钮2+按钮1的信息时,端口似乎在等待接收另一个按钮中的信息

下面是我为Raspberry编写的Python代码:

#! /usr/bin/python
import serial
import time

Incoming_Data1 = ""
Incoming_Data2 = ""

bluetoothSerial1 = serial.Serial("/dev/rfcomm1", baudrate =115200) #Connecting to source 1
bluetoothSerial2 = serial.Serial("/dev/rfcomm2", baudrate =115200) #Connecting to source 1
print("Bluetooth Connected GBF")

def Flush_all():
  bluetoothSerial1.flush()
  bluetoothSerial2.flush()

while 1:

  try:
    Flush_all()
    Incoming_Data1 = bluetoothSerial1.readline()
    print(Incoming_Data1)
    Flush_all()
  except:
    Flush_all()

  try:
    Flush_all()
    Incoming_Data2 = bluetoothSerial2.readline()
    print(Incoming_Data2)
    Flush_all()
  except:
    Flush_all()

提前谢谢


Tags: 信息消息serialall按钮raspberryprintxx
1条回答
网友
1楼 · 发布于 2024-04-26 07:55:27

最好避免使用rfcomm,因为它早在2017年就开始使用了

http://blog.kevindoran.co/bluetooth-programming-with-python-3/中所述,串行端口配置文件(SPP)蓝牙客户端连接可以通过Python3标准套接字库完成(在bluetoothctl中完成配对后)

Kevin博客中的例子可以扩展到连接两台设备。可能是这样的:

import socket

serverMACAddress1 = 'XX:XX:XX:XX:XX:XX'
serverMACAddress2 = 'XX:XX:XX:XX:XX:XX'

port = 1  # Needs to match value used on the device you are connecting to
SIZE = 1024
s1 = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM)
s2 = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM)

s1.connect((serverMACAddress1, port))
s2.connect((serverMACAddress2, port))

while True:
    data = s1.recv(size) 
    if data: 
        print(data)
    data = s2.recv(size) 
    if data: 
        print(data)

s1.close()
s2.close()

还有一个Bluedot库,它有助于提取一些细节: https://www.stuffaboutcode.com/2017/07/python-bluetooth-rfcomm-client-server.html

相关问题 更多 >