摘要: 在最新的版本(1.2.1)中,AliOS Things 开始支持SIG BLE mesh。本文对SIG BLE mesh及如何使用AliOS Things搭建BLE mesh网络进行了详细的说明。
点此查看原文:http://click.aliyun.com/m/42946/
在最新的版本(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网络,目前主要的应用场景是智能照明。
网络的拓扑和节点
图片源自[1]
SIG BLE mesh的拓扑是全连通的mesh网络。链路主要包括两种类型,一种是广播链路,另外一种是GATT (Generic Attribute Profile)链路。GATT链路主要是为了兼容不支持广播链路的节点加入mesh网络设计。
节点包括四种类型:普通节点,中继节点,朋友节点,和低功耗节点。中继节点是具有数据转发能力的节点。朋友节点是低功耗节点的朋友。低功耗节点的所有数据都需要朋友节点帮助发送和接收,来实现低功耗节点在一段时间能够进入休眠状态的目的。目前,低功耗节点只能够是叶子节点。
协议栈结构
图片源自[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开发板两块
ESP32和NRF51822开发板跳线图
软件环境
- 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
识别以下二维码,干货