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 演示说明¶
根据Zephyr编译环境搭建VSCode开发环境
天猫三元组需要使用panlink烧录到Info区间(该区域不受到jflash擦除影响)或者使用代码输入文本方式进行配网。
对天猫精灵说
找队友
,对设备进行入网。可以尝试更新CONFIG_BT_MESH_UNPROV_BEACON_INT来加快或延长unprovision广播发送间隔。
6 开发说明¶
6.1 KCONFIG宏说明¶
flash相关,应用在快速重启擦除入网信息
CONFIG_BT_SETTINGS=y
CONFIG_FLASH=y
CONFIG_FLASH_MAP=y
CONFIG_NVS=y
CONFIG_SETTINGS=y
调试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
广播相关参数
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)
扫描相关参数
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相关操作:
static const struct bt_mesh_prov prov
配置入网参数struct bt_mesh_model root_models[]
配置mesh modelCONFIG_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");
}
PANLINK三元组烧录界面如下图:
scan_recv
函数处理收到所有adv的回调函数,可在该函数中进一步处理。
7 RAM/Flash资源使用情况¶
Memory region Used Size Region Size %age Used
FLASH: 159176 B 384 KB 40.48%
SRAM: 43142 B 50 KB 84.26%