更新时间:2023-04-07 01:31:52下载pdf
本文介绍 Wi-Fi 通用方案中的协议格式、基础协议中的指令和功能协议中的常用指令。
本文档已停止更新,文中内容仅供您参考。如需查看相关内容,请访问 串口协议。
本文为您介绍模组初始化过程中必须的指令及部分常用的扩展功能指令。其他部分的指令介绍参见串口通信协议。
说明:视频教程参见:Wi-Fi MCU 对接指南之协议解析
MCU 和 Wi-Fi 模组通过串口交互。交互中的通信约定、数据帧格式和命令字索引表信息如下。
参数 | 说明 |
---|---|
波特率 | 取决于固件配置,支持波特率 9600 或 115200。 |
数据位 | 8 位 |
奇偶校验 | 无 |
停止位 | 1 位 |
数据流控 | 无 |
字段 | 长度(字节) | 说明 |
---|---|---|
帧头 | 2 | 固定为 0x55aa |
版本 | 1 | 协议的版本号 |
命令字 | 1 | 帧类型 |
数据长度 | 2 | 大端模式 |
数据 | 1~2 | 自定义数据 |
校验和 | 1 | 从帧头开始对字节进行求和,将得出的结果对 256 求余。 |
命令字 | 说明 |
---|---|
0x00 | 检测心跳 |
0x01 | 查询产品信息 |
0x02 | 查询模组工作模式 |
0x03 | 报告设备联网状态 |
0x04 | 重置 Wi-Fi |
0x05 | 重置 Wi-Fi 并切换配网模式 |
0x06 | 下发 DP 命令 |
0x07 | 上报 DP 状态 |
0x08 | 查询状态 |
0x0a | 启动 OTA 升级(可选) |
0x0b | 传输 OTA 升级包(可选) |
0x1c | 获取本地时间(可选) |
0x0e | 测试 Wi-Fi 功能 |
基础协议是模组工作所必须的协议。
0x00
~0x08
,包括检测心跳、查询产品信息和查询模组工作模式等。0x0a
~0x0e
,包括 MCU OTA、获取本地时间和测试 Wi-Fi 功能等。模组上电会不断发送心跳包, MCU 端回复心跳后,启动下图中的初始化流程。
波特率自适应
模组最新固件中添加了波特率检测自适应的功能,可自适应判断 9600/115200 波特率。因此,在初次初始化过程前,模组会经过波特率检测,收到部分乱码或初次启动时间延迟属于正常现象。
相关流程如下:
模组读取 Flash 保存的波特率纪录数据。
根据能否读取数据进入相关流程:
心跳检测
MCU 上电后发送心跳包,返回0x00
或0x01
命令字。
0x00
:上电后第一次的心跳包回复为 0x00
,模组会自动进行初始化数据同步。0x01
: 第二次及以后的心跳包回复为 0x01
,判定设备是否离线或断网。类型 | 帧头 | 版本 | 命令字 | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
模块发送 | 0x55aa | 0x00 | 0x00 | 0x0000 | 无 | 0xff |
MCU 返回 | 0x55aa | 0x03 | 0x00 | 0x0001 |
|
{校验和} |
示例:
55 aa 00 00 00 00 ff
55 aa 03 00 00 01 00 03
55 aa 03 00 00 01 01 04
查询产品信息
收到心跳包回复后,模组会发送查询产品指令信息。MCU 返回 PID、版本、模式等信息。
说明:
{}:””
等字符同样需要输入。
类型 | 帧头 | 版本 | 命令字 | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
模块发送 | 0x55aa | 0x00 | 0x01 | 0x0000 | 无 | 0x00 |
MCU 返回 | 0x55aa | 0x03 | 0x01 | 无数据长度限制。示例:0x002a | 示例:{“p”:”RN2FVAgXG6W****”,“v”:”1.0.0”,”m”} 。支持以下模式:
|
{校验和} |
示例:
55 aa 00 01 00 00 00
55 aa 03 01 00 2a 7b 22 70 22 3a 22 52 4e 32 46 56 41 67 58 47 36 57 66 41 6b 74 55 22 2c 22 76 22 3a 22 31 2e 30 2e 30 22 2c 22 6d 22 3a 30 7d 0c
说明: 将
{“p”:”RN2FVAgXG6W****”,“v”:”1.0.0”,”m”}
中的每一个字符(包括标点符号)转换成 ASCII 码,替换到数据的位置。
设定模组工作方式
收到产品信息后,模组会发送查询 MCU 设定模组工作方式的 0x02
命令字。模块工作模式主要针对如何指示 Wi-Fi 的工作状态以及如何重置 Wi-Fi ,主要分两种情况:
MCU 与模块配合处理模式
模块自处理模式
注意:模块自处理方式不需要进行初始化流程中的报告设备联网状态、重置 Wi-Fi 和重置 Wi-Fi 并切换配网模式这三个步骤。
类型 | 帧头 | 版本 | 命令字 | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
模块发送 | 0x55aa | 0x00 | 0x02 | 0x0000 | 无 | 0x01 |
MCU 返回(MCU 和模块配合处理) | 0x55aa | 0x03 | 0x02 | 0x0000 | 无 | {校验和} |
MCU 返回(模块自处理) | 0x55aa | 0x03 | 0x02 | 0x0002 |
|
{校验和} |
示例:
55 aa 00 02 00 00 01
55 aa 03 02 00 00 04
。55 aa 03 02 00 02 05 00 0b
,其中指示灯接 IO5,按键接 IO0。报告 Wi-Fi 状态
说明:仅 MCU 与模块配合处理模式支持该功能。
当模块检测到 MCU 重启或模块的 Wi-Fi 状态发生变化,会主动发送状态到 MCU。MCU 可以根据 03 命令字中的 Wi-Fi 状态控制指示灯的闪烁。03 版本协议中,Wi-Fi 共有 6 种状态。
设备联网状态 | 描述 | 状态值 | LED 显示 |
---|---|---|---|
状态 1 | Smartconfig 配置状态 | 0x00 | 快闪,间隔 250ms |
状态 2 | AP 配置状态 | 0x01 | 慢闪,间隔 1500ms |
状态 3 | Wi-Fi 已配置但未连接路由器 | 0x02 | 熄灭 |
状态 4 | Wi-Fi 已配置且已连接路由器 | 0x03 | 常亮 |
状态 5 | 已连接路由器和云端 | 0x04 | 常亮 |
状态 6 | Wi-Fi 设备处于低功耗模式 | 0x05 | 熄灭 |
状态 7 | Wi-Fi 设备处于 Smartconfig 和 AP 配置状态 | 0x06 | 快闪,间隔 250ms |
类型 | 帧头 | 版本 | 命令字 | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
模块发送 | 0x55aa | 0x00 | 0x03 | 0x0001 | 支持以下状态值:
|
{校验和} |
MCU 返回 | 0x55aa | 0x03 | 0x03 | 0x0000 | 无 | 0x05 |
示例: |
55 aa 00 03 00 01 01 {校验和}
55 aa 03 03 00 00 05
重置 Wi-Fi
说明:仅 MCU 与模块配合处理模式支持该功能。
配网指令,可以通过重置 Wi-Fi 使设备处于待配网状态。配网模式分两种:
说明:建议两种模式同时开发,应对不同的需求。配网模式的触发机制可以自定义,通过指示灯快闪和慢闪进行区分。
MCU 每发送一次 0x04 命令字,模组切换一次配网模式。第一次默认配置为 Smartconfig 模式,之后在 Smartconfig 与 AP 之间来回切换。
类型 | 帧头 | 版本 | 命令字 | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
MCU 发送 | 0x55aa | 0x00 | 0x04 | 0x0000 | 无 | 0x03 |
模块返回 | 0x55aa | 0x03 | 0x04 | 0x0000 | 无 | 0x06 |
示例:
55 aa 03 04 00 00 06
55 aa 00 04 00 00 03
重置 Wi-Fi 并选择模式
说明:仅 MCU 与模块配合处理模式支持该功能。
重置 Wi-Fi 并选择配网模式,根据 MCU 发送的参数不同,可指定进入 Smart 或 AP 模式。此指令与 0x04 命令字作用相同,均可配网,但可指定进入某种配网模式。
类型 | 帧头 | 版本 | 命令字 | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
MCU 发送(Smartconfig 模式) | 0x55aa | 0x03 | 0x05 | 0x0001 | 0x00 | {校验和} |
MCU 发送(AP 模式) | 0x55aa | 0x03 | 0x05 | 0x0001 | 0x01 | {校验和} |
模块返回 | 0x55aa | 0x00 | 0x05 | 0x0000 | 无 | 0x04 |
示例:
55 aa 03 05 00 01 00 08
55 aa 03 05 00 01 01 09
55 aa 00 05 00 00 04
查询 MCU 工作状态
08 命令字的作用是通过模块获取 MCU 所有 Datapoint 状态,并设置为 App 显示初值。MCU 收到08 命令字后,分条上报所有 DP 点数据。状态查询的发送情况主要有两种:
类型 | 帧头 | 版本 | 命令字 | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
模块发送 | 0x55aa | 0x00 | 0x08 | 0x0000 | 无 | {校验和} |
MCU 返回 | 0x55aa | 0x03 | 0x07 | 无限制 | 上报所有 DP 点数据,作为显示的初始值 | {校验和} |
示例:
55 aa 00 08 00 00 07
55 aa 03 07 N \***\* {校验和}
(DP1)55 aa 03 07 N \*\*** {校验和}
(DP2)产测指令
主要用于产品量产时的 Wi-Fi 模组射频性能测试。建议等待上电初始化完成,5 秒以后调用产测指令。模组接收产测指令后,会自动扫描名称为 tuya_mdev_test
的 Wi-Fi 信号,返回扫描结果和信号强度百分比(范围为 0-100, 步进为 20)。
类型 | 帧头 | 版本 | 命令字 | 数据长度 | 数据 | 校验和 |
---|---|---|---|---|---|---|
MCU 发送 | 0x55aa | 0x03 | 0x0e | 0x0000 | 无 | {校验和} |
模块返回 | 0x55aa | 0x00 | 0x0e | 0x0002 |
|
{校验和} |
示例:
55 aa 03 0e 00 00 {校验和}
55 aa 00 0e 00 02 01 28 38
(产测成功,信号强度 40)模组下发数据命令字为 0x06,MCU 上报数据命令字为 0x07。
MCU 在收到数据下发指令后,根据收到的功能指令数据不同,进行相应的逻辑控制,并在 DP 状态改变时及时上报,更改 App 显示状态。(如果相同 DP 点的数据与上次上报数据相同,模组端会进行数据过滤。)
PD ID | 功能名称 | 数据传输类型 | 数据类型 | 备注 |
---|---|---|---|---|
3 | 当前温度 | 只上报 | value | 数值范围:-20-50,间距:1,单位:℃ |
4 | 工作模式 | 可下发可上报 | enum | 枚举范围:smart,auto |
21 | 故障告警 | 只上报 | bitmap | 标签: motor_fault |
23 | 模式周程序 | 可下发可上报 | raw | 最大长度 128 |
Value 型数据:4 字节,使用不满 4 字节的,前边补 0 即可。
说明:例如当前温度,MCU 发送:
55 aa 03 07 00 08 02 02 00 04 00 00 00 1e {校验和}
(目标温度 30 度)。
Bitmap 型数据:支持多故障同时上报。每一个 bit 位可代表一个警告,置 1 表示发生故障,置 0 表示无故障。可以为 1、2 或 4 字节,大于1 字节时为大端模式。
说明:例如故障警告,MCU 发送:
55 aa 03 07 00 06 0d 05 00 02 00 09 {校验和}
(故障 bit0 和故障 bit3 发生故障)。
String 型数据:字符串的含义与显示需与面板配套,自定义的可与面板沟通。
Raw 类型数据:透传型数据,通常用于比较复杂的功能实现。不建议用户自行使用。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈