AliOS Things SIG BLE Mesh网络的介绍和搭建

6月前 1981

在最新的版本(1.2.1)中,AliOS Things 开始支持SIG BLE mesh。目前,SIG BLE mesh还处于起步阶段,能够查找到的材料里面对于如何一步一步搭建SIG BLE mesh,并部署应用的案例并不多,且不够详尽。本文首先介绍SIG BLE mesh;然后详细介绍如何使用AliOS Things SIG BLE mesh搭建传感监测网络;最后,分析SIG BLE mesh使用过程中遇到的问题,并提出解决办法。

SIG BLE mesh介绍

SIG BLE mesh是随着BLE 5.0一起发布的标准,但它与BLE 5.0并没有强绑定的关系,在BLE 4.2的芯片上也能够工作。BLE mesh的推出扩展了BLE技术的拓扑选项,由原来支持的点到点和广播,扩展到可以支持更加灵活与自组织的mesh网络,目前主要的应用场景是智能照明。

网络的拓扑和节点

sig_mesh_topo
图片源自[1]

SIG BLE mesh的拓扑是全连通的mesh网络。链路主要包括两种类型,一种是广播链路,另外一种是GATT (Generic Attribute Profile)链路。GATT链路主要是为了兼容不支持广播链路的节点加入mesh网络设计。

节点包括四种类型:普通节点,中继节点,朋友节点,和低功耗节点。中继节点是具有数据转发能力的节点。朋友节点是低功耗节点的朋友。低功耗节点的所有数据都需要朋友节点帮助发送和接收,来实现低功耗节点在一段时间能够进入休眠状态的目的。目前,低功耗节点只能够是叶子节点。

协议栈结构

sig_protocol_stack
图片源自[1]

在标准中,BLE mesh协议栈被分为了很多层,简化版本应该可以分为两层,一层是和应用业务相关,另一层是和网络链路相关。标准中,将每层进行了非常细致的功能细化。网络链路相关细分为了以下层次:

Access Layer: 主要定义了上层应用业务层次如何使用网络传输的能力

Upper Transport Layer: 主要定义了数据的加解密,及基本数据传输功能

Lower Transport Layer: 主要定义了数据的分包与组包逻辑

Network Layer: 定义了数据的寻址与转发

Bearer Layer: 定义了如何利用核心层在点到点设备之间传输数据

Provisioning

SIG BLE mesh需要一个特殊的节点完成网络的配置,这个节点是provisioner。provisioner通常是手机或者一个联网设备。目前开源可以直接使用的provisioner有Bluez meshctl工具。

Provisioning主要功能是节点认证,配网和传输网络配置信息到节点。主要交互包括: beaconing,发出邀请,交换公钥,认证,和分发provisioning data。provisioning成功后,SIG BLE mesh网络链路即建立完成,网络节点之间可以收发数据。

在provisioning完成后,还需要再次建立连接,用于传输应用相关的配置信息,包括: 应用层使用的密钥,绑定使用的model,及配置这些model (如数据发送次数与周期等)。配置完成后,应用业务逻辑即开始工作。

关于SIG BLE mesh标准相关内容,可以移步SIG下载,https://www.bluetooth.com/specifications/mesh-specifications

AliOS Things SIG BLE mesh网络搭建

硬件环境

Raspberry PI3一块

乐鑫ESP32 Devkitc两块

微雪NRF51822开发板两块

AliOSThingsBLECharts_001_1_jpeg

ESP32和NRF51822开发板跳线图

AliOSThingsBLECharts_002_jpeg

软件环境

  • Raspberry PI kernel

为了能够运行Bluez meshctl工具,需要更改Raspberrian默认的安全加密加密相关配置,需要重新编译kernel。

  • json-c

json-c主要作用是解析meshctl所需的网络相关配置文件。

  • Bluez

Bluez是Linux的蓝牙协议栈,这里我们使用的是5.48版本。主要使用meshctl工具作为provisioner。

  • Bluetooth controller

烧录在nrf51822上作为controller使用。

  • Server端和Client端应用程序

烧录在ESP32上,和nrf51822组合在一起作为BLE mesh节点使用。

传感数据监测网络

传感监测网络包括三种角色,provisioner,server和client。provisioner是网络的配置者,server是传感信息的发布者,client是传感信息的订阅者。

使用AliOS Things一步一步搭建SIG BLE mesh网络指南,请移步https://github.com/alibaba/AliOS-Things/wiki/AliOS-Things-SIG-BLE-mesh-Setup-Guides

一些想法和解决方案

在开发和使用AliOS Things搭建SIG BLE mesh网络过程中,主要遇到的痛点是配网不方便,和低功耗支持。

目前,SIG BLE mesh需要使用provisioner逐个配置网络节点,有时候还可能由于网络不稳定导致失败。这样当街点规模较大时,即使是配置一遍,也是一件足够头痛的事情。我们正在做的一件事情是将AliOS Things uMesh网络自动认证的能力赋能给BLE mesh,使得SIG BLE mesh网络的配置更加方便和高效。

另一方面,目前SIG BLE mesh除了叶子节点,其余节点都需要保证100%的监听时间,其实已经不再是低功耗了,我们另外正在做的意见事情是将正在开发中的AliOS Things uMesh低功耗网络的能力赋能给BLE mesh,降低BLE mesh的功耗。

最后,我们会增加更多的硬件平台支持,方便开发者快速建立自己的业务应用。敬请期待,更多内容请移步https://github.com/alibaba/AliOS-Things

References:

[1] Bluetooth Specification Mesh Profile v1.0

os 配置 IOT 协议栈 mesh Bluetooth BLE

作者

luwang
TA的文章

相关文章