【树莓派4B学习】十三、树莓派4B蓝牙与HC-05串口通信测试

  • 蓝牙模块使用HC-05,波特率9600,插入PC,使用串口助手收发消息
  • 树莓派使用自身蓝牙与HC05配对。

HC-05的配置这里不再赘述,可参考这里


一、树莓派的蓝牙与HC-05配对

打开树莓派的VNC桌面,单击右上角的蓝牙图标,选择Add Device

在这里插入图片描述

进而,进入蓝牙搜索界面,稍等片刻,便可以查找到对应的HC-05模块,点击Pair进行配对

在这里插入图片描述
按照提示,输入蓝牙配对密码
在这里插入图片描述

之后若出现下图所示错误,可直接忽略。

在这里插入图片描述

打开树莓派的命令行,输入hcitool scan,扫描蓝牙(附带MAC地址)

在这里插入图片描述

接着输入,sudo rfcomm connect 1 98:D3:32:71:30:7A (其中1可以自定义为其他数字【如果被占用的话】,98:D3:32:71:30:7A这个是HC-05对应的MAC地址),即可连接成功。

在这里插入图片描述

这种连接方式,不能关闭当前终端。
并且当拔掉蓝牙的时候,还需要重新输入指令连接。那么有没有自己绑定的办法呢?


当然有的,在终端输入sudo rfcomm bind 1 98:D3:32:71:30:7A,相当于在/dev目录下注册了一个名字为rfcomm1的设备。当拔掉蓝牙时,对应的设备号rfcomm1依然存在。
下次插上蓝牙可以直接在程序中使用rfcomm1设备,无需再次注册。
当然解绑也有对应的命令,这里不再赘述,有兴趣可以参考这里

再打开一个终端,输入sudo ls /dev -l,会发现多了rfcomm1,就是我们刚刚注册的HC-05设备。
在这里插入图片描述

二、安装 python-serial 库

树莓派蓝牙传输数据可以用python的pyserial模块

sudo apt-get install python-serial

三、编写python程序

1、PC发送数据并在PC回显

终于到了,最激动人心的环节了 — 测试。

  • USB-TTL连接HC-05
  • 打开PC端的串口助手,设置波特率为9600.

树莓派上,编写4.py,代码如下所示。

# -*- coding: utf-8 -*
import serial
import time

def main():
    while True:
        # 获得接收缓冲区字符
        count = ser.inWaiting()
        if count != 0:
            # 读取内容并显示
            recv = ser.read(count)
            print recv  
        # 清空接收缓冲区
        ser.flushInput()
        # 必要的软件延时
        time.sleep(0.1)
   
if __name__ == '__main__':
    try:
	# 打开串口
    	ser = serial.Serial('/dev/rfcomm1', 9600)
    	if ser.isOpen == False:
        	ser.open()                # 打开串口
    	ser.write(b"Raspberry pi is ready")
		main()
    except KeyboardInterrupt:
        if ser != None:
            ser.close()


  • 树莓派运行4.py文件,同时开启PC端串口助手,并注意观察接收框变化
    在这里插入图片描述
    在这里插入图片描述

  • 上面PC端串口助手成功打印Raspberry pi is ready,说明树莓派发送到PC端没得问题。

  • 接着测试树莓派接收PC端的消息

在这里插入图片描述
在这里插入图片描述

  • 树莓派接收也没得问题!!!

注意:当ctrl+C结束掉程序的时候,此时HC-05蓝牙会断开连接。无需惊慌,无需重新配对,因为我们绑定蓝牙为rfcomm1设备,所以直接再次运行程序,变会自动连接。哪怕拔掉蓝牙,再重新插上,依旧会自动连接配对!

至此,树莓派4B蓝牙与HC-05串口通信测试,便成功实现!


参考

发布了693 篇原创文章 · 获赞 1115 · 访问量 78万+

猜你喜欢

转载自blog.csdn.net/ReCclay/article/details/104671734