大纲:
1. 什么是ble,ble与传统蓝牙的区别,ble与蓝牙4.0的区别
2. ble的基本概念:协议层(协议框架)、服务(Service)、特征(Characteristic)。什么是配对(pair)、通知(notify)。
介绍低功耗蓝牙
1. 什么是低功耗蓝牙?
图1 BLE介绍
低功耗蓝牙,简称BLE,是蓝牙的一种省电变体。BLE 的主要应用是少量数据(低带宽)的短距离传输。与始终开启的传统蓝牙不同,BLE 始终处于睡眠模式,除非在启动连接时。
这使得它消耗非常低的功率。BLE 的功耗比传统蓝牙低大约 100 倍(取决于用例)。
由于其特性,BLE 主要强调一个纽扣电池能够工作几年的这种省电性能。例如,BLE 在医疗保健、健身、跟踪、信标、安全和家庭自动化行业中非常有用。
图2 BLE应用领域
2. 与传统蓝牙的区别
主要有两点区别:
- 低带宽:
- 低功耗
图3 BLE设备的低带宽特性
Bluetooth和BLE的主要区别之一在于通信带宽。如果是发送数据量比较大的应用,比如蓝牙耳机等需要发送音频数据的设备,不适合用BLE通信方式,因为与普通的文本信息不同,这类应用对通信速度和功耗是有一定要求的。BLE的功耗较低,适用于简单的电源ON/OFF状态和可以用文本和数字简单表达的数据通信。(*BLE有时不需要配对)
请查看下表,它更详细地比较了 BLE 和蓝牙(经典)。
图4 BLE与传统蓝呀的对比
3. BLE和蓝牙4.0的区分
通常在了解一点蓝牙的朋友看来,往往将BLE等同于蓝牙4.0,其实不然。
蓝牙4.0是协议,4.0是协议版本号,蓝牙4.0是2010年6月由SIG(Special Interest Group)发布的蓝牙标准,它有2种模式:
BLE(Bluetooth low energy)只能与4.0协议设备通信,适应节能且仅收发少量数据的设备(如家用电子);
BR/EDR(Basic Rate / Enhanced Data Rate),向下兼容(能与3.0/2.1/2.0通信),适应收发数据较多的设备(如耳机)。这个模式常常也有人称之为“传统蓝牙”或“经典蓝牙”。
可以这样理解,蓝牙4.0协议包含BLE,BLE隶属于蓝牙4.0协议的一部分。
BLE 的基本概念:协议框架、服务、特征
1. BLE的协议框架
图5 BLE协议框架
最上面绿色的部分是应用层,主要是gatt和att我们可以把它看作是同一层。
sm是安全管理层,负责管理安全。
最下面link layer层和phy层基本上就是一些rf的处理。
2. 识别和配对
使用Bluetooth时,需要经过“配对”和“连接”的步骤。对于无线LAN而言,通常需要输入密码才能连接到接入点,而Bluetooth通信则需要一个设备检测并登录(认证)另一个设备的过程。
图6 BLE配对(pair)
比如您想通过Bluetooth功能使用智能手机和耳机时,您需要先进行配对设置,这就像一个面对面的识别(即认证、信息注册)仪式,允许目标设备之间相互连接。如果没有这个仪式,比如,如果Bluetooth采用与无线LAN一样的机制,那么有可能发生这种事情:A正在使用耳机的过程中,B用密码认证将A的耳机与自己的智能手机连接起来,A的耳机上会播放B的智能手机上正在播放的音乐。为了防止这种问题,Bluetooth采用了一种对设备之间进行身份验证和注册、并在使用时只允许连接已注册设备的机制。
所以,对于Bluetooth设备而言,基本上每个Bluetooth模块只能同时建立一个连接。
3. GATT
GATT 代表通用属性,它定义了向连接的 BLE 设备公开的分层数据结构。这意味着 GATT 定义了两个 BLE 设备发送和接收标准消息的方式。理解这种层次结构很重要,因为它可以更容易地理解如何使用 BLE 和编写应用程序。
图7 BLE-GATT 框架
BLE服务
层次结构的顶层是一个配置文件,它由一个或多个服务组成。通常,一个 BLE 设备包含多个服务。
每个服务至少包含一个特征,或者还可以引用其它服务。服务只是信息的集合,例如传感器读数。
SIG(蓝牙特殊兴趣组)定义的几种类型的数据有预定义的服务,例如:电池电量、血压、心率、体重秤等。您可以在此处查看其它定义的服务。
图7 GATT-Service编码(Assigned Number)
BLE特性
特征始终由服务拥有,它是实际数据包含在层次结构(值)中的位置。特征始终具有两个属性:特征声明(提供有关数据的元数据)和特征值。
此外,特征值后面可以跟描述符,这进一步扩展了特征声明中包含的元数据。
这些属性描述了如何与特征值进行交互。基本上,它包含可以与特性一起使用的操作和过程:
- 播送
- 读
- 不回复就写
- 写
- 通知
- 表明
- 经过身份验证的签名写入
- 扩展属性
UUID
每个服务、特征和描述符都有一个 UUID(通用唯一标识符)。UUID 是唯一的 128 位(16 字节)数字。例如:55072829-bc9e-4c53-938a-74a6d4c78776
SIG(蓝牙特殊兴趣组)中指定的所有类型、服务和配置文件都有缩短的 UUID 。
但是,如果您的应用程序需要自己的 UUID,您可以使用此UUID 生成器网站生成它。
总之,UUID 用于唯一标识信息。例如,它可以识别蓝牙设备提供的特定服务。
GATT 案例
图8 蓝牙鼠标的service\char
- 一个鼠标是一个BLEDevice
- 一个BLEDevice建立了一个BLE服务器 BLEServer
- 一个BLE服务器里有多个服务BLEService
- 一个服务里有多个特征值BLECharacteristic 每个特征值是一种数据.就是通过读写这些“Characteristic”实现读写数据
每个characteristic的值可以在不加密的状态下读写,但配对的操作是加密的。 还有当characteristic的值已改变时,可接收通知(notify)。
什么是 notify ——通知的概念
如果主机的一个特征值characteristic发生改变, 可以使用通知notify来告诉客户端. 这是服务器主动给客户端发的信息, 并非是响应客户端的请求.
这样做有很多好处, 比如ESP32采集到了温度的变化, 可以将数据写入对应的特征值characteristic,然后notify通知客户端.
我们创建特征值时, 把它规定为通知类型, 当这个特征值发生变化时,可以通知客户端,像这样:
pCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_TX, BLECharacteristic::PROPERTY_NOTIFY);
//创建一个(读)特征值, 它是通知下发类型的特征值
其实客户端可以不接受服务器发送的notify,方法是修改自己的Descriptor. BLE服务器看到你对自己的描述中标识了不想接收notify,也就不会再给你发了.
参考&引用的资料: 1. https://www.elecfans.com/d/2012630.html 2. https://www.qutaojiao.com/108832.html 3. https://www.jianshu.com/p/535e6ec3571d 作者:熊爸天下_56c7 来源:简书 标签:特征值,4.0,蓝牙,Bluetooth,沁恒,CH58x,BLE,UUID From: https://www.cnblogs.com/FBsharl/p/17912555.html