低功耗蓝牙BLE
BLE事实上是完全不同的技术,与经典蓝牙完全不兼容。最早由诺基亚与2006提出,名字开始也不叫蓝牙,叫Wibree。并且在蓝牙4.0版本中被纳入。
特性
BLE传输距离100米,空中速率125k/1M/2Mbps,应用速率270kbps,延时仅6ms,发送数据耗时仅3ms,发射功率10mW,功耗10mW~500mW。峰值电流15mA。
广告和发现机制
BLE使用3个独立信道发送广播包来发现彼此。设备每隔一个广播间隔发送一次广播包,为防止冲突,发送间隔会加上一个<10ms的随机值。扫描者在每个扫描间隔后的扫描窗口上监听。
软件模型
客户端Client,一般是手机、电脑,发送GATT( Generic Attribute Profile)命令和请求,接收回应。
服务端Server,例如温度传感器,接收GATT请求并回应。
特性Characteristic,客户端、服务端之间传输的数据,如电池电压。
服务Service,一组相关特性,组合提供特定功能。如体温服务包括温度测量值、测温间隔等特性。
描述符Descriptor,为特性提供额外信息。例如温度特性可能有单位、最大最小可测量值。特性可有0个或多个描述符。
有的特性和描述符是用于系统管理的,如通用访问(Generic Access)服务可读取模块名、序列号等特性。服务也可以包括其他子服务。设备主要功能称为主服务、辅助功能称为次服务。
标识Identifiers,特性、服务、描述符统称为属性attributes,以UUID标识。任何实现都可以为特定用法选择随机或者伪随机的UUID,但蓝牙标准保留了一些UUID(形式是 xxxxxxxx-0000-1000-8000-00805F9B34FB )做标准属性。
128位的UUID常常在标准服务中被省略为16位或32位。例如,设备信息服务简称是0x180A,而不是0000180A-0000-1000-... 完整列表在这儿
GATT操作,GATT有一系列的命令,用于客户端发现服务端。
- 发现所有主服务的UUID
- 根据UUID寻找服务
- 根据主服务寻找次服务
- 发现指定服务的所有特性
- 根据UUID寻找特此那个
- 读取指定特性的所有描述符
命令还能读(C<-S)写(C->S)特性值。
可以通过特性的UUID、或者句柄值读取值。
写入操作一般以句柄标识特性,还可选择是否从服务端返回。
当特性数据超过MTU,可以使用“长读”和“长写”操作。
GATT提供通知和指示。客户端可以从服务端请求特定特性的一个通知。服务端可以在特性值可用的时候再发给客户端(有点像订阅)。例如,温度传感器可以在每次测出温度后通知客户端。这可以防止客户端轮询服务端。
指示和通知类似,不同点是,指示需要客户端回应他收到了消息。
电池
中心设备和外围设备的耗电不同。距离信标(proximity beacons)设备可以使用1000mA的纽扣电池工作1~2年。另一方面,持续扫描这些信标的设备可以在几小时内耗光1000mA电量。
蓝牙5的变化
2016年6月sig发布蓝牙5,新增如下特性
- 增加发射功率或使用编码物理层,来是范围增至4倍
- 使用可选的符号时间减半特性,使速度翻倍
- 通过增加ble广告数据长度,使得广播容量增至8倍
2017年7月,sig又发布了mesh网络官方profile和规格书
评论已关闭