上一篇:蓝牙 Mesh 私有 Model 开发指南 | 《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》第四章>>>
下一篇:蓝牙 Mesh 灯控开发实例 | 《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》第六章>>>
点击免费下载
《无需从0开发 平头哥教你1天上手蓝牙Mesh应用解决方案》>>>
1. 智能开关介绍
本文将使用蓝牙 MeshSDK和CB6121开发板,通过Shell命令和按键触发模拟智能开关,用来控制智能灯的开关状态。
2. 应用开发
2.1. 应用初始化
应用入口函数app_main(),主要实现如下功能:
• 板级初始化
• Mesh开关Models定义
• Mesh节点初始化,注册Model事件回调处理函数
代码分析:
2.2. 设备模型定义
Mesh解决方案中,模型用于定义设备节点的功能。Mesh开关可以定义为下列模型:
• Configuration Server Model
这个模型用于存储节点的MESH网络配置。
• Health Server Model
该模型主要用于MESH网络诊断。
• Generic OnOff Cient Model
该模型用于获取、控制Generic OnOff Server设备的开关属性。
代码分析:
2.3. MESH Models事件回调处理
MESH Node组件将根据所定义的Models,上报相关事件及数据。以OnOff属性为例,进行代码解析:
注意:
网络中需要存在多个节点时,需要更改代码中设备UUID后编译烧录该镜像,并烧录镜像时设置不同的MAC地址,避免组网出现问题 。
3. 例程运行
3.1. 示例介绍
本示例的运行需要两块开发板,一块用于烧录Mesh开关示例,一块用于烧录Mesh灯示例。两个设备可同时通过手机nRF Mesh APP配置入网、绑定APP Key、设置组地址。然后通过Mesh开关设备的Shell命令或者按键触发,控制Mesh灯的开关状态。实际运行效果可参看SIG Mesh配网和控制演示视频。
3.2 开发板连线
3.3 编译
● 进入 SDK 根目录,编译 MESH 灯应用镜像
3.4. 运行
• 下载工程目录下的镜像文件(generated/total_image.hexf)至CB6121开发板,镜像下载可参考《CB6121快速上手手册》
• 连接串口调试工具, 配置为
波特率: 115200, 数据位: 8, 校验位: None, 停止位: 1, 流控: None
• 开发板拨码开关拨至GND
• 按RESET按键,复位开发板
• 设备将开启Unprovisoin Device Beacon广播,串口上输出'Mesh Switch node demo'信息
• Mesh灯设备入网操作请参照智能灯应用开发实例 操作,发布地址的操作如下图所示:
注意:Mesh灯设备的Generic OnOff Server Model应用密钥需要设置与MESH开关设备一致,SUB地址与Mesh开关的PUB地址一致
• Mesh开关设备配网可参照下图,通过手机nRF Mesh APP操作,绑定应用密钥的索引为1
● 手机操作设备入网时,将在串口输出如下信息
● 设置 Mesh 开关设备中的 Generic OnOff Client Model 的应用密钥,绑定应用
密钥的索引为 1;并设置 Publication 地址为 0xC000
● 通过 Shell 命令控制智能灯的开关状态,设备将在串口上输出如下信息
● 还可以通过开发板上 P14 按键,发送无需 ACK 的开关控制操作;P15 按键,发
送需要 ACK 的开关控制操作
[ 207.266000][I][DEMO ]send unack msg LED OFF
● 通过开发板上 P15 按键,发送需要 ACK 的开关控制操作
[ 210.852000][I][DEMO ]send ack msg LED ON