BLE (UART) 的命令行接口

BLE (UART) 的命令行接口

我能够使用 Arduino Nano 33 BLE 并使用 iPhone 创建与设备的 UART 连接(使用 Bluefruit Connect)。我可以发送和接收消息;这很棒。设置相对简单。

现在,诀窍是使用 Linux 机器(Ubuntu 20.04)来实现。

据我所知,使用“sudo hcitool -i hci0 lescan”可以进行 LE 扫描,我可以看到周围的各种设备。例如:

FB:0D:FF:43:44:3F (unknown)
5B:5D:F1:A3:D5:60 (unknown)
5B:5D:F1:A3:D5:60 Echo
1B:A8:4E:B8:03:7D (unknown)
7B:FF:94:C5:60:74 (unknown)

我拥有的设备已经能够通过手机连接。问题是,如何从 Linux 命令行连接到此设备(具有 UART 功能)?同样,一个简单的“Echo”程序(在 Arduino HardwareSerialBLE 示例中)可以很好地与手机配合使用。

我已经在交互模式下尝试了 gatttool 命令:

gatttool --device=5B:5D:F1:A3:D5:60 -I

返回:

[5B:5D:F1:A3:D5:60][LE]>

这是个好兆头。然后,连接:

[5B:5D:F1:A3:D5:60][LE]> connect
Attempting to connect to 5B:5D:F1:A3:D5:60
Connection successful
[5B:5D:F1:A3:D5:60][LE]> 

现在,看一下主要特点:

[5B:5D:F1:A3:D5:60][LE]> primary
attr handle: 0x0001, end grp handle: 0x0005 uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x0006, end grp handle: 0x0009 uuid: 00001801-0000-1000-8000-00805f9b34fb
attr handle: 0x000a, end grp handle: 0x000f uuid: 6e400001-b5a3-f393-e0a9-e50e24dcca9e
[5B:5D:F1:A3:D5:60][LE]> characteristics
handle: 0x0002, char properties: 0x02, char value handle: 0x0003, uuid: 00002a00-0000-1000-8000-00805f9b34fb
handle: 0x0004, char properties: 0x02, char value handle: 0x0005, uuid: 00002a01-0000-1000-8000-00805f9b34fb
handle: 0x0007, char properties: 0x20, char value handle: 0x0008, uuid: 00002a05-0000-1000-8000-00805f9b34fb
handle: 0x000b, char properties: 0x04, char value handle: 0x000c, uuid: 6e400002-b5a3-f393-e0a9-e50e24dcca9e
handle: 0x000d, char properties: 0x10, char value handle: 0x000e, uuid: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
[5B:5D:F1:A3:D5:60][LE]> 

(主要命令和特征命令显示的值表明串行通信内容存在;对 6e400002-b5a3-f393-e0a9-e50e24dcca9e 和 6e400003-b5a3-f393-e0a9-e50e24dcca9e 的 uuid 进行搜索表明这些是 UART 内容。

但是连接的下一步是什么,以便可以来回发送字符串?

相关内容