admin 发表于 2015-7-16 15:29:44

MCU开发工程师必看:机智云串口通讯协议详解

如果你是一名初入机智云的MCU开发工程师,在获取机智云串口通讯协议之后,可能会有一些不知如何下手的困惑,本小编特来做个简单的讲解,希望能帮助机粉们,解个惑,入个门。ps:串口通讯协议获取可参考帖子《通过串口助手调试wifi模块连上机智云》

MCU开发基本流程分为两部分:
1. 将wifi模块配置绑定至云端
2. 调通通讯协议数据

1. 将wifi模块配置绑定至云端

1.1 wifi模块与mcu握手
如果烧写gagent正常,wifi模块此时会向mcu发送如下指令:

mcu按照相应的指令回复即可成功握手:

Note:
产品标示码在机智云网站产品信息中获取,为32位字符串,输入到mcu中应填写为ASCII码的16进制。
硬件版本号与软件版本号为8位字符串,输入到mcu中应填写位ASCII码的16进制。
硬件版本号和软件版本号可自行编写,但长度需要达到8B。
绑定超时的作用是限制wifi模块与云端获取passcode与did的时间,超过这个时间将无法获取。
checksum是从len(2B)开始到bindable_timeout(2B)结束中算出来的。

此外,还要注意“包头重定义”中的格式(此信息通讯协议中暂无)。


1.2 wifi模块与mcu保持通讯
一旦wifi模块与mcu握手成功,wifi模块会主动发送心跳包:

mcu需回复心跳包已确认保持通讯状态

Note:
wifi模块的心跳包一定要回复,否则wifi模块将在180秒内自动重启
checksum算法同“1.1节握手”里将的一致。

1.3 wifi模块与mcu合作配置到机智云
mcu发送配置指令

如收到app发送过来的路由器的SSID与password,wifi模块将回复配置成功

Note:
如果追求配置速度,请在mcu配置过程中,不要发送其他指令,直至配置成功。
如果没有收到app端发送的SSID与password,wifi模块将会一直处在等待状态,60秒之后等待完毕,配置过程将会因超时而走向失败。
配置失败,wifi模块将不会进入soft ap模式,如想进入soft ap模式,请在配置指令中的配置模式字段进行选择。
App发送SSID与password的过程请参考帖子《通过串口助手调试wifi模块连上机智云》里app的操作。

1.4 wifi模块状态上报工作状态的变化
一旦配置成功,wifi模块将会主动上报其工作状态:

mcu回复:


Note:
工作状态变化包会发送三次,mcu不回复将不影响wifi模块的工作。
工作状态包的主要作用是协助mcu判断设备当前的状态,如是否配置成功,设备是否在线等。

1.5 其他
如下三个指令是协助mcu开发人员灵动的去处理内部程序。
4.4 设备mcu重置wifi

4.6wifi模组请求重启mcu

4.7 非法消息通知



2. 调通通讯协议数据
如下三个指令是协助设备与app之间指令互动而设置,mcu开发人员可根据设备的通讯协议来进行上报下发。
2.1    wifi模组读取设备的当前状态

2.2    设备mcu向wifi模组主动上报当前状态


2.3wifi模组控制设备



Note:
如何根据设备通讯协议来制定数据点,从而获取“设备状态”,可参考帖子《数据点编辑》
http://site.gizwits.com/zh-cn/document/m2m/i_021_editdp/





木鱼与金鱼 发表于 2015-7-16 16:06:21

如果用485通信的话,以上那些MCU主动的动作,应该通过什么策略,变化一下?

admin 发表于 2015-7-16 17:33:34

木鱼与金鱼 发表于 2015-7-16 16:06
如果用485通信的话,以上那些MCU主动的动作,应该通过什么策略,变化一下? ...

如果是想用gokit调试的话,需要转232。如果你模组支持485调试,可直接通讯。

木鱼与金鱼 发表于 2015-7-17 15:09:16

会不会有这样一种情况,协议上不是说MCU会间隔一段时间主动给wifi发送状态报文吗,要是这个时候,wifi正要控制MCU,因为485是半双工的,此时,肯定会出现错误。
这个MCU主动发送状态信息的命令是必须执行还是可以在wifi固件中修改。
因为就像我刚才所说,如果两边都有主动发送报文的权利,那么485,好像不够用。

木鱼与金鱼 发表于 2015-7-17 17:43:19

我突然想到,好像可以这样。就让wifi作为主机,让它每隔一段时间主动找MCU要数据,而不是等MCU主动发数据。
把以上所有MCU主动做的事情,都换个角度让WIFI主动做。。。。

admin 发表于 2015-7-20 11:03:08

木鱼与金鱼 发表于 2015-7-17 17:43
我突然想到,好像可以这样。就让wifi作为主机,让它每隔一段时间主动找MCU要数据,而不是等MCU主动发数据。 ...

机智云的固件是通用固件,通讯模式不太可能改变。

admin 发表于 2015-7-20 12:18:06

木鱼与金鱼 发表于 2015-7-17 15:09
会不会有这样一种情况,协议上不是说MCU会间隔一段时间主动给wifi发送状态报文吗,要是这个时候,wifi正要 ...

MCU主动发送状态信息的命令
这个是mcu自己做主的。
对于半双工的串口,
在发送的时候可以先检查是否有数据要接收,如果没有的话则进行发送,有数据要接收的话,则先接收数据完成之后再发送MCU的数据。

LYH 发表于 2016-7-31 17:02:01

使用官方网站的app(ios版本),key是输入创建工程时生成的,使用该串口工具,使WIFI模块进入配置模式,但是手机app始终无法连接wifi模块,请帮助?

admin 发表于 2016-7-31 21:24:32

LYH 发表于 2016-7-31 17:02
使用官方网站的app(ios版本),key是输入创建工程时生成的,使用该串口工具,使WIFI模块进入配置模式,但 ...

你发帖求助

muecn 发表于 2016-10-9 14:02:30

谢谢分享~~~~~~~~~~~~~~~~~~~~~~~~

DCI陈工 发表于 2019-9-4 21:54:16

希望要个联系方式
页: [1]
查看完整版本: MCU开发工程师必看:机智云串口通讯协议详解