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

Bluetooth: Mesh Echo

1 功能概述

此sample为针对智能音箱Amazon Echo的演示项目,可以完成入网及控制开关。

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

2 环境要求

  • board: pan108xxb5_evb

  • uart (option): 显示串口log

  • Amazon Echo: 测试音箱

  • 测试软件: PanMesh 或 nRF Mesh

3 编译和烧录

例程位置:zephyr\samples_panchip\bluetooth\mesh_echo

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

4 演示说明

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

  2. 搭建Echo测试环境,不同板子需要更新不同的DEV UUID

  3. 下载即可验证Echo入网的功能,在app端显示为Plug

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="echo"         # dev name
CONFIG_BT_MESH_UNPROV_BEACON_INT=2   # pb adv interval(s)
  1. 扫描相关参数

CONFIG_BT_MESH_OBSERVER=y          # enhanced controller dynamic scan 

5.2 MAIN函数说明

main函数包括3部分

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

  2. bt_enable() 初始化蓝牙

  3. bt_ready() 初始化MESH

  4. 蓝牙回调接口

    static void connected(struct bt_conn *conn, uint8_t err)
    {
    	if (err) {
    		printk("Connection failed (err 0x%02x)\n", err);
    	} else {
    		printk("Connected\n");
    	}
    }
    
    static void disconnected(struct bt_conn *conn, uint8_t reason)
    {
    	printk("Disconnected (reason 0x%02x)\n", reason);
    }
    
    BT_CONN_CB_DEFINE(conn_callbacks) = {
    	.connected = connected,
    	.disconnected = disconnected,
    };
    

5.3 ble_mesh说明

ble/mesh相关操作:

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

  2. struct bt_mesh_model root_models[] 配置mesh model

  3. UUID生成方式:静态数组static uint8_t dev_uuid_echo[16]

  4. 入网认证方式:no oob(Echo选择的,因此不需要类似天猫小度的三元组静态oob)

  5. 入网beaer选择:bt_mesh_prov_enable(BT_MESH_PROV_ADV | BT_MESH_PROV_GATT);

5.4 其他说明

  1. light modelconfig modelhealth model请参考[Mesh开发指南](../../dev_guides/Developing Bluetooth Mesh Applications.md)。

  2. 目前只添加了 Generic Onoff Model,其它灯控相关的CTLHSL等将在后续版本中添加。

  3. 入网方式为Pb gatt,通过连接方式进行入网,入网后每次连接会进行proxy configuration filter add等操作。

6 RAM/Flash资源使用情况

Memory region         Used Size  Region Size  %age Used
FLASH:      189540 B       256 KB     72.30%
SRAM:       45142 B        50 KB     88.17%