通过蓝牙与Arduino进行Python通信

时间:2016-04-08 15:11:04

标签: python bluetooth arduino

我试图使用python来控制(发送值)通过蓝牙连接到HC-06的arduino。

我在Windows 10计算机上使用python 3.4.2。

问题出现在如何做到这一点上。我尝试了几种方法但没有成功。

我尝试过:

我尝试使用Pybluez库找到HC-06,连接到它并发送数据。这个问题是没有办法找出我应该发送的端口。

driver_socket = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
    driver_socket.connect((addr,port))
    print("Connected!")
    time.sleep(1)
    driver_socket.send("a")
    print("Sent Message!")
    driver_socket.close()

我试图通过bluetooth.service找到该端口,但是返回一个空列表,可能是由于HC-06的功能有限。

接下来,我尝试将设备预配对到我的计算机,然后设置一个COM端口以通过Pyserial发送数据。当我进行测试时,HC-06被限制在COM8。

s = serial.Serial('COM8', 9600,timeout = 1)
print("connected!")
time.sleep(10)
s.write(b"Hello")
print("Sent Message!")

这似乎可行,但在尝试建立连接几秒钟后,我收到以下错误:

self.open()
  File "C:\Python34\lib\site-packages\serial\serialwin32.py", line 62, in open
    raise SerialException("could not open port %r: %r" % (self.portstr, ctypes.WinError()))
serial.serialutil.SerialException: could not open port 'COM8': OSError(22, 'The network location cannot be reached. For information about network troubleshooting, see Windows Help.', None, 1231)

Windows 10还存在一个问题,当连接到设备时会出现一个弹出窗口,要求您设置"设置"装置。如果单击它,将出现一个新窗口,指出存在问题,您应该重新连接设备。无论您是否单击此弹出窗口,错误都保持不变。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

所以,时间可以治愈所有伤口。

解决方案是使用pyserial并将笔记本电脑首先与HC-06配对。

确保配对成功非常重要,所有HC-06芯片的默认密码均为“1234”

配对后,你必须转到windows中的蓝牙设置,然后会有一个高级菜单,你可以在其中找到传出的COM端口号,这是你在pyserial中用来打开与HC-的串行连接的号码。 06

s = serial.Serial("COM3",9600,timeout = 2)
s.write(bytes("hello!",'utf-8'))

多田!