本帖最后由 lb8820265 于 2021-8-8 22:50 编辑
linux系统中有很多操作蓝牙的库,这里介绍一个我认为最好的,bluezero库。
bluezero一个封装库,是基于最底层的BlueZ的蓝牙协议栈,和最上层的DBus API的,让使用者能够更加方便的使用蓝牙功能,API 方便简单,包含Central和Peripheral角色。有趣的是bluezero还提供了三个复杂度等级的库,Level 1对应傻瓜式操作,使用者不需要太多的BLE知识和蓝牙协议栈知识,Level 10和100则更加接近底层操作,需要了解BlueZ,DBus和蓝牙协议栈。
1. 安装树莓派操作系统
可以参考我之前的帖子:树莓派4不同操作系统跑分测试
2. 修改python路径
树莓派系是安装了python2和python3的,默认是使用python2,操作BLE需要使用python3。
打开终端,查看python的版本号,输入:
python –version
如果是2.x则进行下面的操作,显示python的安装路径,输入:
whereis --python
一共有两个python,记住python3的安装路径,修改默认python的路径,输入:
alias python='/usr/bin/python3.7'
3. 安装bluezero库
树莓派系统是默认安装了BlueZ的,输入:
bluetoothd -v
查看BlueZ版本号,不能低于5.5版本。
查看BlueZ运行状态,输入:
systemctl status bluetooth
显示的running为正常,否则需要打开。
在终端中就可以通过BlueZ的接口函数,进行扫描、连接、发送等操作,这里不进行详细介绍。
安装dbus-python库和bluezero库,输入:
pip3 install dbus-python
pip3 install bluezero
安装完成后可以输入pip3 show bluezero查看库的状态。
bluezero库并非官方库,代码托管在github上,github上有详细的介绍和大量的例程,方便进行学习和参考。
github位置:https://github.com/ukBaz/python-bluezero
4. bluezero库例程展示
下面介绍树莓派作为Peripheral角色的两个例程。
cpu_temperature.py例程
将github上的代码下载下来,examples文件夹中,该例程可以不断的向手机发送温度数据,在Thonny中打开该例程,直接点击运行,在手机端打开nRF Connect软件,连接叫做“CPU Monitor”的设备,点开服务,然后开启Notification,就可以看到不停跳动的温度数据了,如下图。
ble_uart.py例程
该例程可以实现手机和树莓派间的相互通信,用Thonny打开运行,用nRF Connect软件链接BLE UART的设备,打开服务然后点击发送特性的发送箭头,输入要发送的字符,如下图。
然后在Thonny的Shell的窗口就会打印出接受到的信息,如下图。
是不是很简单,很神奇?!