- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
机智云开发手册
第一章:通信协议分析
———以微信宠物屋为例
微信宠物屋是机智云提供的一套完整的基础例程,在了解相关通信流程之后,我们可在该程序基础上开发自己的程序,实现与云服务的对接,进而达到远程控制的目的,接下来我们就来仔细分析下机智云的“M2M”机制到底是如何“跑起来的”。
第一节:文档说明部分详解
第一步:我们打开微信宠物屋程序gokit-mcu-master:看到他的目录结构如下
其中:MDK_Project即是STM32的程序入口,在分析程序之前我们先来看一下《宠物屋产品设备端开发指南》了解一下该程序实现的功能和串口协议的规定是怎样的。
首先:我们来看产品信息,该处定义了相关的数据点(如何建立数据点请访问)和宠物屋实现的功能,包括:调节RGB三色灯、电机转速、红外探测等。这些大家了解就行。其中需要大家特别注意的是“设备识别码”这个关键词,可以看到微信宠物屋的识别码是“6f3074f4f1314bd7e3ae0b”,机智云对于每一款产品都会生成唯一的识别码以作区分,待会我们将在程序中找到定义识别码的位置。
其次:我们来看产品信息,可以看到流程图上清楚的介绍了整个协议工作的流程,简单分析一下,其实可以分为两部分处理:
第一部分、按键事件发生:主要用于MCU处理按键事件发生后与WIFI的通讯处理。
第二部分、串口事件发生:机智云是通过WIFI模块与MCU以串口通信来实现的,所以下面的这些有关WIFI的事件都可以归类为串口事件的发生,包括:Wifi 发送控制命令、Wifi 发送查询命令、Wifi 发送心跳命令、Wifi 状态更新、外设状态变化。
总体来说,整个系统上电之后的流程如下:
1)MCU 先上电,初始化完成后,给模块上电;
2) 模块初始化;
3) 模块向MCU 询问必要信息,MCU 返回信息(见协议举例);
4) 进入正常工作循环;
a) 模块给MCU 下发控制命令(见协议举例);
b) MCU 返回确认,表示收到命令,正在执行(见协议举例);
c) 执行完新控制命令后,无论状态是否发生变化,MCU 都需要通知模块最新状态(见 协议举例);
d) 若MCU 检测到环境属性变化或者用户在设备上按键引起的状态变化,MCU 需要 通知模块最新状态,但是其发送的频率不能快于2 秒每次(见协议举例);
e) 若环境状态一直不变化,MCU 需要每隔10 分钟定期主动上报当前状态f) 模块会 向MCU 发送心跳,MCU 收到后按照格式返回即可(见协议举例);MCU 连续180 秒 收不到模块的数据,即可认为模块异常,可以给模块重新上电;
最后:我们来了解具体通讯协议的约定,可以看到
命令格式:header(2B)=0xFFFF, len(2B), cmd(1B), sn(1B), flags(2B),DATA(XB),checksum(1B)
说明:
1) 包头(header)固定为0xFFFF;
2) 长度(len)是指从cmd 开始到整个数据包结束所占用的字节数;
3) 命令字(cmd)表示具体的命令含义,详见协议举例;
4) 消息序号(sn)由发送方给出,接收方响应命令时需把消息序号返回给发送方;
5) 标志位(flag),本产品填写默认0;
6) p0 数据区(DATA),详细参见p0 数据区约定;
7) 检验和(checksum)的计算方式为从len~DATA,按字节求和;
8) 所有发送的命令都带有确认,如在200 毫秒内没有收到接收方的响应,发送方;应重 发,最多重发3 次;
9) 多于一个字节的整型数字以大端字节序编码(网络字节序);
10) 数字均用16 进制表示;
相信这一部分大家都能看懂,这里不再叙述,接下来看到“p0 数据区约定”,实现如下功能:
模块向MUC 发送控制命令时携带p0 命令和命令标志位以及可写数据区
MCU 主动发送状态时或者回复wifi 模块的状态查询时携带p0 命令和完整数据区
数据区会自动合并布尔和枚举变量,且有严格的顺序,不可任意改变
怎么来理解这三个功能呢?我们知道在机智云上定义数据点完成后,系统会自动生成对应的“串口通讯协议”如下图所示:
我们下载这份通讯协议文档打开,可以看到具体有如下命令:
1)WiFi模组请求设备信息
2)WiFi模组与设备MCU的心跳
3)设备MCU通知WiFi模组进入配置模式
4) 设备MCU重置WiFi模组
5)WiFi模组向设备MCU通知WiFi模组工作状态的变化
6) WiFi模组请求重启MCU
7)非法消息通知
8)WiFi模组读取设备的当前状态
9)设备MCU向Wi
文档评论(0)