蓝牙低能量(bie)或蓝牙智能无线个人区域网络技术,不是向后兼容蓝牙经典而使用相同的无线电频率。蓝牙经典相比,它提供了降低功耗的同时保持类似的通信范围(通常10米和100米)之间。它成立于蓝牙核心规范4.0版。

蓝牙低能量有两个核心协议:

  • 通用访问配置文件(差距):控制设备之间的连接和广告。差距定义了两个核心设备的角色:

    • 周边:小型、低能耗和资源受限的设备上,连接到一个中央设备。他们通常是传感器。只能连接到一个中央外围设备。

    • 中心:这是常见的角色ConnectCore 6设备,处理外围设备的连接。

  • 通用属性配置文件(关贸总协定):用于BLE设备之间传输数据。关贸总协定定义服务和特性,定义了两个角色:

    • 服务器或奴隶,其中包含服务和特征定义,通常上面的外围设备。

    • 客户机或主人,典型的中央设备上面发送请求到服务器。

关贸总协定事务开始由主设备建立连接并显示连接间隔的奴隶。奴隶将会尝试重新连接在连接间隔来恢复数据。

BLE的配置文件定义了一组基于低能耗设备的服务和特点的通用属性配置文件(关贸总协定)协议。一个配置文件是一个预定义的集吗服务,反过来包含一组特征。每个服务标识本身UUID, 16位官方祝福服务或128位定制服务,并且每个特征是被一个预定义的16位或128位UUID。

用户空间的使用

数码网络嵌入包含的必要bluetoothctl,gattool和其他标准的命令行应用程序,可以用来测试蓝牙功能如下:

扫描和发现设备

您可以使用bluetoothctl如上所述工具扫描设备。你也可以只扫描BLE设备使用hcitool如下:

#hcitool我hci0 lescan——LE扫描副本……00:18:31:85:28:3E(未知)00:18:31:85:28:3E Keyfobdemo

连接

一旦发现远程设备,你可以连接到它gatttool命令行应用程序。你会看到提示改变远程设备的MAC。

#gatttool我hci0 - b <远程MAC >我[00:18:31:85:28:3E] (LE) >连接

发现服务

您可以请求发现远程设备提供的服务。

(反对)[00:18:31:85:28:3E] (LE) >主要attr处理:0 x0001 grp处理:0 x000b uuid: 00001800 - 0000 - 1000 - 8000 - 00001800 - f9b34fb attr处理:0 x000c grp处理:0 x000f uuid: 00001801 - 0000 - 1000 - 8000 - 00001801 - f9b34fb attr处理:0 x0010 grp处理:0 x0022 uuid: 0000180 - 0000 - 1000 - 8000 - 0000180 - f9b34fb attr处理:0 x0023 grp处理:0 x0025 uuid: 00001803 - 0000 - 1000 - 8000 - 00001803 - f9b34fb attr处理:0 x0026 grp处理:0 x0028 uuid: 00001802 - 0000 - 1000 - 8000 - 00001802 - f9b34fb attr处理:0 x0029 grp处理:0 x002c uuid: 00001804 - 0000 - 1000 - 8000 - 00001804 - f9b34fb attr处理:0 x002d grp处理:0 x0031 uuid: 0000180 f - 0000 - 1000 - 8000 - 0000180 - f9b34fb attr处理:0 x0032 grp处理:0 x0044 uuid: 0000 ffa0 - 0000 - 1000 - 8000 - 00805 - f9b34fb attr处理:0 x0045 grp处理:0 xffff uuid: 0000 ffe0 - 0000 - 1000 - 8000 - 00805 - f9b34fb

访问特征

你可以读/写的特点。在当前的例子中,我们使用一个加速度计装置可以启用如下:

(反对)[00:18:31:85:28:3E] (LE) >char-read-hnd 34特征值/描述符:00[反对][00:18:31:85:28:3E] (LE) >char-write-req 34 01[反对][00:18:31:85:28:3E] (LE) >特征值是成功

作为一个祝福服务器

你可以设置你的设备作为祝福服务器。为此,您可以使用一个自定义应用程序提供自己的服务和特点或使用样例应用程序btgatt-server模拟一个心率设备。

心率服务

开始祝福广告:

#btmgmt我hci0 le hci0组低能量完成,设置:动力bondable ssp br / le secure-conn edr功能#btmgmt我hci0接入hci0组完成接入,可连接设置:动力bondable ssp br / le secure-conn edr功能#“my_ble_server”btmgmt我hci0名字#btmgmt我hci0 hci0广告设置广告完成,可连接设置:动力bondable ssp br /广告secure-conn edr勒

启动关贸总协定服务器与你想要的功能(- r,——心率:使心率服务):

#btgatt-server我hci0 - r - v开始监听ATT通道。等待连接<下一个客户端连接后输出会出现>从00:40:9D连接:98:99:BD运行关贸总协定服务器(关贸总协定服务器)# att: > 10 1 00 ff ff 00 28……([关贸总协定服务器]# att: att PDU收到:0 x10

此时,您可以连接到BLE服务器使用gatttoolbtgatt-client:

#hcitool lescan LE扫描……00:40:9D: 8 b: 8 e: 20 my_ble_server#btgatt-client - d 00:40:9D: 8 b: 8 e: 20 - hci0 - v btgatt-client:开放L2CAP LE连接ATT频道:src: 00:40:9D: 98:99: BD桌子:00:40:9D: 8 b: 8 e: 20连接设备……完成.....(关贸总协定客户机)#服务服务——开始:0 x0001结束:0 x0006类型:初级,uuid: 00001800-0000-1000-8000-0 0805 f9b34fb ........

样例应用程序

一个示例应用程序称为ble-gatt-server-example包含在dey-examples包的meta-digi层。这个应用程序演示了如何让一个祝福关贸总协定服务器定制服务和特色ConnectCore 6平台使用蓝牙技术联盟标准。

应用程序创建一个叫做“设备信息”的服务,其中包含以下特性:

  • 当前时间(读/写特点)

    • 读:返回当前系统时间。

    • 写:将接收到的值打印到控制台。

  • 温度测量(读/通知特性)

    • 读:返回当前CPU的温度

    • 通知:订阅后,发送一个通知当温度超过定义的阈值作为命令行参数传递

每个特征有两个描述符,与一个定制的用户描述描述特征和“演示格式”包含格式信息(格式、指数、单位、名称空间和描述)的特征值。

开始祝福广告:

#btmgmt我hci0 le hci0组低能量完成,可连接设置:动力bondable ssp br /广告secure-conn edr勒#btmgmt我hci0接入hci0组完成接入,可连接设置:动力bondable ssp br /广告secure-conn edr勒#btmgmt我hci0 pairable hci0组Bondable完成,可连接设置:动力Bondable ssp br /广告secure-conn edr勒#btmgmt我hci0 hci0广告设置广告完成,可连接设置:动力bondable ssp br /广告secure-conn edr勒

BLE接口进行初始化后,就可以开始示例应用程序。看到服务器示例应用程序(关贸总协定的语法使用- h显示帮助):

#/usr/bin/ble-gatt-server-app - h ble-gatt-server-app用法:ble-gatt-server-app[选项]选项:-我,——指数< id >指定适配器指数,如hci0 - t,——阈值<临时>温度阈值发送通知- m - mtu < mtu > ATT mtu使用- v,——详细- h启用额外的日志记录,帮助显示帮助

关贸总协定服务器运行的温度阈值50 c:

#/usr/bin/ble-gatt-server-example——指数hci0阈值50运行关贸总协定服务器开始监听ATT通道。等待连接

您现在可以连接到关贸总协定服务器从客户端(例如使用任何标准应用在移动电话),阅读和与之交互。

GitHub查看应用程序指令和源代码。