第 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.h
        mesh_config_common.c
        model_api.c
        model_api.h
    ▾ board/
      ▾ bd19/
          board_ac630x_demo.c
          board_ac630x_demo_cfg.h
          board_ac6311_demo.c
          board_ac6311_demo_cfg.h
          board_ac6313_demo.c
          board_ac6313_demo_cfg.h
          board_ac6318_demo.c
          board_ac6318_demo_cfg.h
          board_ac6319_demo.c
          board_ac6319_demo_cfg.h
          board_config.h
    ▾ examples/
        generic_onoff_client.c
        generic_onoff_server.c
        vendor_client.c
        vendor_server.c
        AliGenie_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
    ▾ Element
        Configuration Server   #SIG Model ID: 0x0000
       Generic On Off Client  #SIG Model ID: 0x1001
4)此时按下按键,就能将开关信息Publish到Group地址0xC000了,如果结合下一小节
SIG Generic OnOff Server,就能控制这个server设备led灯的亮和灭了。

代码解读

.Client运作流程图,如图3.1所示。
../_images/图片13.png

图3.1