串口协议文档
1.串口通信规范
波特率:115200/9600
数据位:8
奇偶校验:无
停止位:1
数据流控:无
2.帧协议格式
字段 | 帧头 | 版本 | 命令ID | 数据长度 | 数据域 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | N | 1 |
说明 | 固定为0x5aa5 | 指定通信协议版本 | 指明帧类型 | 数据内容的长度,大端 | 数据内容 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
协议补充说明:
在协议格式里的字段数据,所有大于1字节的数据,均采用大端模式进行传输。
同步传输机制
同步传输机制,即采用同命令一发一收。一方发送命令,另一方应答该命令。该机制一般用于心跳包通信或是查询命令上。
如下图所示:
- 异步传输机制
异步传输机制,即M命令下发,而N命令回复。该机制一般用于控制命令。即模组下发命令控制MCU状态,而MCU采用状态上报的命令进行恢复模组。
如下图所示:
模组下发控制命令
MCU上报状态
- 版本作用
在该协议里的版本号,主要是用于拓展功能,兼容新老版本协议。现将模组发送版本号固定为0x10, 而MCU回复模组的发送版本号为0x20。
3.数据域协议格式
数据域字段 | 数据id | 数据类型 | 数据长度 | 数据内容 |
---|---|---|---|---|
字节数 | 1 | 1 | 2 | 1/2/4/N |
说明 | 指明该数据字段的序号 | 对应于该字段数据的类型 | 指明数据内容的数据长度 | 该内容采用16进制表示,采用大端传输 |
- 数据类型:
Type value | 数据类型 | 字节数据 | 说明 |
---|---|---|---|
0x01 | Bool | 1 | 数据内容为0x00/0x01 |
0x02 | value | 4 | 该类型为整形数据,采用大端表示 |
0x03 | String | N | 采用16进制传输字符串数据 |
0x04 | Enum | 1 | 枚举类型,范围:0 - 255 |
- 协议补充说明:
- 在数据域里传输的数据内容以及数据id,均可在物模型数据文档中查询,即不同的数据内容对应着不同的数据id和数据类型。如开关,数据id为1,数据类型为bool。
- 该协议格式上的不同字段里,大于1字节的数据,均采用大端方式进行传输。
- 采用string类型进行传输数据时,string类型的数据是采用json格式的数据。
4.协议命令列表
4.1 心跳命令
模组上电后,将以每秒1次的间隔持续发送心跳包数据,等待MCU回复心跳。模组若是收到正确的心跳包回复,模组心跳包发送频率变为15秒一次;并继续执行后续的初始化指令。而模组若是未收到正确的回复,将保持每秒1次的心跳包频率,直至收到心跳包的回复。
MCU也可根据模组是否下发心跳包进行判断模组运行正常或是复位情况。若是模组无心跳下发,则MCU可通过模组提供的硬件复位引脚复位模组。
当模组与MCU以通过心跳包建立了连接后,若是模组在连续90秒未收到MCU的心跳回复,即连续6个心跳没有回复时,模组将会自动重启;并等待MCU心跳的回复。
若是已配网的设备,模组与MCU因异常未建立连接时,当超过3分钟后,云端将自动判定该设备为离线状态。
模组发送
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 0 | 1 |
描述 | 0x5aa5 | 0x10 | 0x00 | 0x0000 | 无 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
发送示例:5a a5 10 00 00 00 0f
- MCU返回
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 0 | 1 |
描述 | 0x5aa5 | 0x20 | 0x00 | 0x0001 | 0x00:MCU重启后第一次心跳返回值,仅发送一次,用于模组判断工作过程中MCU是否重启 0x01:除MCU重启外返回0,其余心跳包返回1 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
MCU第一次返回示例:5a a5 20 00 00 01 00 20
除第一次外,MCU正常返回示例:5a a5 20 00 00 01 01 21
4.2 查询产品信息命令
通过查询产品信息命令,可获得产品ID和MCU软件版本。
产品ID:即PID(product id),主要是由爱星物联平台根据用户选择的产品而生成的产品ID,该PID是指明设备的产品类型。
MCU软件版本:采用点分十进制形式,格式为x.x.x, 其中x为十进制数,取值范围为0 – 99。主要用于指明MCU软件的版本号,便于对MCU固件进行升级。
模组发送
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 0 | 1 |
描述 | 0x5aa5 | 0x10 | 0x01 | 0x0000 | 无 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
发送示例:5a a5 10 01 00 00 01
- MCU返回
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 0 | 1 |
描述 | 0x5aa5 | 0x20 | 0x01 | N | 数据内容包含产品KEY、MCU固件版本号和产品标识 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
数据示例:{"pid":"PKhyQ4bI","ver":"1.0.0","flag":"ZMXX"}
产品信息示例字段说明:
字段 | 说明 |
---|---|
pid | 表示产品KEY,即在爱星物联平台上申请产品的pid |
ver | 表示MCU软件版本号 |
flag | 标识产品标识,即在爱星物联平台上写入的字符串 |
发送示例:5A A5 20 01 00 2E 7B 22 70 69 64 22 3A 22 50 4B 68 79 51 34 62 49 22 2C 22 76 65 72 22 3A 22 31 2E 30 2E 30 22 2C 22 66 6C 61 67 22 3A 22 5A 4D 58 58 22 7D F8
4.3 查询工作模式命令
设置模组的配网触发以及指示方式,由MCU选择设定。模组的工作模式主要是针对如何指示WiFi的工作状态以及如何进入配网模式。而查询工作模式命令,即MCU对模组进行查询处于以下哪种方式。
MCU与模组配合处理模式:
MCU通过某种触发信号,通过串口指令让模组进入配网模式。而模组通过串口通知MCU,模组当前的WiFi工作状态,由MCU提供显示支持。
模组自处理模式:
模组的WiFi工作状态通过模组的GPIO引脚驱动LED闪烁状态显示。模组进入配网方式则通过检测模组的GPIO输入信号而进入。
当前模组固件未支持该模式,后续将持续更新该功能。
- 模组发送
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 0 | 1 |
描述 | 0x5aa5 | 0x10 | 0x02 | 0x0000 | 无 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
发送示例:5a a5 10 02 00 00 11
- MCU返回
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 0/2 | 1 |
描述 | 0x5aa5 | 0x20 | 0x02 | 0x0000/0x0002 0x0000:MCU与模组配合处理模式 0x00002:模组自处理模式 | 数据长度为2: Data[0]:WiFi状态指示灯GPIO序号 Data[1]:进入配网模式触发信号的GPIO序号 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
MCU与模组配合处理:5a a5 20 02 00 00 21
模组自处理,指示灯IO为GPIO1,触发信号IO为GPIO5:5a a5 20 02 00 02 01 05 29
4.4 报告联网状态命令
- 设备联网状态如下表:
设备联网状态 | 描述 | 状态值 |
---|---|---|
状态 1 | 模组已进入BLE配网模式 | 0x00 |
状态 2 | 模组已进入AP配网模式 | 0x01 |
状态 3 | 模组已配网但未连上路由器 | 0x02 |
状态 4 | 模组已配网且连上路由器 | 0x03 |
状态 5 | 设备成功连接到云端 | 0x04 |
状态 6 | 模组处于低功耗模式 | 0x05 |
状态 7 | 模组已进入BLE和AP共存配网模式 | 0x06 |
- 模组自处理工作模式相应的LED指示状态:
状态1、2和7:循环250ms闪烁一次后,1000ms闪烁一次
状态3:间隔闪烁250ms
状态4:间隔闪烁1000ms
状态5:长亮状态
状态6:长暗状态
当模式检测到MCU重启或MCU断开连接再重连的过程中,模组将主动报告模组的WiFi状态至MCU。
当模组的WiFi状态改变时,模组将主动报告WiFi状态至MCU。
如设置模组工作模式为自处理模式时,则MCU无需实现该协议功能。
当模组重启时,亦会报告WiFi状态至MCU。
模组发送
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 1 | 1 |
描述 | 0x5aa5 | 0x10 | 0x03 | 0x0001 | 指示 Wi-Fi 工作状态: 0x00:状态 1 0x01:状态 2 0x02:状态 3 0x03:状态 4 0x04:状态 5 0x05:状态 6 0x06:状态 7 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
发送示例:5a a5 10 03 00 01 00 13
- MCU返回
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 0 | 1 |
描述 | 0x5aa5 | 0x20 | 0x03 | 0x0000 | 无 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
发送示例:5a a5 20 03 00 00 22
4.5 重置网络命令
当MCU发送重置网络命令后,模组收到该指令后,模组将会清空之前配网过的信息,并立刻进行复位重启。当模组重新启动后,模组将会与MCU完成初始化相关命令交互,然后进入配网模式。此时,用户便可勇爱星物联APP进行配网。
MCU发送重置网络命令时,需在模组完整初始化相关命令交互后进行发送,否则该命令发送无效。
当发送重置网络命令后,模组进入配网模式。该配网模式是为BLE和AP共存配网模式。
若模组的工作模式已设置为模组自处理模式,则MCU无效实现该协议。
模组自处理WiFi重置方法为:模组检测触发信号IO的电平为持续5秒的低电平,则进入配网模式。
- MCU发送
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 0 | 1 |
描述 | 0x5aa5 | 0x20 | 0x04 | 0x0000 | 无 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
发送示例:5a a5 20 04 00 00 23
- 模组返回
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 0 | 1 |
描述 | 0x5aa5 | 0x10 | 0x04 | 0x0000 | 无 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
发送示例:5a a5 10 04 00 00 13
4.6 选择配网模式命令
该命令与重置网络命令类似。但模组接收到该命令后,模组将根据该命令的选择而进入需要的配网方式。
MCU可根据自身需求而选择进入不同的配网方式。
若模组已设置为模组自处理模式时,则MCU无需实现该协议。
MCU发送重置网络命令时,需在模组完整初始化相关命令交互后进行发送,否则该命令发送无效。
MCU发送
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 1 | 1 |
描述 | 0x5aa5 | 0x20 | 0x05 | 0x0001 | 0x00:进入BLE配网模式 0x01:进入AP配网模式 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
发送示例:5a a5 20 05 00 01 00 25
- 模组返回
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 0 | 1 |
描述 | 0x5aa5 | 0x10 | 0x05 | 0x0000 | 无 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
发送示例:5a a5 10 05 00 00 14
4.7 控制命令
控制命令主要是根据物模型下发相对应的数据而进行控制设备状态。
控制命令为异步处理协议,当控制命令下发后,MCU会根据物模型对应数据而控制设备状态;若物模型对应数据改变后,MCU还需使用状态上报命令将对应的数据进行上报。
模组发送
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | N | 1 |
描述 | 0x5aa5 | 0x10 | 0x06 | 取决于数据域类型及数据域个数 | 数据域组 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
示例:物模型开关,对应数据ID为1,使用bool类型,设置开关状态为开(即数值为1)。``
发送示例:5a a5 10 06 00 05 01 01 00 01 01 1E
4.8 同步上报状态命令
此命令为同步处理协议。即MCU将数据上报后,需等待模组回复处理状态。
该命令,MCU每次上报状态时,模组应都会有回复。当模组未回复前,不可多次上报。
当网络环境差,模组无法将数据发送成功时,模组将会在5秒后返回失败。此时,MCU不可再次上报,需等待5秒以上后再进行上报。
MCU上报状态时,可根据物模型内的数据类型而进行上报数据状态。
状态上报命令,可同时上报多个物模型内的数据类型。
- MCU发送
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 1 | 1 |
描述 | 0x5aa5 | 0x20 | 0x22 | 取决于数据域类型及数据域个数 | 数据域组 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
示例:物模型开关,对应数据ID为1,使用bool类型,设置开关状态为开(即数值为1)。``
发送示例:5a a5 20 22 00 05 01 01 00 01 01 4A
- 模组返回
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 1 | 1 |
描述 | 0x5aa5 | 0x10 | 0x23 | 0x0001 | 0x00:表示上报失败 0x01:表示上报成功 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
发送示例:5a a5 10 23 00 01 01 34
4.9 异步上报状态命令
数据域内的数据内容,可参考物模型。
该命令为异步处理协议,该命令触发机制有以下三种类型:
- MCU收到控制命令,并正确执行了数据域内的命令后。再通过该命令,将对应变化的状态数据上报给模组。
- MCU主动检测到物模型中的数据变化后,将状态变化的数据上报给模组。
- MCU接收到状态查询命令后,将所有物模型内的数据上报给模组。
状态上报命令,可同时上报多个物模型内的数据类型。
- MCU发送
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 1 | 1 |
描述 | 0x5aa5 | 0x20 | 0x07 | 取决于数据域类型及数据域个数 | 数据域组 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
示例:物模型开关,对应数据ID为1,使用bool类型,设置开关状态为开(即数值为1)。``
发送示例:5a a5 20 07 00 05 01 01 00 01 01 2F
示例:物模型温度,对应数据ID为12,使用value类型,数值为26
物模型湿度,对应数据ID为13,使用value类型,数据为73
发送示例:5a a5 20 07 00 0F 0C 02 00 04 00 00 00 1A 0D 02 00 04 00 00 00 49 BD
4.10 状态查询命令
状态查询命令为异步处理协议,主要用于模组查询MCU上物模型里所有的数据状态。即当MCU收到此命令后,需通过该命令上报物模型上所有数据的状态。
状态查询命令主要在以下几种情况下使用。
- 模组首次上电后,通过心跳与MCU建立连接后,模组将通过该命令获取物模型数据的所有状态。
- 模组工作过程中检测到MCU重启或发送了断开连接情况再次连接的过程,模组将通过该命令获取物模型上所有数据状态。
- 当云端下发获取设备状态时,模组将通过该命令获取物模型上所有数据的状态。
模组发送
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 0 | 1 |
描述 | 0x5aa5 | 0x10 | 0x08 | 0x0000 | 无 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
发送示例:5a a5 10 08 00 00 17
4.11 获取本地时间命令
本地时间是在格林时间的基础上加上当地(设备激活所在地)时区和夏令时的时间。
该命令需在模组连接云端后,方可成功获得本地时间。若是模组处于离线状态(即模组未连接爱星物联),通过该命令获取时间,模组将会返回获取失败。
- MCU发送
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 0 | 1 |
描述 | 0x5aa5 | 0x20 | 0x1C | 0x0000 | 无 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
发送示例:5a a5 20 1C 00 00 3B
- 模组返回
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 8 | 1 |
描述 | 0x5aa5 | 0x10 | 0x1C | 0x0008 | Data[0]:获取时间成功标志,0表示失败,1表示成功 Data[1]:为年份,0x00表示2000年 Data[2]:为月份,从1至12结束 Data[3]:为日期,从1至31结束 Data[4]:为时钟,从0至23结束 Data[5]:为分钟,从0至59结束 Data[6]:为秒钟,从0至59结束 Data[7]:为星期,从1至7结束,1代表星期一 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
示例:当设备在国内使用时,则当地时间为北京时间(东8区)。
发送示例:5a a5 10 23 00 01 01 34
4.12 获取当前联网状态命令
- 设备联网状态如下表:
设备联网状态 | 描述 | 状态值 |
---|---|---|
状态 1 | 模组已进入BLE配网模式 | 0x00 |
状态 2 | 模组已进入AP配网模式 | 0x01 |
状态 3 | 模组已配网但未连上路由器 | 0x02 |
状态 4 | 模组已配网且连上路由器 | 0x03 |
状态 5 | 设备成功连接到云端 | 0x04 |
状态 6 | 模组处于低功耗模式 | 0x05 |
状态 7 | 模组已进入BLE和AP共存配网模式 | 0x06 |
通过该命令获取模组当前的联网状态,与报告联网状态命令报告的联网状态是一样的。
该命令主要是由MCU发起查询模组的网络状态。
MCU发送
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 0 | 1 |
描述 | 0x5aa5 | 0x20 | 0x2B | 0x0000 | 无 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
发送示例:5a a5 20 2B 00 00 4A
- 模组返回
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 1 | 1 |
描述 | 0x5aa5 | 0x10 | 0x2B | 0x0001 | 指示 Wi-Fi 工作状态: 0x00:状态 1 0x01:状态 2 0x02:状态 3 0x03:状态 4 0x04:状态 5 0x05:状态 6 0x06:状态 7 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
示例:当模组一连接上路由且已连接云端。
发送示例:5a a5 10 2B 00 01 04 3F
4.13 获取模组MAC命令
MCU通过发送此命令,可获得模组的MAC地址
MCU发送
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 0 | 1 |
描述 | 0x5aa5 | 0x20 | 0x2D | 0x0000 | 无 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
发送示例:5a a5 20 2D 00 00 4C
- 模组返回
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 1 | 1 |
描述 | 0x5aa5 | 0x10 | 0x2D | 0x0007 | Data[0]:表示获取MAC是否成功 0x00:表示获取MAC成功,后面6字节的MAC有效。 0x01:表示获取MAC失败,后面6字节的MAC无效。 Data[1]–Data[6]:表示MAC地址数据 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
示例:当模组的MAC地址为:123456abcdef
发送示例:5a a5 10 2D 00 07 00 12 34 56 ab cd ef 46
4.14 获取WiFi的信号强度
当MCU通过该命令即可获得模组当前连接路由的信号强度情况
当MCU需通过该命令获取WiFi的信号强度时,需等待模组连上路由后方可获取,不然模组将会返回获取失败。
- MCU发送
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 0 | 1 |
描述 | 0x5aa5 | 0x20 | 0x24 | 0x0000 | 无 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
发送示例:5a a5 20 24 00 00 43
- 模组返回
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 1 | 1 |
描述 | 0x5aa5 | 0x10 | 0x24 | 0x0001 | 0x00:表示获取失败 小于0:表示信号强度 如(-20db) | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
示例:当前路由的rssi为:-20
发送示例:5a a5 10 24 00 01 EC 20
4.15 WiFi功能性测试(连接指定路由)
当MCU发送WiFi功能性测试命令给模组时,模组将会拿到路由信息,并使用相关信息进行连接指定路由。
MCU判断模组是否已连接路由,可根据模组中报告联网状态命令的数据进行判断模组联网状态。若是MCU收到模组返回失败,或是长时间(超过15秒)没有收到连接路由的状态包,则任务测试失败。
当需要重复测试WiFi功能性时,若是模组正处于连接网络中。此时发送该命令,该命令将处于无效状态。若是需要重复测试WiFi功能性命令有效,可通过发送重置网络命令后,再重复发送WiFi功能性测试命令,方可有效。
在发送WiFi功能性测试命令前,需在MCU完成了心跳包建立连接,以及产品信息查询后,即完成模组的初始化后。该命令方可有效。
路由器名称字符串长度最大支持32字节,路由器密码字符串长度最大支持64字节。
MCU发送
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | N | 1 |
描述 | 0x5aa5 | 0x20 | 0x2C | N | {“ssid”:“xxx”, “password”:“xxxxxxxx”} ssid:路由名称 password:路由密码 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
示例:{"ssid":"xxx", "password":"12345678"}
发送示例:5a a5 20 2C 00 24 7b 22 73 73 69 64 22 3a 22 78 78 78 22 2c 22 70 61 73 73 77 6f 72 64 22 3a 22 31 32 33 34 35 36 37 38 22 7d 49
- 模组返回
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | 1 | 1 |
描述 | 0x5aa5 | 0x10 | 0x2C | 0x0001 | 0x00:路由信息接收失败。请检查发出的路由 JSON 包数据是否完整。 0x01:路由信息已接收成功。WiFi连接结果可根据报告联网状态命令进行网络状态判断。 | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
示例:模组已成功获取路由信息
发送示例:5a a5 10 2C 00 01 01 3D
4.16 MCU OTA请求
字段 | 帧头 | 版本 | 命令Id | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
字节数 | 2 | 1 | 1 | 2 | N | 1 |
描述 | 0x5aa5 | 0x10 | 0x0A | N | 数据内容包含产品固件类型、固件版本、固件key | 从帧头开始,至协议帧尾字节进行累加求和后,再进行对256求余 |
数据示例:
{
"otatype": "module_extand_all",
"ver": "1.0.0",
"key": "当前升级固件key",
"md5": "云端下发OTA数据对应生成的md5数据"
}
产品信息示例字段说明:
字段 | 说明 |
---|---|
otatype | 表示ota类型,module_mcu_all为mcu ota,module_extand_all为拓展固件ota |
ver | 表示软件ota版本号 |
key | 表示当前升级固件key |
md5 | 表示云端下发OTA数据对应生成的md5数据 |
5.可支持的AT指令
AT
AT | |
---|---|
描述 | 测试 AT 框架是否正常工作的指令 |
响应 | OK AT指令测试成功 |
ERR AT指令测试失败 | |
示例 | 发送:AT 响应:OK |
AT+KEY
AT+KEY=设备id,用户名,密码 | |
---|---|
描述 | 通过AT指令向模组flash写入三元组数据 |
响应 | OK 三元组数据写入成功 |
ERR 三元组写入失败 | |
示例 | 发送:AT+KEY=HeeaUopCefFlrg,5VAVPl,HsasNdFZzTP10w 响应:OK |
AT+RESTORE
AT+RESTORE | |
---|---|
描述 | 将模组恢复出厂设置,让模组复位重启并进入配网模式 |
响应 | OK AT指令处理成功 |
ERR AT指令处理失败 | |
示例 | 发送:AT+RESTORE 响应:OK |
AT+GDLT
AT+GDLT | |
---|---|
描述 | 获取模组启动的时间点。 即模组上电启动后,等待上线成功后,模组便会将此次上线的时间记录在flash上,该时间点便记录模组首次启动后的时间点(若是因网络等其他原因离线又重新上线,模组并不会更新该时间点)。若是模组重新上电启动后,重新上线后,将会更新该时间点;若是模组重新启动后,未上线时,该时间点并未更新。 |
响应 | OK AT指令处理成功 |
ERR AT指令处理失败 | |
示例 | 发送:AT+GDLT 响应: |
AT+RST
AT+RST | |
---|---|
描述 | 将模组进行复位重启 |
响应 | OK AT指令处理成功 |
ERR AT指令处理失败 | |
示例 | 发送:AT+RST 响应:OK |
AT+GMR
AT+GMR | |
---|---|
描述 | 获取模组固件信息 |
响应 | OK AT指令处理成功 |
ERR AT指令处理失败 | |
示例 | 发送:AT+GMR 响应: |
AT+UARTCFG
AT+UARTCFG=波特率 | |
---|---|
描述 | 设置模组uart0通信的波特率。通过该AT指令设置波特率后,需将模组复位后方可生效。 |
响应 | OK AT指令处理成功 |
ERR AT指令处理失败 | |
示例 | 发送:AT+UARTCFG=115200 响应:OK |
AT+CIPSTAMAC
AT+CIPSTAMAC? | |
---|---|
描述 | 获取模组的MAC地址 |
响应 | OK AT指令处理成功 |
ERR AT指令处理失败 | |
示例 | 发送:AT+CIPSTAMAC? 响应: |
AT+AILOG
AT+AILOG=0/1/2/3/4 | |
---|---|
描述 | 设置AiLink协议层日志输出的等级。当日志输出的等级设置越低,模组输出的日志越少,则模组运行效率将越高;当日志输出的等级设置越高,模组输出日志则越多,则模组运行效率将越低。 |
响应 | OK AT指令处理成功 |
ERR AT指令处理失败 | |
示例 | 发送:AT+AILOG=4 响应:OK |
AT+AILOG
AT+AILOG=0/1/2/3/4 | |
---|---|
描述 | 设置AiLink协议层日志输出的等级。当日志输出的等级设置越低,模组输出的日志越少,则模组运行效率将越高;当日志输出的等级设置越高,模组输出日志则越多,则模组运行效率将越低。 |
响应 | OK AT指令处理成功 |
ERR AT指令处理失败 | |
示例 | 发送:AT+AILOG=4 响应:OK |
AT+IOTLOG
AT+IOTLOG=0/1/2/3/4 | |
---|---|
描述 | 设置IOT应用层日志输出的等级。当日志输出的等级设置越低,模组输出的日志越少,则模组运行效率将越高;当日志输出的等级设置越高,模组输出日志则越多,则模组运行效率将越低。 |
响应 | OK AT指令处理成功 |
ERR AT指令处理失败 | |
示例 | 发送:AT+IOTLOG=4 响应:OK |
AT+MCULOG
AT+MCULOG=0/1/2/3/4 | |
---|---|
描述 | 设置模组处理MCU串口协议的日志输出的等级。当日志输出的等级设置越低,模组输出的日志越少,则模组运行效率将越高;当日志输出的等级设置越高,模组输出日志则越多,则模组运行效率将越低。 |
响应 | OK AT指令处理成功 |
ERR AT指令处理失败 | |
示例 | 发送:AT+MCULOG=4 响应:OK |
6.附录
模组初始化流程
当模组启动后,将会每秒发送心跳包,等待MCU回复心跳包,与MCU建立连接。
模组只有与MCU建立连接后,完成模组的初始化流程后。模组才可以响应MCU进行配网、数据交互以及拓展功能等。初始化流程包括如下:
建立心跳包连接
产品信息获取
配置模组工作方式
报告模组网络状态(工作模式为模组与MCU配合处理模式)
状态查询
模组启动后的初始化流程图:
串口协议文档下载在这里