设备主控MCU 通过串口和通讯模组(WIFI、4G、mesh)进行通讯
串口的通讯参数如下:
波特率:9600
数据位:8
奇偶校验:无
停止位:1
数据流控:无
WIFI模组供电电压:3.3V,电流(MAX):150mA
长度:由两个字节(2B)组成,采用大端编码方式,即高字节在前,低字节在后。
指令格式:指令由以下部分按顺序构成。
包头 |
2B 固定: 0xFFFF 如数据内容包含0xFFFF,则统一以0xFF55FF55替代,接收方注意当作0xFFFF处理 |
包长度 |
2B 从命令开始一直到校验和的字节长度(包括命令和校验和) |
命令 |
1B |
包序号 |
1B 由命令发起方给出,从1开始递增,超过255后从1重新开始。命令确认消息中包序号标识被确认的消息的序号。 |
消息体 |
依据实际情况
|
校验和 |
1B 对数据包中的包长度开始到有效负载的直接求和取余数,即sum(…)%256 |
注:所有指令接收方需确认,如发送方300ms内没有收到确认,发送方需重发该指令,每条指令最多重发3次。
通讯模块上电后,将向MCU查询设备信息。
通讯模块 >>> MCU
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 |
数据包大小 |
3 |
命令 |
1 |
0x01 |
4 |
包序号 |
1 |
|
5 |
校验和 |
1 |
|
MCU回复: MCU >>> 通讯模块
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 |
数据包大小 |
3 |
命令 |
1 |
0x02 |
4 |
包序号 |
1 |
对应查询包的包序号 |
5 |
串口协议版本号 |
2 |
|
6 |
业务协议版本号 |
2 |
|
7 |
应用标识 |
20 | 对应应用标识[ASCII 20字节16进制数据] |
8 |
产品标识码 |
16 |
对应产品标识[16字节16进制数据] |
9 |
校验和 |
1 |
|
通讯模块上电后,设备通过串口发送设备的基本信息。
MCU >>> 通讯模块
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 |
数据包大小 |
3 |
命令 |
1 |
0x02 |
4 |
包序号 |
1 |
对应查询包的包序号 |
5 |
串口协议版本号 |
2 |
|
6 |
业务协议版本号 |
2 |
|
7 |
应用标识 |
20 | 对应应用标识[ASCII 20字节16进制数据] |
8 |
产品标识码 |
16 |
对应产品标识[16字节16进制数据] |
9 | 设备类型 | 1 | 0X01 |
10 |
校验和 |
1 |
业务指令一般为控制指令,如开关设备、设置模式、设置温度、请求状态等
通讯模组 >>> MCU
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 |
数据包大小 |
3 |
命令 |
1 |
0x03 |
4 |
包序号 |
1 |
|
5 |
业务指令 |
Max 65530 |
参照对接设备的业务协议文档
|
6 |
校验和 |
1 |
|
MCU回复: MCU >>> 通讯模组
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 |
数据包大小 |
3 |
命令 |
1 |
0x04 |
4 |
包序号 |
1 |
对应发送包的包序号 |
5 |
业务指令 |
Max 65530 |
参照对接设备的业务协议文档 |
6 |
校验和 |
1 |
|
应用场景一般为故障上报、开关状态/模式等通过其他方式如红外遥控、产品集成的功能按键改变之后,主动上报给通讯模组。
MCU >>> 通讯模组
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 |
数据包大小 |
3 |
命令 |
1 |
0x05 |
4 |
包序号 |
1 |
|
5 |
业务指令 |
Max 65530 |
参照对接设备的业务协议文档 |
6 |
校验和 |
1 |
|
通讯模组回复: 通讯模组 >>> MCU
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 |
数据包大小 |
3 |
命令 |
1 |
0x06 |
4 |
包序号 |
1 |
对应发送包的包序号 |
5 |
业务指令 |
Max 65530 |
参照对接设备的业务协议文档 |
6 |
校验和 |
1 |
|
当通讯模组超过60秒没有收到MCU的数据包,将向MCU发送心跳包。MCU收到心跳包后应立即回复。当通讯模组连续3次没有收到MCU的心跳回复,则重启自身。如MCU 在180秒内没有收到通讯模组的心跳请求,则应通过硬件引脚重启通讯模组。
通讯模组向MCU发送心跳:通讯模组 >>> MCU
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 |
数据包大小 |
3 |
命令 |
1 |
0x07 |
4 |
包序号 |
1 |
|
5 |
校验和 |
1 |
|
MCU回复: MCU >>> 通讯模组
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 |
数据包大小 |
3 |
命令 |
1 |
0x08 |
4 |
包序号 |
1 |
对应发送包的包序号 |
5 |
校验和 |
1 |
|
当WIFI模组收到进入配网模式指令后,需判断当前是否已成功连接上无线路由器,如已连接,则让设备处于可绑定模式,否则,让设备进入对应的SoftAP或AirLink等配网模式。
MCU >>> WIFI模组
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 |
数据包大小 |
3 |
命令 |
1 |
0x09 |
4 |
包序号 |
1 |
|
5 |
校验和 |
1 |
|
WIFI模组回复: WIFI >>> MCU
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 |
数据包大小 |
3 |
命令 |
1 |
0x0A |
4 |
包序号 |
1 |
对应发送包的包序号 |
5 |
校验和 |
1 |
|
重置的内容包括WIFI 模组已保存的局域网WIFI SSID和密码,DID,Passcode等信息。
MCU >>> WIFI模组
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 数据包大小 |
|
3 |
命令 |
1 |
0x0B |
4 |
包序号 |
1 |
|
5 |
校验和 |
1 |
|
WIFI模组回复: WIFI >>> MCU
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 |
数据包大小 |
3 |
命令 |
1 |
0x0C |
4 |
包序号 |
1 |
对应发送包的包序号 |
5 |
校验和 |
1 |
|
通讯模组可以请求重启MCU,当做MCU OTA升级时可能使用该指令。
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 |
数据包大小 |
3 |
命令 |
1 |
0x0D |
4 |
包序号 |
1 |
|
5 |
校验和 |
1 |
|
MCU向通讯模组确认重启: MCU >>> 通讯模组
为避免通讯模组没有收到确认而重发指令造成MCU多次重启,则MCU回复通讯模组后需等待600ms再进行重启操作。
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 |
数据包大小 |
3 |
命令 |
1 |
0x0E |
4 |
包序号 |
1 |
对应发送包的包序号 |
5 |
校验和 |
1 |
|
通讯模组通知MCU网络连接成功
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 |
数据包大小 |
3 |
命令 |
1 |
0x11 |
4 |
包序号 |
1 |
|
5 |
校验和 |
1 |
MCU向通讯模组确认收到: MCU >>> 通讯模组
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 |
数据包大小 |
3 |
命令 |
1 |
0x12 |
4 |
包序号 |
1 |
对应发送包的包序号 |
5 |
校验和 |
1 |
通讯模块回复MCU非法数据包 通讯模块 >>> MCU
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 |
数据包大小 |
3 |
命令 |
1 |
0x0F |
4 |
包序号 |
1 |
非法包序号 |
5 |
错误码 |
1 |
1 : 校验和错误 2 :命令不识别 3 :其他 |
6 |
校验和 |
1 |
|
MCU回复通讯模块非法数据包 MCU >>> 通讯模块
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 |
数据包大小 |
3 |
命令 |
1 |
0x10 |
4 |
包序号 |
1 |
非法包序号 |
5 |
错误码 |
1 |
1 : 校验和错误 2 :命令不识别 3 :其他 |
6 |
校验和 |
1 |
|
客户端发送查询指令 APP >>> 通讯模块
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 |
0x0003 |
3 |
命令 |
1 |
0xFA |
4 |
包序号 |
1 |
包序号 |
5 |
校验和 |
1 |
通讯模块回复 通讯模块 >>> APP
序号 |
字段 |
长度(B) |
说明 |
1 |
包头 |
2 |
固定:0xFFFF |
2 |
长度 |
2 |
0x000C |
3 |
命令 |
1 |
0xFB |
4 |
包序号 |
1 |
包序号 |
5 |
设备类型 |
1 |
|
6 |
MAC地址 |
8 |
|
6 |
校验和 |
1 |
创建人 | admin |
工作小组 | MIOC物联网开放平台 |
文档编辑权限 | 工作小组 |
文档阅读权限 | 来自分类 |
分类阅读权限 | 所有人 |
分类编辑权限 | 所有人 |
分类审核权限 | 无 |
修改日期 | 修改人 | 备注 |
2020-07-16 15:56:44[当前版本] | 梁良 | 增加 |
2020-07-16 15:55:01 | 梁良 | 增加 |
2020-07-16 10:11:09 | admin | 增加设备发现协议 |
2020-04-24 17:10:34 | 梁良 | 修改mesh上报信息标题 |