蓝牙 Mesh SDK 是基于低功耗蓝牙芯片 PHY6212 提供的软件开发套件。该开发套件以 YoC 平台为基础,对蓝牙 MESH 协议栈做了深度优化和整合,为开发者提供了通用的 MESH 组件,涵盖了 SIG MESH Model 和私有 Model 以及丰富的芯片外设驱动。

Mesh 网络介绍

zeebig 蓝牙mesh覆盖范围 蓝牙mesh方案_python

上图是一个 Mesh 灯控网络的拓扑,以此为例,介绍一下 Mesh 网络的构成。按照功能来划分,Mesh 设备可以分为两类,一种是 Provisioner,一种是 Node节点。

Provisioner 负责组建 Mesh 网络,主要功能有发现未入网设备,将未入网的设备加入Mesh 网络,配置入网设备的特性,比如 Relay 特性,Friend 特性,Proxy 特性等。

当一个设备加入特定的 Mesh 网络后,该设备成为 Mesh 网络的 Node 节点。在上图中,节点有 Light 灯控节点和 Switch 开关节点两种。这两种节点默认都支持Relay 特性和 Proxy 特性。Relay 特性打开的情况下,节点会转发来自别的节点的Mesh 消息。Proxy 特性打开的情况下,节点会支持手机接入 Mesh 网络。

在蓝牙 Mesh SDK 中,以上的特性均已实现,开发者可以以下的介绍了解到如何实现一个这样的 Mesh 网络。

SDK 介绍

架构介绍

蓝牙 Mesh SDK 总体分为四个层次,自下而上分别为 SoC 蓝牙芯片层,Kernel 内核层,Service 服务层和 BT Applications 蓝牙应用层。

zeebig 蓝牙mesh覆盖范围 蓝牙mesh方案_linux_02

  • Kernel 内核层

内核层,包含标准的 BLE(5.0)/MESH(1.0)协议栈,Ali OS 操作系统,芯片驱动。

  • Service蓝牙服务层

Mesh Model 组件,其中支持的 Sig Models 有 Generic Level Model,Generic Onoff Model,,Light Level Model,Light CTL Model 等,此外还有一个 VendorModel,支持数据透传。

Mesh Node 组件,提供 Mesh 节点入网和配置功能,开发者可以基于该组件开发 Mesh 节点应用。

Mesh Provisioner 组件,支持 MESH 节点管理,包括新增 Mesh 节点,删除Mesh 节点,获取节点信息等功能。

Genie APP 组件,天猫精灵 Mesh 组件,支持天猫精灵网络协议。

  • BT Applications

蓝牙应用层,包含灯控节点,开关节点,Provisioner AT 模组和天猫精灵灯控节点。

蓝牙 Mesh SDK 的目录结构如下:

zeebig 蓝牙mesh覆盖范围 蓝牙mesh方案_linux_03

蓝牙Mesh应用开发案例

使用 Mesh Models 组件只需要三步即可完成智能灯设备的 Mesh 网络接入及控制。

  • 定义设备 Models,即定义设备的功能
  • 设置设备 UUID、设备名称,并注册 Models 事件回调函数
  • 处理相关 Models 事件
  • LED 驱动
定义 Models

MESH 灯的主要功能为开关灯,我们需要配置好相关 Models。

文件路径:

zeebig 蓝牙mesh覆盖范围 蓝牙mesh方案_zeebig 蓝牙mesh覆盖范围_04


zeebig 蓝牙mesh覆盖范围 蓝牙mesh方案_物联网_05

设备参数设置及事件处理

设置设备的 UUID、名称,注册 Model 事件处理回调函数。

文件路径:

zeebig 蓝牙mesh覆盖范围 蓝牙mesh方案_zeebig 蓝牙mesh覆盖范围_06

zeebig 蓝牙mesh覆盖范围 蓝牙mesh方案_物联网_07

LED 灯驱动

开发板的 LED 灯可以通过跳线控制,默认使用跳冒时,使用管脚 P23、P31、P32控制。本示例中使用的是 P31 管脚控制开发板 D2 灯。

zeebig 蓝牙mesh覆盖范围 蓝牙mesh方案_java_08

文件路径:

zeebig 蓝牙mesh覆盖范围 蓝牙mesh方案_zeebig 蓝牙mesh覆盖范围_09

zeebig 蓝牙mesh覆盖范围 蓝牙mesh方案_linux_10