当前文档版本为 v1.0.1,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

Solution: Mesh Genie Curtain

1 功能概述

此sample为针对智能音箱(天猫精灵)的演示项目,可以完成入网及窗帘模拟过程。同理也可以用nRF mesh的手机APP进行入网,进而进行控制操作。

其他: 增加空中adv扫描的相关接口,对于空中广播,可以通过2.4G模拟adv来进行其他途径的控制。

注意:pan1080-dk-v0.8.0 已验证过Mesh Genie Curtain 的稳定性和部分性能,其他相关的mesh demo 未进行大量测试验证,请用户参考Mesh Genie Curtain 进行开发测试。

2 演示视频

3 环境要求

  • board: pan108xxb5_evb

  • uart (option): 显示串口log

  • 音响:天猫精灵;同时需要准备相对应的三元组

  • 测试软件:PanMesh 或 nRF Mesh

4 编译和烧录

例程位置:zephyr\samples_panchip\solutions\mesh_genie_curtain

使用 ZAL 工具可以对其进行编译、烧录、打开 VS Code 调试等操作。关于 ZAL 工具的详细介绍请参考:Zephyr APP Launcher 工具介绍

5 演示说明

  1. 根据Zephyr编译环境搭建VSCode开发环境

  2. 天猫三元组需要使用panlink烧录到Info区间(该区域不受到jflash擦除影响)或者使用代码输入文本方式进行配网。

  3. 对天猫精灵说找队友,对设备进行入网。

  4. 可以尝试更新CONFIG_BT_MESH_UNPROV_BEACON_INT来加快或延长unprovision广播发送间隔。

6 开发说明

6.1 KCONFIG宏说明

  1. flash相关,应用在快速重启擦除入网信息

CONFIG_BT_SETTINGS=y
CONFIG_FLASH=y
CONFIG_FLASH_MAP=y
CONFIG_NVS=y
CONFIG_SETTINGS=y
  1. 调试LOG宏,不建议全开,log较多占一定ram

CONFIG_BT_DEBUG_LOG=y

CONFIG_BT_MESH_DEBUG=y
CONFIG_BT_DEBUG_CONN=y
CONFIG_BT_MESH_DEBUG_BEACON=y
CONFIG_BT_MESH_DEBUG_PROV=y
CONFIG_BT_MESH_DEBUG_ADV=y
CONFIG_BT_MESH_DEBUG_PROXY=y
CONFIG_BT_MESH_DEBUG_MODEL=y
CONFIG_BT_MESH_DEBUG_ACCESS=y
CONFIG_BT_MESH_DEBUG_TRANS=y
CONFIG_BT_MESH_DEBUG_KEYS=y
CONFIG_BT_MESH_DEBUG_NET=y
  1. 广播相关参数

CONFIG_BT_DEVICE_NAME_DYNAMIC=y      # dynamic dev name
CONFIG_BT_DEVICE_NAME="genie"        # dev name
CONFIG_BT_MESH_UNPROV_BEACON_INT=2   # pb adv interval(s)
  1. 扫描相关参数

CONFIG_BT_MESH_OBSERVER=y          # enhanced controller dynamic scan

6.2 工程文件明

sig_model.c为sig model相关的实现。

genie_vendor_model.c为sig model相关的实现。

genie_provision.c为三元组相关的实现。

ble_scan_receiver.c为空中广播扫描相关,可以针对空中广播进行二次开发。

6.3 ble_mesh说明

ble/mesh相关操作:

  1. static const struct bt_mesh_prov prov 配置入网参数

  2. struct bt_mesh_model root_models[] 配置mesh model

  3. CONFIG_TRIPLE_READ_FROM_INFO为是否使能info区进行读取三元组数据,默认使能。调试阶段也可以手动输入文本三元组来进行开发。请在prj.conf中进行修改。

	if (IS_ENABLED(CONFIG_TRIPLE_READ_FROM_INFO)) {
		genie_info_to_triple_str(pid_string, mac_string, key_string);
		genie_str_to_triple(pid_string, mac_string, key_string);
	} else {
		genie_str_to_triple("00e67f0c", "3c5d29afd1d9", "3c5ea3960f70a959fb470a893f3b189b");
	}
  1. PANLINK三元组烧录界面如下图:

    image-20230213182217643

    PANLINK三元组烧录

  2. scan_recv函数处理收到所有adv的回调函数,可在该函数中进一步处理。

7 RAM/Flash资源使用情况

Memory region         Used Size  Region Size  %age Used
FLASH:      159084 B       384 KB     40.46%
SRAM:       43142 B        50 KB     84.26%