第 3 章 SIG Mesh 使用说明
1、概述
遵守蓝牙SIG Mesh协议(链接网址:https://www.bluetooth.com/specifications/specs/),基于蓝牙5 ble实现网内节点间通讯,具体功能如下:全节点类型支持(Relay/Proxy/Friend/Low Power);支持以PB-GATT方式入网(手机APP配网,支持”nRF Mesh”安卓和苹果最新版本);支持以PB-ADV方式入网(“天猫精灵”配网);支持设备上电自配网(不用网关就可实现设备在同一网内,支持加密key自定义);节点relay/beacon功能可修改;节点地址可自定义;节点信息断电保存;节点发布(Publish)和订阅(Subscribe)地址可修改;支持节点Reset为未配网设备;支持蓝牙SIG既有Models和用户自定义Vendor Models。
2、工程配置
- 代码工程:
apps\mesh\board\bd19\AC632N_mesh.cbp
- 代码调用的目录如下:▾ mesh/▾ api/feature_correct.hmesh_config_common.cmodel_api.cmodel_api.h▾ board/▾ bd19/board_ac630x_demo.cboard_ac630x_demo_cfg.hboard_ac6311_demo.cboard_ac6311_demo_cfg.hboard_ac6313_demo.cboard_ac6313_demo_cfg.hboard_ac6318_demo.cboard_ac6318_demo_cfg.hboard_ac6319_demo.cboard_ac6319_demo_cfg.hboard_config.h▾ examples/generic_onoff_client.cgeneric_onoff_server.cvendor_client.cvendor_server.cAliGenie_SoCket.c
在 api/model_api.h
下,通过配置CONFIG_MESH_MODEL选择相应例子,SDK提供了5个应用实例。默认选择SIG_MESH_GENERIC_ONOFF_CLIENT,即位于 examples/generic_onoff_client.c
下的例子。
//< Detail in "MshMDLv1.0.1"
#define SIG_MESH_GENERIC_ONOFF_CLIENT 0 // examples/generic_onoff_client.c
#define SIG_MESH_GENERIC_ONOFF_SERVER 1 // examples/generic_onoff_server.c
#define SIG_MESH_VENDOR_CLIENT 2 // examples/vendor_client.c
#define SIG_MESH_VENDOR_SERVER 3 // examples/vendor_server.c
#define SIG_MESH_ALIGENIE_SoCKET 4 // examples/AliGenie_SoCket.c
// more...
//< Config which example will use in <examples>
#define CONFIG_MESH_MODEL SIG_MESH_GENERIC_ONOFF_CLIENT
3、应用实例
SIG Generic OnOff Client
简介
该实例通过手机“nRF Mesh”进行配网,操作流程如下所示:-> 设备名称:OnOff_cli-> Node Features:Proxy + Relay-> Authentication方式:NO OOB-> Elements个数:1-> Model:Configuration Server + Generic On Off Client
实际操作
1)基本配置使用USB DP作为串口debug脚,波特率为1000000;使用PA3作为AD按键;设备名称为“OnOff_cli”,MAC地址为“11:22:33:44:55:66”,操作流程如下所示:-> api/model_api.h
#define CONFIG_MESH_MODEL SIG_MESH_GENERIC_ONOFF_CLIENT
-> board/xxxx/board_xxxx_demo_cfg.h
#define TCFG_UART0_TX_PORT IO_PORT_DP
#define TCFG_UART0_BAUDRATE 1000000
#define TCFG_ADKEY_ENABLE ENABLE_THIS_MOUDLE //是否使能AD按键
#define TCFG_ADKEY_PORT IO_PORTA_03 //注意选择的IO口是否支持AD功能
#define TCFG_ADKEY_AD_CHANNEL AD_CH_PA3
-> examples/generic_onoff_client.c
#define BLE_DEV_NAME 'O', 'n', 'O', 'f', 'f', '_', 'c', 'l', 'i'
#define CUR_DEVICE_MAC_ADDR 0x112233445566
- 对于MAC地址,如果想不同设备在第一次上电时使用随机值,可以按照以下操作,将NULL传入bt_mac_addr_set函数。
- 如果想用配置工具配置MAC地址,应不调用bt_mac_addr_set函数。-> examples/generic_onoff_client.c
void bt_ble_init(void)
{
u8 bt_addr[6] = {MAC_TO_LITTLE_ENDIAN(CUR_DEVICE_MAC_ADDR)};
bt_mac_addr_set(NULL);
mesh_setup(mesh_init);
}
2)编译工程并下载到目标板,接入串口,接入AD按键,上电或者复位设备。
3)使用手机APP“nRF Mesh”进行配网,详细操作如下所示
▾ nRF Mesh▾ ADD NODE▾ Onoff_cli▾ INDETIFY▾ INENTIFY▾ PROVISION
注
该动图位于该文档同级目录,如点击无效请手动打开“Generic_On_Off_Client.gif”)
- 配网完成后节点结构如下:
- ▾ Elements▾ ElementConfiguration Server #SIG Model ID: 0x0000Generic On Off Client #SIG Model ID: 0x1001
- 4)此时按下按键,就能将开关信息Publish到Group地址0xC000了,如果结合下一小节
- SIG Generic OnOff Server,就能控制这个server设备led灯的亮和灭了。
代码解读
.Client运作流程图,如图3.1所示。

图3.1