一、准备工作
参考上一篇博客BLE低功耗蓝牙
二、使用蓝牙测试工具
gatttool
是 BlueZ
提供的一个工具,用于与 BLE 设备进行交互。
2.1:扫描设备并获取 MAC 地址
首先,你需要扫描你的 BLE 设备并获取其 MAC 地址。使用以下命令扫描设备:
sudo hcitool lescan
找到你的设备并记下它的 MAC 地址。
2.3:发现特征
在连接到设备后,发现设备的特征。输入以下命令:
[<MAC_ADDRESS>][LE]> connect
[<MAC_ADDRESS>][LE]> characteristics
对于欧智通的蓝牙模块而言,它的特征值如下:
handle: 0x0002, char properties: 0x20, char value handle: 0x0003, uuid: 00002a05-0000-1000-8000-00805f9b34fb
handle: 0x0006, char properties: 0x02, char value handle: 0x0007, uuid: 00002a00-0000-1000-8000-00805f9b34fb
handle: 0x0008, char properties: 0x02, char value handle: 0x0009, uuid: 00002a01-0000-1000-8000-00805f9b34fb
handle: 0x000a, char properties: 0x02, char value handle: 0x000b, uuid: 00002a04-0000-1000-8000-00805f9b34fb
handle: 0x000c, char properties: 0x02, char value handle: 0x000d, uuid: 00002aa6-0000-1000-8000-00805f9b34fb
handle: 0x000f, char properties: 0x10, char value handle: 0x0010, uuid: 0000ff01-0000-1000-8000-00805f9b34fb
handle: 0x0012, char properties: 0x0c, char value handle: 0x0013, uuid: 0000ff02-0000-1000-8000-00805f9b34fb
handle: 0x0014, char properties: 0x1c, char value handle: 0x0015, uuid: 0000ff03-0000-1000-8000-00805f9b34fb
handle: 0x0017, char properties: 0x1e, char value handle: 0x0018, uuid: 0000ff04-0000-1000-8000-00805f9b34fb
handle: 0x001b, char properties: 0x04, char value handle: 0x001c, uuid: 0000ffd1-0000-1000-8000-00805f9b34fb
handle: 0x001d, char properties: 0x02, char value handle: 0x001e, uuid: 0000ffd2-0000-1000-8000-00805f9b34fb
handle: 0x001f, char properties: 0x02, char value handle: 0x0020, uuid: 0000ffd3-0000-1000-8000-00805f9b34fb
handle: 0x0021, char properties: 0x02, char value handle: 0x0022, uuid: 0000ffd4-0000-1000-8000-00805f9b34fb
handle: 0x0023, char properties: 0x02, char value handle: 0x0024, uuid: 0000ffd5-0000-1000-8000-00805f9b34fb
handle: 0x0025, char properties: 0x04, char value handle: 0x0026, uuid: 0000ffd8-0000-1000-8000-00805f9b34fb
handle: 0x0027, char properties: 0x02, char value handle: 0x0028, uuid: 0000fff1-0000-1000-8000-00805f9b34fb
handle: 0x0029, char properties: 0x08, char value handle: 0x002a, uuid: 0000fff2-0000-1000-8000-00805f9b34fb
handle: 0x002b, char properties: 0x02, char value handle: 0x002c, uuid: 0000ffe0-0000-1000-8000-00805f9b34fb
其中handle: 0x0010, uuid: 0000ff01-0000-1000-8000-00805f9b34fb
是用来读取数据的;
handle: 0x0013, uuid: 0000ff02-0000-1000-8000-00805f9b34fb
是用来发送数据的。
2.4:打开 Notify
需要找到对应的 Client Characteristic Configuration Descriptor (CCCD)
的句柄。通常,CCCD
紧跟在特征值的句柄之后,也就是0x11
,对于欧智通的BLE蓝牙而言,Notify
特征值句柄是 0x0010。
尝试写入 0x01 到紧跟在 0x0010 句柄之后的句柄, 0x0011
:
[<MAC_ADDRESS>][LE]> char-write-req 0x0011 0100
Characteristic value was written successfully
这将启用通知,开始接收来自设备的通知数据。
我们可以通过串口工具发送数据到jestson:
有两个需要注意的地方:
-
1.查找准确的 CCCD 句柄:
如果 0x0011 不是 CCCD 句柄,你需要查找与特征值句柄(0x0010)相对应的正确 CCCD 句柄。在一些设备上,CCCD 句柄可能会有一个确定的偏移量,如 0x0012 或其他。 -
2.特征属性检查:
确保特征属性包含通知(0x10),以确保该特征支持通知。
发送数据到下位机的话,直接通过0x13,使用指令char-write-req 0x13 数据
即可。