树莓派具有内置的蓝牙功能,可以实现各种蓝牙应用,在本文中将基于树莓派的蓝牙功能,实现FiRa应用中的OOB功能。
1、准备蓝牙
1.1 蓝牙相关环境准备
1)安装蓝牙相关软件包
sudo apt-get install pi-bluetooth bluez bluez-firmware blueman
2)将用户添加到蓝牙组,默认为pi
sudo usermod -G bluetooth -a pi
3)重启,reboot。
安装bluez之后,可以通过以下命令查看bluez的版本。
$bluetoothd -v
当前安装版本为:5.64
1.2 蓝牙服务操作
可以通过$systemctl status bluetooth
查看bluez的运行状态:
可以通过以下命令手动启动或关闭蓝牙服务:
$sudo systemctl start bluetooth
$sudo systemctl stop bluetooth
若要开机启动蓝牙服务,可以输入以下指令:
sudo systemctl enable bluetooth
1.3 bluez命令行
$hcitool dev
可以查看本地蓝牙设备,输出蓝牙MAC地址。
运行bluetoothctl,进入蓝牙控制shell:
$sudo bluetoothctl
list命令可以查看树莓派上可用的蓝牙模块:
启动扫描:
[bluetooth]# scan on
,可以扫描到树莓派周边的蓝牙设备。
[bluetooth]# quit
,quit退出蓝牙控制命令行。
1.4 通过Python使用树莓派蓝牙
python中有蓝牙对应的库可以使用,bluetooth,对应pybluez。
第一步,安装pybluez库:
首先,安装pybluez的必要编译环境,否则直接安装将失败:
python3 -m pip install pybluez
安装libbluetooth-dev库:
sudo apt-get install libbluetooth-dev
依然出现错误,对pip进行升级之后再尝试安装pybluez.
$sudo pip3 install --upgrade pip setuptools
再次安装,依然出现错误。
直接从github下载源文件进行安装:pybluez Releases
$sudo python3 setup.py install
,依然出现以下错误:
根据参考链接[2],主要python3安装时了,再setuptools>=58的版本不再支持use_2to3=True这个参数进行转换,故而出现错误,解决方案将setuptools下降一个版本:
pip install setuptools==57.5.0
降版本之后,安装成功,可在Python代码中正常使用bluetooth。
import bluetooth