Php 和mcu 通讯,和物设备 MCU-无线串口通信协议详解

一、概述

本通信协议主要应用于MCU 和无线模组形式的物联终端设备中,其应用场景如下图所示:MCU作为系统主控,主要负责通过外部接口对外设(LED、开关灯)进行控制,完成设备业务逻辑,并利用通信协议对无线模组进行控制;无线模组主要用于实现设备联网,云平台接入及云端消息交互等功能。

55e1b14f5eb6a58e3ad897af9bd4b13d.png

二、设备SDK文件说明

dea33078150d3a012f2fad253b77c1a2.png

三、命令结构定义及约定

MCU和无线模组以数据帧为基本通信单位,遵循请求(Request)、响应(Response)一对一的消息确认模式。数据帧结构定义如下所示:

eddb6ce6f064ab963bdd96be73020869.png

字段含义如下表:

bb93763ccf538c4bda53600c1832ee28.png

本文档命令约定如下:

■如无特殊说明,数据帧中所有多于一个字节的整型数字均以小端形式排列

■请求和对应的响应共用命令号

■任何一条命令的数据帧长度不允许超过1000字节

■协议字段描述中“mB”表示占位m字节(Byte),“nb”表示占位n位(Bit)

■协议字段内容中“0x####”、“0x##”等形式表示十六进制数据,值不固定,需要根据实际情况计算得出

四、错误码定义

对于命令响应中可能回复的错误码,统一定义如下:

a070007938529f05af581b7692c2753c.png

五、通信接口参数

MCU和无线模组通过串口(UART)进行通信,串口参数如下:

■波特率:9600

■数据位:8

■停止位:1

■奇偶校验:无

■数据流控:无

六、命令列表

1.获取无线模组信息

➢命令请求方向:MCU 无线模组。

➢命令请求

f3f521c2aba350c218f0d55a357e4a32.png

➢命令响应

564d6a406df3a0c3a14a99c63e18d29f.png

➢模组信息包括模组芯片唯一ID、模组软件版本号,均为字符串型数据。参数排列如下表:

c2354c309f25db03d8e038078ac19d66.png

2.无线模组参数配置

➢命令请求方向:MCU 无线模组。

➢命令请求

280ad24d7f16234910ae44a8ab3a94f1.png

➢初始化列表包括产品ID、产品序列码、MCU固件版本号,参数排列如下表:

247575bf3f1d80e357d54ebfbc72ae5c.png

其中产品ID、产品序列码用于正式环境的设备注册和连接,MCU固件版本号用于设备主芯片程序升级。参数均为字符串数据,其中产品序列码长度4 ~ 32字符,有效字符包括字母、数字、_(下划线)、-(中横线)。

➢命令响应

0646843216d8e9eb35c8f30cfbf9d1f2.png

其中,初始化响应参考错误码定义四。

3.无线模组复位

➢命令请求方向:MCU 无线模组。

➢命令请求

9ea5ac42265db704ee97f6b1b2f64903.png

➢命令响应

➢其中,响应参考错误码定义四。

无线模组复位后将清除所有配置(主要为配网信息和设备绑定信息),MCU端需要对无线模组进行重新配网,模组需要重新注册和绑定。

4.心跳保活

➢命令请求方向:MCU 无线模组。

➢命令请求(心跳发送间隔不超过3分钟)

4e57141cbc7a28490217e93563ba4d5a.png

➢命令响应

6fe942c91bcafa7926c16596a45ac2ab.jpeg

5.设置智能配网

➢命令请求方向:MCUà无线模组。

➢命令请求

6fe942c91bcafa7926c16596a45ac2ab.jpeg

➢配网参数包含1字节配网模式和若干字节的参数,其中参数内容由配网模式决定。

配网模式目前可选值为:

0:和物智能配网;无参数,已实现;

1:Soft-AP,无参数,保留功能,暂未实现;

2:airkiss,保留功能,暂未实现;

3:SSID+Password,参数依次为需要连接的指定AP的ssid和password,数据类型均为字符串型,如下图所示:(保留功能,暂未实现)

c16d7e3f51e35d4a5d22c730a51a32d9.png

➢命令响应

2789d0ae0df1db9faa97aba60691e163.png

➢其中,配网响应参考错误码定义四。

配网响应只对命令请求内容进行响应,并不返回配网结果,配网结果将由无线模组主动上报,参见0。

6.获取无线模组状态

➢命令请求方向:MCU 无线模组。

➢命令请求

baa7ac707e4c68c9be727b58a43bdf03.png

➢命令响应

3b426be11c87ea058d32bb9353f9b1f5.png

➢ 模组状态字段定义如下:

9026d176a97c343381689aad5490d5fe.png

9.获取网络时间

➢命令请求方向:MCU 无线模组。

➢命令请求

78be90da28d84770eb3bd40912385b55.png

➢命令响应

ea09d8f2a0c296d56860fbf062368d3c.png

➢ 当前时间为0,为无效时间。

10.无线模组状态变更通知

➢命令请求方向:无线模组 MCU。

➢命令请求

18fd92391b446ef90711e6221d9eba8b.png

➢ 模组状态字段定义参考。

➢命令响应

11.进入测试模式

➢命令请求方向:MCUà无线模组。

➢命令请求

ddfed9326d0c0323f452824d1d25948a.png

➢命令响应

8c8b057b779e4fbd1ba5ed77555c1b06.png

➢产测响应只对命令请求内容进行响应,并不返回产测结果,产测结果将通过获取模组状态指令查询产测状态及WIFI模块的当前信号量。

12.固件推送(暂未实现)

➢命令请求方向:无线模组 MCU。

➢命令请求

79f65e1eb9d99a0a60bf65c45ce09679.png

➢ 由于固件大小可能超过数据帧的最大范围,固件内容将采用分片发送的方式,结构如下所示:

abc670f27a141c071b94d601ef30de3f.png

➢命令响应

34cf37dd0c2c065734c0123e529db8ae.png

➢ 其中,固件推送响应参考错误码定义四。

13.固件推送请求(暂未实现)

➢命令请求方向:无线模组 MCU。

➢命令请求

c526e7a102ab16860e9a7f87e6c17972.png

➢命令响应

cf372f7cd7de4f7bbd71e49b576360af.png

➢模组对MCU推送固件时,以分包大小值来进行分包。

14.功能点数据上传

➢命令请求方向:MCU 无线模组。

➢命令请求

a9ca4653ad634d60c0dce1bdfd43cd43.png

➢上传数据格式如下表所示:

57b4f30bccc41aa87120a6386b360060.png

其中,消息类型由4个字节构成,前两个字节表示消息级别(固定为0x0003),后两个字节表示功能点顺序值(参见导出SDK device.c中的dev_upload_list)。

消息体为需要上传的数据的TLV格式。

和物TLV格式请参考“7.TLV格式说明”的内容。

➢命令响应

ecd6dd4384b9fd6f54c76633beffb192.png

15.功能点命令下发

➢命令请求方向:无线模组 MCU。

➢命令请求

d23b5428d1d71242c19be5cea586eb49.png

➢下发命令数据由命令ID及TLV数据组成,命令数据格式如下表所示:

c78adfcaa7d3dfec511684197cd5f6d3.png

其中,消息类型由4个字节构成,前两个字节表示消息级别(固定为0x0004),后两个字节表示功能点顺序值(参见导出SDK device.c中的dev_cmd_list)。

消息体为下发的命令内容的TLV格式数据。

和物TLV格式请参考“TLV格式说明”的内容。

➢命令响应

74fe028355bc7d1199cf5fc6840c4869.png

➢其中,命令响应如下表所示:

3a3420135799fdd5b4bf89a7fb45a975.png

cmd-id与下发的命令相同,执行结果固定为BOOL型TLV数据,执行成功则为0,执行失败为1。

七、 TLV格式说明

和物平台定义了7种功能点类型:布尔型、数值型(整形和浮点型两种)、枚举型、故障型、字符串型和透传型。

和物基于MQTT的数据定义中,Payload用于存放数据,数据上报&命令下发报文的payload数据采用TLV格式进行存储,支持的Type和对应的索引值如下:

dbae5501562d1826fa1660ab76db78c6.png

一个完整的TLV数据格式如下:

10adebd712cfadf35a9d9a749ce1e770.png

八、常用命令数据帧封装及解析示例

所有命令的数据帧解析均按照以下步骤进行解析:

➢ 查找数据帧头(5A 5A);

➢ 从帧头起始位置开始偏移两字节,以小端方式读取两字节的长度;

➢ 根据读取的长度判断接收的数据是否已完整。如果数据已接收完整,计算校验并进行比对;如果没有接收完整则继续接收;

➢ 如果校验通过,则根据Command字段值,按文档描述逐字节进行Command Data的解析;如果校验失败,则跳过第一个字节,从步骤1重新开始解析。

1.无线模组参数配置

7d3e564b0d5fb6e755da8280580eb1af.png

其中:产品ID、设备SN和版本号均为字符串形式的数据,长度为2字节的小端数据,值为ASCII码形式。

2.功能点数据上传

以上传一个bool型的数据为例,该数据字段名为“switch”,上传的值为开(1)。

1b29cbe1ef3060226f90491dcbe52b45.png

数据帧控制字段不再赘述,只对消息体内容进行封装说明:

b3d1be38735478583126df55695eb2c3.png

构造功能点数据上传帧时,可参考以下步骤:

➢ 构造描述字符串。将功能点对应的字段名替换示例描述字符串的黑色部分;

➢ 构造消息类型。将功能点序号替换示例消息类型的黑色部分,小端形式;

➢ 构造消息内容。根据功能点实际的数据类型,按TLV格式封装数据;

➢ 重新计算相应的长度及校验和。

3.功能点命令下发

以下发一个bool型的数据为例:

408b60f28edf979e90a642445cebc251.png

同样以消息体内容进行解析:

2487d839a2ea7be087cb473dc78eee47.png

对于下发命令的解析,用户需要从消息类型中解析功能点序号,对下发的消息内容执行相应的处理逻辑。

4.功能点命令下发响应

设备收到下发的命令需要对齐进行响应,返回命令的执行结果。以上述下发命令为例,返回的响应为:

311623e33f6098314e27bbf56f6b37a4.png

消息体内容分析如下:

e65f0ef6e550adbd6cbda576ed40c8d8.png

九、 基本业务流程

和物MCU端基本业务流程如下图所示:

3314d9c12439546300a198e6c20e2db3.png

文章来源:中移OneNet

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值