涂鸦云通用串口协议解析
1. 简介
协议主要分为两部分:基础协议、功能协议。基础协议和产品无关,是模组共有协议,包括模组初始化指令及部分扩展功能指令。功能协议是平台根据每个产品DP点定义不同,自动生成的功能点数据收发指令。
2. 协议框架
MCU和WiFi模组通过串口交互,通用固件:波特率9600/数据位8位/无奇偶校验/停止位1位/无数据流控。数据帧格式如下:
字段 |
长度(byte) |
说明 |
帧头 |
2 |
固定为0x55aa |
版本 |
1 |
升级扩展用 |
命令字 |
1 |
具体帧类型 |
数据长度 |
2 |
大端 |
数据 |
xxxx |
|
校验和 |
1 |
从帧头开始按字节求和得出的结果对256求余 |
命令字索引表如下:
命令字 |
说明 |
0x00 |
心跳检测 |
0x01 |
查询产品信息 |
0x02 |
查询设定模式工作模式 |
0x03 |
报告设备联网状态 |
0x04 |
重置WIFI-切换配网模式 |
0x05 |
重置WIFI-切换配网模式 |
0x06 |
DP命令下发 |
0x07 |
DP状态上报 |
0x08 |
状态查询 |
0x0a |
OTA升级启动(可选) |
0x0b |
OTA升级包传输(可选) |
0x1c |
获取本地时间(可选) |
0x0e |
WIFI功能性测试 |
2.1 基础协议
基础协议每个产品都一样,是模组工作所必须的协议。主要包含:心跳检测、产品信息查询、模组工作方式、WiFi工作状态等功能。
其中,命令字0x00-0x08为模组基本指令。命令字0x0a-0x0e为模组基础功能,包括MCU OTA、获取本地时间、产测功能等。要使模组正常工作,我们要实现的协议主要分为两个部分:模组初始化、配网。
模组初始化协议主要涉及命令字,主要流程如下:

模组上电会不断发送心跳包,等到MCU端回复心跳,会启动如上的初始化流程。
1) 心跳检测
心跳包回复要注意,MCU上电第一次回复数据为0x00,之后的数据回复为0x01。这样第一次回复0x00,模组会自动进行初始化数据同步。之后的心跳包用来判定设备是否离线和断网自动重连。

例:
模组发送:55 aa 00 00 00 00 ff
MCU回复:55 aa 03 00 00 01 00 03 (第一次)/55 aa 03 00 00 01 01 04(其他)
2) 查询产品信息
收到心跳包回复后,模组会发送查询产品指令信息。MCU上报PID、版本、模式等信息。这里要注意{}:””这些字符也是要写的,具体格式参考后图。

例:
模组发送:55 aa 00 01 00 00 00
MCU回复:下图以PID:RN2FVAgXG6WfAktU为例,用户根据自己产品PID转换成ASCII码替换到相应位置即可。

3) 设定模组工作方式
收到产品信息后,模组会发送查询MCU设定模组工作方式0x02命令字。
模块工作模式主要针对如何指示WIFI 的工作状态以及如何重置WIFI,主要分两种情况:
a. MCU 与模块配合处理模式。即模块通过串口通知MCU WIFI 当前的工作状态,由MCU
控制配网指示灯显示。

b. 模块自处理模式。WIFI 模块的配网状态通过WIFI的GPIO引脚驱动LED状态显示;
WIFI 重置通过检测GPIO 输入需求处理。
模块自处理WIFI 重置方法为:WIFI 检测GPIO 入口低电平持续5s 以上触发WIFI 重置。指示灯与按钮所使用的GPIO 管脚由以下命令配置。
MCU端若选择MCU与模组配合处理模式的上报数据为0,若选择模块自处理模式上报数据为接指示灯IO口和按键IO口。如果产品采用模块自处理方式,则以下4-6协议无须关心。

例:
模组发送:55 aa 00 02 00 00 01
MCU回复:
55 aa 03 02 00 00 04(MCU与模组配合处理模式)/
55 aa 03 02 00 02 05 00 0b(模组自处理模式,指示灯接IO5,按键接IO0)
4) 报告wifi状态:模块自处理方式无须关心
模组主动发送,当模块检测到 MCU 重启或模块的 WIFI 状态发生变化,会主动发送状态到MCU。MCU可以根据03命令字中的wifi状态控制指示灯的闪烁。03版本协议中,共有6中状态:
设备联网状态 |
描述 |
状态值 |
LED显示 |
状态1 |
smart配置状态 |
0x00 |
快闪250ms |
状态2 |
AP配置状态 |
0x01 |
慢闪1500ms |
状态3 |
WIFI已配置但未连上路由器 |
0x02 |
熄灭 |
状态4 |
WIFI已配置且连上路由器 |
0x03 |
常亮 |
状态5 |
已连上路由器且连接到云端 |
0x04 |
常亮 |
状态6 |
WIFI设备处于低功耗模式 |
0x05 |
熄灭 |

例:
模组发送:55 aa 00 03 00 01 01 校验和(01:AP配置模式)
MCU回复:55 aa 03 03 00 00 05
5) 重置wifi:模块自处理方式无须关心
配网指令,可以通过重置WiFi使设备处于待配网状态。配网模式分两种:
a. smart模式(快闪模式),配网方式简单快捷
b. AP模式(慢闪模式),配网稳定可靠
建议两种模式都要做,触发机制可以自定义,以指示灯快闪、慢闪给用户做区分。
0x04命令字,MCU每发送一次,模组切换一次配网模式。第一次默认smart模式,之后在smart与AP之间来回切换。

例:
MCU发送:55 aa 03 04 00 00 06
模组回复:55 aa 00 04 00 00 03
6) 重置wifi-选择模式:模块自处理方式无须关心
重置wifi并选择配网模式,根据MCU发送的参数不同,可指定进入smart或AP模式。此指令与0x04命令字作用相同,均可配网,但可指定进入某种配网模式

例:
MCU发送:55 aa 03 05 00 01 00 08 (smart模式)/55 aa 03 05 00 01 01 09 (AP模式)
模组回复:55 aa 00 05 00 00 04
7)MCU工作状态产查询
08命令字,用于模块查询MCU 所有datapoint状态,作为APP显示初值。MCU收到后,分条上报所有DP点数据。“状态查询”发送情况主要有两种:
a. 模块首次上电,通过心跳与MCU 建立连接后,查询发送;
b. 模块检测到MCU 重启或发生了离线再上线的过程,查询发送。

例:
模组发送:55 aa 00 08 00 00 07
MCU回复:
55 aa 03 07 N **** 校验和(DP1)
55 aa 03 07 N **** 校验和(DP2)
… (DPN)
8) 产测指令
主要用于产品量产时的WiFi模组射频性能测试。产测指令,建议等待上电初始化完成,5S以后调用。模组收产测指令到后,会自动扫描名称为tuya_mdev_test WiFi信号,返回扫描结果和信号强度百分比(0-100步进20)。

例:
MCU发送:55 aa 03 0e 00 00 校验和
模组回复:55 aa 00 0e 00 02 01 28 38 (产测成功,信号强度40)
2.2 功能协议
DP点数据下发和上报指令。模组下发数据命令字0x06,MCU上报数据命令字0x07。
MCU在收到数据下发指令后,根据收到的功能指令数据不同,进行相应的逻辑控制。并在DP状态改变时及时上报,更改APP显示状态。DP点数据上报,MCU遵循一个宗旨:状态改变就上报。(若同一DP点数据与上次上报相同,模组端会进行数据过滤)
例:
注意:
a.value型数据,有4个字节,使用不满4字节的,前边补0即可。
例:上图目标温度数据
MCU发送:55 aa 03 07 00 08 02 02 00 04 00 00 00 1e 校验和(目标温度30度)
b.故障型数据,支持多故障同时上报。每一个bit位可代表一个警告,置1表示故障发生,置0表示无故障。
例:上图故障警告
MCU发送:55 aa 03 07 00 06 0d 05 00 02 00 09 校验和(故障bit0 和故障bit3发生故障)
c.字符型数据,字符串的含义与显示需与面板配套,自定义的可与面板沟通。
d.Raw类型数据,透传型数据,通常用于比较复杂的功能实现。不建议用户自行使用。