Bluetooth: Mesh Echo¶
1 功能概述¶
此sample为针对智能音箱Amazon Echo的演示项目,可以完成入网及控制开关。
2 环境要求¶
board: pan1080a_afld_evb
uart (option): 显示串口log
Amazon Echo: 测试音箱
测试软件: PanMesh 或 nRF Mesh
3 编译和烧录¶
项目位置:zephyr\samples_panchip\bluetooth\mesh_echo
统一的配置、编译、下载工具正在开发中,当前可以使用脚本进行编译和下载。
脚本位置:quick_build_samples\bluetooth\mesh_echo.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 演示说明¶
根据Zephyr编译环境搭建VSCode开发环境
搭建Echo测试环境,不同板子需要更新不同的DEV UUID
下载即可验证Echo入网的功能,在app端显示为Plug
5 开发说明¶
5.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="echo" # dev name
CONFIG_BT_MESH_UNPROV_BEACON_INT=2 # pb adv interval(s)
5.2 MAIN函数说明¶
main函数包括3部分
flash相关的配置擦除, 包括函数
ps_settings_init
,short_time_multireset_bt_mesh_unprovisioning
bt_enable()
初始化蓝牙bt_ready()
初始化MESH蓝牙回调接口
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相关操作:
static const struct bt_mesh_prov prov
配置入网参数struct bt_mesh_model root_models[]
配置mesh modelUUID生成方式:静态数组
static uint8_t dev_uuid_echo[16]
入网认证方式:
no oob
(Echo选择的,因此不需要类似天猫小度的三元组静态oob)入网beaer选择:
bt_mesh_prov_enable(BT_MESH_PROV_ADV | BT_MESH_PROV_GATT);
5.4 其他说明¶
light model
和config model
,health model
请参考[Mesh开发指南](../../dev_guides/Developing Bluetooth Mesh Applications.md)。目前只添加了
Generic Onoff Model
,其它灯控相关的CTL
,HSL
等将在后续版本中添加。入网方式为
Pb gatt
,通过连接方式进行入网,入网后每次连接会进行proxy configuration 和 filter add
等操作。