蓝牙(Bluetooth®):是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换。蓝牙由蓝牙技术联盟(SIG)管理。
蓝牙的波段为2.4GHz短距离无线电频段。
蓝牙发展历程:
| 序号 | 时间 | 标准 | 特性 |
|---|---|---|---|
| 1 | 2010年6月 | 蓝牙4.0(Bluetooth Smart) | 极低的运行和待机功耗, 支持BLE(低功耗蓝牙) |
| 2 | 2013年12月 | 蓝牙4.1(软件更新) | - |
| 3 | 2014年12月 | 蓝牙4.2(硬件更新) | (1)实现物联网:支持灵活的互联网连接选项(IPv6/6LoWPAN或Bluetooth Smart网关)。(2)让Bluetooth Smart 更智能:业界领先的 隐私权限、节能效益和堪称业界标准的安全性能。(3)让Bluetooth Smart 更快速: 吞吐量速度和封包容量提升。 |
| 4 | 2016年6月 | 蓝牙5.0 | (1)针对低功耗设备, 有着更广的覆盖范围和相较现在四倍的速度提升。(2) 传输速度上限为24Mbps, 是之前4.2LE版本的两倍。(3)有效工作距离可达 300米, 是之前4.2LE版本的4倍。(4)为应对移动客户端需求, 其 功耗更低, 且兼容老的版本。 |
| 5 | 2017年7月 | - | 开始全面支持mesh网状网 |
蓝牙协议分层:
一、主协议层
1、通用访问规范(Generic Access Profile,GAP)
GAP是应用层能够直接访问BLE协议栈的最底层,它包括管理广播和连接事件的有关参数。GAP模块代表了所有蓝牙设备的共用基础功能,如传输,协议或者应用规范所使用的模式和访问过程。GAP的服务包括设备发现,连接方式,安全,认证,关联模型和服务发现等。
(1)角色:为了创建和维护一个BLE连接,引入角色这一概念。一个BLE设备不是主机(集中器)角色就是从机(外围设备)角色, 这是根据是谁发起这个连接来确定的。主机设备总是连接的发起者, 而从机总是被连接者。这个访问与连接过程都在通用访问规范(GAP)进行实现的。
(2)广播:集中器能够与外围设备建立连接,外围设备必须处于广播状态,它每经过一个时间间隔发送一次广播数据包,这个时间间隔称为广播间隔,它的范围是20ms到10.24s。广播间隔影响建立连接的时间。
集中器发送一个连接请求来发起连接之前,必须接收到一个广播数据包,外围设备发送一个广播数据包之后一小段时间内只监听连接请求。
一个广播数据包最多能携带31个字节的数据,它通常包含用户可读的名字、关于设备发送数据包的有关信息、用于表示此设备是否可被发现的标志等类似的标志。
当集中器接收到广播数据包后,可能发送请求更多数据包的请求,称为扫描回应,如果它被设置成主动扫描,外围设备将会发送一个扫描回应作为对集中器请求的回应,扫描回应最多可以携带31字节的数据。
广播,包括扫描请求和扫描回应,必须在远离WLAN使用的2.4G频段之外的3个频率上,以防止被WiFi干扰。
(3)扫描,集中器监听广播数据包和发送扫描请求的过程,有两个定时参数:扫描窗口和扫描间隔。
(4)连接,集中器和外围设备第一次交换数据定义为连接状态。
2、通用属性规范(Generic Attribute Profile,GATT)
GATT是真正传输数据所在的层。包括了一个数据传输和存储框架以及基本操作。
GATT定义了两类角色:服务器(Server)和客户端(Client),GATT角色无需和GAP角色绑定,但是可能由更高层的规范进行指定。
(1)角色:除了GAP定义了角色之外,BLE还定义了另外2种角色:GATT服务器和GATT客户端,它们完全独立于GAP的角色。提供数据的设备称为GATT服务器,访问GATT服务器而获得数据的设备称为GATT客户端。
在应用中,外围设备称为服务器,集中器作为客户端。注意:一个设备可以同时作为服务器和客户端。
(2)GATT的规范层次:一个GATT服务器通过一个称为属性表的表格组织数据,这些数据就是真正发送的数据。
-
属性:
一个属性包含句柄、UUID、值,句柄是属性在GATT表中的索引,在一个设备中每一个属性的句柄都是唯一的。UUID包含属性表中数据类型的信息,它是理解属性表中的值的每一个字节的意义的关键信息。在一个GATT表中可能有许多属性,这些属性可能有相同的UUID。 -
特性:
一个特性至少2个属性:一个属性用于声明,一个属性用于存放特性的值。 -
描述符:
任何在特性中的属性不是定义为属性值就是为描述符。客户端特性配置描述符(Client Characteristic Configuration Descriptor,CCCD) - 服务
-
Profile(配置数据文件)
二、控制层