下一篇:蓝牙 Mesh SDK 快速上手 | 《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》第二章
点击免费下载
《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》>>>
蓝牙 Mesh SDK用户开发指南
1. 概述
蓝牙 Mesh SDK是基于低功耗蓝牙芯片CH6121提供的软件开发套件。该开发套件以YoC平台为基础,对蓝牙MESH协议栈做了深度优化和整合,为开发者提供了通用的MESH组件,涵盖了SIG MESH Model和私有Model以及丰富的芯片外设驱动。
1.1. Mesh网络介绍
上图是一个Mesh灯控网络的拓扑,以此为例,介绍一下Mesh网络的构成。
按照功能来划分,Mesh设备可以分为两类,一种是Provisioner,一种是Node节点。
Provisioner负责组建Mesh网络,主要功能有发现未入网设备,将未入网的设备加入Mesh网络,配置入网设备的特性,比如Relay 特性,Friend特性,Proxy特性等。在上图中,Provisioner可以是蓝牙开发板,也可以是一个手机,但是当前不支持两个Mesh网络中同时存在手机Provisioner和蓝牙开发板Provisioner的情况。
当一个设备加入特定的Mesh网络后,该设备成为Mesh网络的Node节点。在上图中,节点有Light灯控节点和Switch开关节点两种。这两种节点默认都支持Relay特性和Proxy特性。Relay特性打开的情况下,节点会转发来自别的节点的Mesh消息。Proxy特性打开的情况下,节点会支持手机接入Mesh网络。
在上图中,存在Group1和Group2两个分组,这个也是Mesh网络的一个重要特性,Mesh网络支持将不同的节点分配到相同的组中,同一个节点也可以同时存在于两个组中。上图Light Node1,Light Node2,Light Node4,Swtich Node1位于Group1,3个Light Node可以被Switch Node1控制。Light Node2,Light Node3,Light Node5,Swtich Node2位于Group2,3个Light Node可以被Switch Node2控制。而Light Node2同时位于Group1和Group2,它可以被Switch Node1和Swicth Node2控制。
在蓝牙 Mesh SDK中,以上的特性均已实现,开发者可以以下的介绍了解到如何实现一个这样的Mesh网络。
2. SDK介绍
2.1. 架构介绍
BLE MESH SDK总体分为四个层次,自下而上分别为SoC蓝牙芯片层,Kernel 内核层,Service服务层和BT Applications 蓝牙应用层。
• 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等,此外还有一个Vendor Model,支持数据透传。
Mesh Node组件,提供Mesh 节点入网和配置功能,开发者可以基于该组件开发Mesh节点应用
Mesh Provisioner组件,支持MESH节点管理,包括新增Mesh节点,删除Mesh节点,获取节点信息等功能。
Genie APP组件,天猫精灵Mesh组件,支持天猫精灵网络协议。
• BT Applications
蓝牙应用层,包含灯控节点,开关节点,Provisioner AT模组和天猫精灵灯控节点。
2.2. 目录介绍
下面是BLE MESH SDK的目录结构,表格中介绍了各个目录的功能。
2.3 Mesh协议栈特性介绍
Mesh Profile v1.0特性支持
• Provisioner role(Advertising bearer and GATT bearer)
• Node role(Advertising bearer and GATT bearer)
• Relay feature
• Proxy feature (proxy server)
• Foundation Models
Config server and client
Health server and client
Mesh Models支持
3. Mesh组件
本章节介绍SDK中包含的几个关键Mesh组件的功能和使用方法。
• Mesh Node组件
• Mesh Models组件
• Genie APP组件
3.1. Mesh Node
Mesh Node 支持 Mesh 节点配置和 Model 消息的接收功能。
组件的主要 API 如下表:
3.1.1 示例代码
● 初始化
初始化Node节点,主要配置节点的设备名称,UUID,事件的回调。
● 回调处理
Node节点在配网或者复位过程中会产生如下事件,开发者应当在userprovcb回调中处理
3.2. Mesh Models
Mesh Models组件提供Generic Onoff,Generic Level,Light Lightness,Light CTL的Server/Client Models,此外还有一个Vendor Model。
Mesh Model的API较多,下表列出几个主要的,其他的请参考《蓝牙 Mesh SDK API说明》
3.2.1 示例代码
● 初始化
初始化 Mesh Model 组件,主要配置需要使用的 Models。
● 回调处理
Mesh Model 组件根据使用的 Models 不同会产生不同的事件回调,下面是一个
灯控的设置的事件。
3.3 Genie APP
天猫精灵组件,支持天猫 Mesh Models,天猫精灵的接入,三要素写入 / 存储 / 获
取功能。
组件的主要 API 如下表:
3.3.1 示例代码
● 初始化
初始化天猫精灵组件
/* 初始化 */ genie_init();
●处理函数
以下内容需要在应用层定义和实现,可以参考 applicationsbluetoothgenie_
lightsrclight.c 中实现。
● 三要素写入
Genie APP 组件需要用到三要素才能接入天猫精灵,三要素的获取请参考天猫精
灵开发者网站。
在 Genie APP 内部有一个调试三要素,位于 modulesgenieappbasetritu
ple_default.h。
Genie APP 组件支持通过 CLI 命令写入和读取三要素。
命令如下:
/* 设置三要素 */ set_tt <product id> <key> <mac address> /* 获取三要素 */ get_tt
4. 应用开发
4.1 开发环境
环境搭建和烧录方法,请参考《CB6121 快速上手手册》 。
4.2 Mesh 灯控
Mesh 灯控示例请参考《MESH 灯控开发指南》。
4.3 Mesh 开关
Mesh 开关示例请参考《MESH 开关开发指南》。
5. AT Provisioner
Mesh SDK 中提供一个了 AT Provisoner 模组解决方案,开发者可以使用该方案对
其他 Mesh 节点进行配网和控制。
相关的 AT 命令和使用方法,请参考《MESH 配网模块用户手册》。
6. API 说明
SDK API 请参考《蓝牙 Mesh SDK API 说明》 。
添加班级群
阅读完今日份的文章分享后,别忘了打开钉钉APP,扫描下方训练营班群二维码👇,参与今日课程直播或观看直播回放,群内不定时配备讲师答疑~
学习完课程视频后,我们今天的学习才算正式结束哦~