Linux(RaspberryPi)上使用BLE低功耗蓝牙

来源:互联网 发布:淘宝手机上购物支付 编辑:程序博客网 时间:2024/05/22 13:53

在树莓派3上进行的以下操作。
- 常用工具安装
BlueZ是Linux中最常用的蓝牙协议栈。
先安装BlueZ常用工具:

可以直接通过apt安装:

sudo apt-get install pi-bluetoothsudo apt-get install bluetooth bluez blueman

也可以通过源码安装
获取最新的Bluez源代码:

wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.18.tar.xz 

注意:如果已经安装,请确保您卸载了Bluez。(apt-get没有非常新的版本)要检查它是否已经安装,请运行以下命令:

dpkg --get-selections | grep -v deinstall | grep bluez

提取源

tar xvf bluez-5.18.tar.xz 

安装依赖关系

sudo apt-get install libglib2.0-dev libdbus-1-dev libusb-dev libudev-dev libical-dev systemd libreadline-dev

运行配置

.configure --enable-library

注意: -enable-library将启用库的使用,以便您可以使用Bluez堆栈创建自己的应用程序

编译并安装源代码

make -j8 && sudo make install

安装脚本不会复制gatttool到您的/usr/local/bin/目录。您必须手动执行此操作:

sudo cp attrib/gatttool /usr/local/bin/
  • 常用工具
    hcitool
    通过hcitool查看自己的蓝牙设备扫描可用设备
hcitool dev

这里写图片描述
hci0是我的树莓派上的蓝牙设备名,后面跟的是物理地址。

hcitool scan

扫描可用的蓝牙设备
这里写图片描述
返回的是扫描到的蓝牙设备物理地址和设备名。

hcitool lescan

扫描可用的低功耗蓝牙设备(BLE)
这里写图片描述
返回的同样是扫描到的蓝牙设备物理地址和设备名。

gatttool
链接到想要的BLE设备
打开gatttool

sudo gatttool -b <BLE ADDRESS> -I

是你想要连接的设备的物理地址
打开后输入connect连接
这里写图片描述
连接成功此时我的被连接设备连接指示灯亮表示连接成功
常用命令

primary

获得BLE设备提供的服务(server)信息
这里写图片描述
在我的设备中可以看到一共有4个服务,每个服务所包含的属性句柄值(handle)及其UUID

characteristics

查看设备服务的特性,其中handle是特性的句柄,char properties是特性的属性值,char value handle是特性值的句柄,uuid是特性的标识。
这里写图片描述

char-desc

配合查看服务特性使用,可以查看该设备所有服务特性的值,该值类型为键值对

char-write  

更新特性的值,该更新类似于键值对,一个uuid匹配一个value

char-write-req  <handle> <value>

读取notifications里的内容,可以设置listen来开启监听否则每次只读一次,监听读取notifications时需要向该handle写入一个1,在命令行中16进制的表示为0100,若向该handle写入0200的话则改为读取indications的内容
这里写图片描述

原创粉丝点击