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模型的简单应用。