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

Bluetooth: Mesh Speaker

1 功能概述

此sample为针对智能音箱(小度音箱/天猫精灵)的演示项目,可以完成入网及灯控过程。

可以通过CONFIG控制不同设备类型/同时支持两种音箱。

2 环境要求

  • board: pan1080a_afld_evb

  • uart (option): 显示串口log

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

  • 测试软件:PanMesh 或 nRF Mesh

3 编译和烧录

项目位置:zephyr\samples_panchip\bluetooth\mesh_speaker

目前可使用ZAL工具或quick build脚本进行编译和下载。

脚本位置:quick_build_samples\bluetooth\mesh_speaker.bat

打开脚本后默认会编译项目,编译完成时,可输入字符进行后续下载等操作:

Input the keyword to continue:
  'b' build                         编译项目
  'r' make clean and rebuild        重新编译项目
  'f' flash download                下载
  'e' erase chip                    擦除芯片
  'o' open project by VS Code       打开 `VS Code`,可查看源码,执行编译下载等
  others exit                       退出
wait input:

4 演示说明

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

  2. 天猫小度三元组在ble_mesh.c对应填充, 多块板子需要填充不同的三元组

  3. 下载即可验证小度/天猫同时入网的功能。入网前循环打印小度/天猫的UUID unpro beacon

    [00:45:23.777,000] <dbg> bt_mesh_beacon.beacon_send:
    [00:45:23.777,000] <dbg> bt_mesh_beacon.unprovisioned_beacon_send:
    [00:45:23.777,000] <dbg> bt_mesh_beacon.unprovisioned_beacon_send: beacon_flag tmall
    [00:45:25.779,000] <dbg> bt_mesh_beacon.beacon_send:
    [00:45:25.779,000] <dbg> bt_mesh_beacon.unprovisioned_beacon_send:
    [00:45:25.779,000] <dbg> bt_mesh_beacon.unprovisioned_beacon_send: beacon_flag xiaodu
    
  4. 可以尝试更新CONFIG_BT_MESH_UNPROV_BEACON_INT来加快或延长unprovision广播发送时间。

5 开发说明

5.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="speaker"      # dev name
CONFIG_BT_MESH_UNPROV_BEACON_INT=2   # pb adv interval(s)
CONFIG_BT_MESH_MULTIPLE_BEACON=y     # y means can provision both speakers

5.2 MAIN函数说明

main函数包括3部分

  1. flash相关的配置擦除, 包括函数ps_settings_initshort_time_multireset_bt_mesh_unprovisioning

  2. bt_enable() 初始化蓝牙

  3. bt_ready() 初始化MESH

5.3 ble_mesh说明

ble/mesh相关操作:

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

  2. struct bt_mesh_model root_models[] 配置mesh model

  3. 天猫小度切换入网流程

5.4 其他说明

  1. speaker_operate为三元组生成beacon dev uuid和auth_static 相关操作,通用于小度,天猫,小米等智能网关,根据三元组(pid,mac,sec)生成UUID和静态oob认证data。

  2. light model和config model,health model相关参考后续介绍model文档,参考spec文档。

  3. 小度天猫vendor暂未加入,后续需要添加至subsys/bluetooth/mesh_models

  4. 小度入网后,由heartbeat监测设备在线状态,目前暂未完整验证,所以可能会上报设备不在线状态。