简介

该代码仓主要用于发布基于AT命令的SIG MESH透传固件,帮助那些想要更专注于MESH应用层上开发的工程师,无须对SIG MESH进行深入地了解,只需发送相关的AT命令即可实现SIG MESH组网。

硬件平台

采用Nordic的52832或者52840平台,至于物理的载体可以是HX-DK-夏 Z1A00

或者Nordic 52832模组

固件功能简介

红旭基于SIG MESH的AT命令透传固件有如下两个功能:

  1. 支持二值信号量信息的组网应用,如开灯或关灯
  2. 支持自定义数据透传的组网应用,如传送自定义透传的内容,单次最大传输单元为200字节

其中Provisioner以及入网的节点的相关信息如下:

  • Provisioner

    • 元素与模型 \
      Element0 \
      └── Configuration Client Model \
      └── Configuration Server Model \
      └── Health Client Model \
      └── Health Server Model \
      └── Generic OnOff Client Model \
      └── HX Vendor Control Model
    • 最大可配置入网的节点数为80
    • 当Publish Address为单播地址和组地址时,最大可存储的数量为165
    • 当Publish Address为虚拟地址时,最大可存储的数量为1
  • Provisionee

    • 元素与模型 \
      Element0 \
      └── Configuration Server Model
      └── Health Server Model \
      └── Generic OnOff Server Model \
      └── HX Vendor Control Model

    • 最大订阅列表为8个

    • 当Publish Address为单播地址和组地址时,最大可存储的数量为8

    • 当Publish Address为虚拟地址时,最大可存储的数量为1

    • 响应Generic OnOff命令的GPIO为P0.17

AT指令集

下述的所有AT指令,如果对端设备成功接收到,那么均会响应相对应的命令;同时,所有的指令最后都要加上

\r\n

串口的配置信息如下:

  • 波特率:115200
  • 校验位:None
  • 数据位:8
  • 停止位:1
  • 流控制:无
  • TX: PIN0.06
  • RX: PIN0.08

接下来介绍所有的命令详情,具体如下所示:

AT

作用:

用于测试串口通讯是否正常


命令格式:

AT


返回的命令格式:
+OK


示例:
AT\r\n<br>
+OK\r\n

AT+START

作用:

开启或者停止配置周边发出Unprovisioned Device Beacon的设备(该命令仅对Provisioner有效!!!)


命令格式:

AT+START=Parameter

其中Parameter的含义如下所示:

  • 0x01:搜索周围发出unprovisioned Device Beacon的设备并配置其入网
  • 0x00:停止搜索周边的未入网设备
  • ?:查询当前的状态
  • 其他的值均无效

返回的命令格式:

+START: Parameter

其中Parameter的含义如下所示:

  • 0x02:处于搜索状态
  • 0x03:处于停止状态 (默认的状态)
  • 0x04:已经配置完一个未入网的设备
  • 0x05:配网失败或者配置失败

示例:

AT+START=1\r\n<br>
+START:0x02\r\n

AT+TX

作用:
向指定的目标地址透传数据,目标地址可以是单播地址、组地址、Label UUID以及固定的组地址


命令格式:

AT+TX=Parameter1,Parameter2,Parameter3,Parameter4

其中Parameter1的含义如下所示:

  • V: 表示使用HX的自定义透传模型
  • S: 表示使用Generic Onoff Model
  • D: 删除发布地址,包括单播地址、组地址以及虚拟地址
  • ?: 查询Generic Onoff Server Model的状态

其中Parameter2的含义如下所示:

  • 0x00010xFFFF:目标地址,其中有如下几个特殊的地址

    • 0xFFFC:所有的代理节点

    • 0xFFFD:所有的朋友节点

    • 0xFFFE:所有的中继节点

    • 0xFFFF:所有的节点

    • 0x0001:是Provisioner的单播地址,如果Provisionee想给Provisioner发送数据,目标地址写0001(注意,不需要添加“0x”)

      这里还有一点需要的地方,即当使用AT+ADDRESS查不到虚拟地址时,那么此时的目标地址就应该填充Label UUID,否则直接填充虚拟地址

其中Parameter3的含义如下所示:
当Parameter1为V时:Parameter3的值允许如下:

  • 0:不需要ACK响应。
  • 1:需要ACK响应。包和包之间的间隔必须大于50ms 否则,网络响应不过来。

备注:Provisioner 不会对任何的节点(Provisionee)做ACK响应。也就是,如果节点向Provisioner 发送一包数据,该参数(Parameter3)必须为0。

其中Parameter4的含义如下所示:

  • 当Parameter1为V时,需要透传的数据,最大长度不能大于380字节
  • 当Parameter1为S时,透传的数据只能是0或1
  • 当Parameter1为D时,该参数务必为0
  • 当Parameter1为?时,第一个是当前的状态,紧接着是目标的状态值
    ---

返回的命令格式:

+TX: Parameter

其中Parameter的含义如下所示:

  • 0x00:发送成功
  • 0x01:目标地址没在DSM中,所以在新添的过程中导致DSM的空间不足,需要删除在DSM中没用的地址
  • 0x02:发送失败,请稍后再试
  • 0x04:还未发送完成,请稍后再发
  • 0x05:发送超时
  • 0x06:删除的发布地址不存在
  • 0x07:发布地址列表为空
  • 0x08:透传数据的长度已经超过380字节

示例:

发送方

AT+TX=V,0201,0,abcdef\r\n<br>
+TX:0\r\n

AT+ADDRESS

作用:

查询Provisioner或者节点的所有发布地址,包括单播地址、组地址以及虚拟地址


命令格式:

AT+ADDRESS=Parameter1
其中Parameter1的含义如下所示:

  • ?:
    • Provisioner
      查询当前Provisioner所有的发布地址,其中单播地址就是所有入网节点的元素地址
    • Provisionee(入网的节点)
      查询当前节点所有的发布地址,其中返回的第一个地址就是该节点的单播地址,其他的均为其发布地址
  • 其他的值无效

返回的命令格式:

+ADDRESS: Parameter1,Parameter2,......,Parameter n
其中上述Parameter的含义如下所示:

  • Provisioner
    • 如果Parameter1的值为0x05时:说明Provisioner没有存储任何入网设备的信息
    • 如果Parameter1的值为0x06时:说明Provisioner获取地址信息失败
    • 除了上述值之外,其他值表示Provisioner所创建的MESH网络中的所有发布地址
  • Provisionee(入网的节点)
    • 如果Parameter1的值为0x05时:说明此时还没有入网
    • 除了上述值之外,返回的第一个地址就是该节点的单播地址,其他值表示入网节点所有的发布地址,可以有一个,也可以有多个

示例:

AT+ADDRESS=?\r\n<br>
+ADDRESS:0x1234\r\n


AT+REMOVE

作用:

将入网的节点从当前的SIG Mesh网络中移除(该命令仅对Provisioner有效!!!)


命令格式:

AT+REMOVE=Parameter1

其中Parameter1的含义如下所示:

  • 入网节点首要元素地址,即节点的单播地址
  • 其他的值无效

返回的命令格式:

+REMOVE: Parameter1

其中上述Parameter1的含义如下所示:

  • 0x00: 表示移除成功
  • 0x01: 移除的节点的地址无效
  • 0x02: 移除的节点失败
  • 0x03: 对端节点的入网信息已经清除,但是Provisioner本地存储该节点的信息清除失败
    ---

示例:

AT+REMOVE=1234\r\n<br>
+REMOVE:0x00\r\n

AT+SUBSCRIBE

作用:

增删查节点所属透传模型或者通用ON/OFF服务端模型的订阅地址


命令格式:

AT+SUBSCRIBE=Parameter1,Parameter2,Parameter3,Parameter4

其中Parameter1的含义如下所示:

  • ?:查询节点所属模型的订阅地址,如有多个则按顺序显示多个订阅地址
  • 0:删除节点所属模型的订阅地址(该参数仅对Provisioner有效!!!)
  • 1:增加节点所属模型的订阅地址(该参数仅对Provisioner有效!!!)
  • 其他的值无效

Parameter2的含义如下所示:

  • V:节点对应的所属模型为HX透传自定义模型
  • S:节点对应的所属模型为通过ON/OFF服务端模型
  • 其他的值无效

而Parameter3(该参数仅对Provisioner有效!!!)的含义如下所示:

  • 该参数表示新增/删除/查询时,需要执行的对端设备的单播地址

而Parameter4(该参数仅对Provisioner有效!!!)的含义如下所示:

  • 新增时,表示需要新增订阅的组地址或者Label UUID(128 Bits)的模型,其所属的元素地址
  • 移除时,表示需要删除的模型,其所属的元素地址
  • 查询时,不需要该参数,即只需上述的3个参数即可

返回的命令格式:

+SUBSCRIBE=Parameter1,Parameter2,……,Parameter n

其中上述Parameter的含义如下所示:

  • Parameter1为0x00时:删除或者增加订阅地址成功
  • Parameter1为0x04时:订阅列表为空或者查询的地址是不存在的
  • Parameter1为0x06时:无效的地址,并不是当前网络中节点的单播地址
  • Parameter1为0x07时:没未收到对端设备的响应,请60秒后再查
  • Parameter1为0x08时:传进来的地址不是单播地址
  • Parameter1为0x09时:订阅列表空间不足
  • Parameter1为0x0A时:相关的命令执行无效
  • 除了上述值之外,此时则表示有效的订阅地址(组地址或者虚拟地址)

示例:

AT+SUBSCRIBLE=1,S,0201,C003\r\n<br>
+SUBSCRIBLE:0x00\r\n

AT+RESET

作用:

Provisioner或者入网的节点删除所有MESH相关的配置信息,回到初始化状态;但是需要注意下述两点:

  1. Provisioner执行该命令,等同于恢复出厂设置
  2. Provisionee也是等同于恢复出厂设置,但是此时Provisioner不知道该节点已经恢复出厂设置,其仍然保存有该节点的信息;因此,当入网的节点需要恢复出厂设置时,建议采用AT+REMOVE命令

命令格式:

AT+RESET=1


返回的命令格式:

+RESET😛arameter

其中Parameter的含义如下所示:

  • 0x00:说明清除配网信息以及软复位成功

示例:

AT+RESET=1\r\n<br>
+RESET:0x00\r\n

错误码

上述所有AT指令的错误值返回的格式如下:

+ERR:错误码

其中,各个错误码表达的含义如下所示:

  • 0xFA:AT命令中找不到等号
  • 0xFB:AT命令列表不存在该AT命令
  • 0xFC:内存分配失败
  • 0xFD:传入的实参为空
  • 0xFE:该命令所携带的参数无效
  • 0xFF:该命令此时无效

注意事项

上述所有AT指令的内容均为字符串,其中AT+COMMAND的内容要大写且必须是英文输入法下的字母或字符,例如:"AT+RESET=1\r\n"

GPIO口功能指示(保留)

该固件选用3个GPIO口用于不同功能的指示,具体的功能分配如下:

GPIO0(输出)

这里的GPIO0指的是模块的GPIO0,功能如下:

  • 低电平:已经入网
  • 高电平:还未入网(默认状态)

GPIO1(输出)

这里的GPIO1指的是模块的GPIO1,功能如下:

  • 低电平:已经接收到MESH的透传数据
  • 高电平:没有MESH的透传数据(默认状态)

GPIO2(输入)

这里的GPIO2指的是模块的GPIO2,功能如下:

  • 低电平:暂停发送MESH透传数据
  • 高电平:发送MESH透传数据(默认状态)

在哪里可以下呢

    fuerst 先报名,我还在整理资料

    报名

      报名

        Wireless-Tech 好的,报名报名

          举手,报名报名

            报名

              报名

                报名 ,报名

                  报名👍

                    举手!我想报名~

                      10 天后

                      报名 举手报名

                        8 天后

                        报名

                          liu2012house
                          已经拉入内侧组,注意看左侧次标签

                            报名

                              21 天后

                              报名

                                13 天后

                                报名

                                  Wireless-Tech


                                  固件已经经过几次更新,如需测试固件,可以到淘宝店购买最新的模组。申明从论坛过来的,可以申请优惠模组。
                                  淘宝店地址:https://item.taobao.com/item.htm?ft=t&id=645107538269

                                  建议新增加如下指令:
                                  1:增加查询固件版本号
                                  2: