收藏官网首页
查看: 32759|回复: 10

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

140

主题

418

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12682
跳转到指定楼层
楼主
发表于 2015-7-16 15:29:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
注册成为机智云开发者,手机加虚拟设备快速开发
如果你是一名初入机智云的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.6  wifi模组请求重启mcu

4.7 非法消息通知



2. 调通通讯协议数据

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

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


2.3  wifi模组控制设备



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





2

主题

13

帖子

49

积分

新手上路

Rank: 1

积分
49
沙发
发表于 2015-7-16 16:06:21 | 只看该作者
如果用485通信的话,以上那些MCU主动的动作,应该通过什么策略,变化一下?

140

主题

418

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12682
板凳
 楼主| 发表于 2015-7-16 17:33:34 | 只看该作者
木鱼与金鱼 发表于 2015-7-16 16:06
如果用485通信的话,以上那些MCU主动的动作,应该通过什么策略,变化一下? ...

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

2

主题

13

帖子

49

积分

新手上路

Rank: 1

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

2

主题

13

帖子

49

积分

新手上路

Rank: 1

积分
49
5#
发表于 2015-7-17 17:43:19 | 只看该作者
免费使用STM32、APP自动代码生成工具
我突然想到,好像可以这样。就让wifi作为主机,让它每隔一段时间主动找MCU要数据,而不是等MCU主动发数据。
把以上所有MCU主动做的事情,都换个角度让WIFI主动做。。。。

140

主题

418

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12682
6#
 楼主| 发表于 2015-7-20 11:03:08 | 只看该作者
木鱼与金鱼 发表于 2015-7-17 17:43
我突然想到,好像可以这样。就让wifi作为主机,让它每隔一段时间主动找MCU要数据,而不是等MCU主动发数据。 ...

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

140

主题

418

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12682
7#
 楼主| 发表于 2015-7-20 12:18:06 | 只看该作者
木鱼与金鱼 发表于 2015-7-17 15:09
会不会有这样一种情况,协议上不是说MCU会间隔一段时间主动给wifi发送状态报文吗,要是这个时候,wifi正要 ...

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

1

主题

3

帖子

17

积分

新手上路

Rank: 1

积分
17
8#
发表于 2016-7-31 17:02:01 | 只看该作者
使用官方网站的app(ios版本),key是输入创建工程时生成的,使用该串口工具,使WIFI模块进入配置模式,但是手机app始终无法连接wifi模块,请帮助?

140

主题

418

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12682
9#
 楼主| 发表于 2016-7-31 21:24:32 | 只看该作者
LYH 发表于 2016-7-31 17:02
使用官方网站的app(ios版本),key是输入创建工程时生成的,使用该串口工具,使WIFI模块进入配置模式,但 ...

你发帖求助

0

主题

1

帖子

94

积分

注册会员

Rank: 2

积分
94
11#
发表于 2019-9-4 21:54:16 来自手机 | 只看该作者
希望要个联系方式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表