涂鸦云通用串口协议解析

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类型数据,透传型数据,通常用于比较复杂的功能实现。不建议用户自行使用。

协议解析