3.0 BLE使用指南
Mynewt系统提供了世界上第一个完全开源的蓝牙低功耗(BLE)或蓝牙智能栈,完全兼容蓝牙5规范,支持蓝牙mesh网络,项目叫做NimBLE。
BLE技术运行在大多数国家都可以使用的2.4到2.485GHz,这是一个免授权的工业、科学和医学(ISM)频段。它使用扩频、跳频、全双工信号。BLE FHSS拥有40个2MHz带宽的信道,以确保远距离的可靠性。它支持0dBm(1mW)功率输出,可以达到50米的最大距离。基于蓝牙5规范,距离可以增加4倍,速度可以提升2倍。
注意:BLE与标准蓝牙并不兼容。
NimBLE特性
NimBLE遵循蓝牙5.0核心规范,这将使它成为物联网(IoT)的理想无线技术。
- LE广播扩展
- 2Msym/s的物理层,支持更大的吞吐量
- 支持低功耗远距离的编码物理层
- 高负载循环非连接广播(High Duty Cycle Non-Connectable Advertising)
- 通道选择算法#2,以最高效方式利用信道
- LE Privacy 1.2支持频繁更改设备地址,防止外部人员跟踪
- LE安全连接特性,FIPS兼容算法
- LE数据长度扩展,支持更高吞吐量
- 即将添加:为蓝牙设备分配互联网协议(IP)地址(兼容IPv6或6LoWPAN标准),支持Internel Protocol Support Profile(IPSP)
蓝牙5.0向后兼容之前的蓝牙版本4.2,同样在Apache Mynewt系统中支持。
蓝牙Mesh特性
蓝牙Mesh是一个对蓝牙协议的一个很好的补充,它为物联网互联空间提供了更大的可能性。NimBLE完整支持以下蓝牙Mesh特性:
- 广播和GATT持票人(bearers)
- PB-GATT和PB-ADV供应
- 基础模型(服务器角色)
- 转播支持(Relay)
- GATT代理
组件
一个低功耗蓝牙协议栈(包含NimBLE)包含两个组件,每个组件又包含一些子组件。
- 控制器(Controller)
- 物理层,自适应跳频GFSK(Gaussian Frequency Shift Keying,高斯频移键控),使用40个射频通道(0-39),2MHz信道间隔。
- 链路层,包含五种状态(待机状态、广播状态、扫描状态、初始化状态、连接状态)。
- 主机(Host)
- 逻辑链路控制和自适应协议(Logical Link Control and Adaptation Protocol, L2CAP),提供叫做L2CAP的逻辑通道,复用一个或多个逻辑链接,提供数据包分割与重组,流控制、错误控制、数据流、QoS等。
- 安全性管理器(SM),使用安全管理协议(Security Manager Protocol, SMP)进行配对和特定密钥分配,以确保无线电通信安全。
- 属性协议(Attribute Protocol,ATT),允许设备(Server,服务器)向其他设备(Client,客户端)公开一些称为属性的数据。
- 通用属性配置文件(GATT),使用ATT协议进行封装为特征或服务的属性的交换框架。
- 通用访问配置文件(GAP),所有蓝牙设备都实现的基本配置。在BLE中,定义了物理层,链路层,L2CAP,安全管理器,属性协议(ATT)和通用配置文件(GATT)。
- 主机控制接口(HCI),主机与控制器之间的接口,软件API或硬件接口如SPI、UART、USB。
NimBLE项目
Mynewt包含了两个内建项目,允许用户尝试NimBLE。
- btshell,一个简单的shell应用,提供了最初的BLE协议栈接口
- bleprph,一个基础的外设,无用户接口。启动后自动广播,一旦连接中止,它将继续广播,最多支持一个连接。
- blemesh,使用蓝牙mesh节点的on/off模型的简单应用。