收藏官网首页
查看: 18722|回复: 13

智能插座——离线不丢失定时数据_【1】MCU代码与功能简述

31

主题

121

帖子

1426

积分

金牌会员

Rank: 6Rank: 6

积分
1426
跳转到指定楼层
楼主
发表于 2016-8-25 23:02:14 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
教您5分钟接入机智云,实现傻瓜式开发
本帖最后由 李~ 于 2016-9-1 10:35 编辑

1、主要功能:

1.1)实现定时开启/关闭一个LED(用LED模拟继电器),可以设定的参数包括:年、月、日、时、分、秒;
1.2)时间通过网络获取并同步到本地,设定的开关时间也会保存到本地,可以实现断网不丢失设定时间,不影响定时动作;
1.3)每次从APP端设定开启/关闭LED时,都会自动同步一次网络时间到本地,以校准本地时钟;
2、软硬件平台:
2.1)硬件使用gokit2核心板+esp8266-12F模组,模组已经烧写机智云固件;

2.2)手机APP端使用官方IOE Demo;

2.3)开发环境使用CubeMx_4.15 +Keil_5.20,mcu上移植了FreeRTOS系统;
3、分享目的:
3.1)定时插座功能虽然简单,但是涉及到网络时间同步问题,这里需要开发者自己组时间请求包,并在协议解析中增加对应解析内容,有一定的实现难度,分享此帖,供有疑问的同学参考、讨论,所以本项目中只添加了一组“开/关”的定时功能,且不能同时设定;
3.2)mcu移植了FreeRTOS,freertos.c文件中起了多个不同优先级的线程,并使用了STM32本地RTC实时时钟,需要实现更多开关及更复杂的业务逻辑的话,可将代码放置在此处。
4、操作方法
4.1)从app端进入主界面(如图3)后,MCU会首先同步网络时间,并将网络时间进行一次上报,以使app显示的进度条最接近当前实际时间,方便设定;设定过程中,必须先拖动进度条到想要设定的时间后,才能进行“开/关”功能设定。
4.2)时间设定完毕后,mcu本地会保存当前设定的定时时间,本地RTC时钟会正常运行,因此即使过程中断网,也不会影响已经设定的定时开关操作,如下图所示:

LED定时开设定完毕时间后将ESP8266-12F模组从Gokit核心板上拿掉,此时Gokit已经处于离线状态,但当设定打开LED时间到后,LED仍然能够准确被打开。
5、主要代码介绍:
5.1)插座实现定时功能和其他数据点操作主要不同之处就是获取网络时间,在我们通过网页创建我们的项目后,系统会生成机智云接入串口通信协议文档,文档4.13小节有针对网络时间说明:

包括请求包和回传数据包的说明,我们要做的就是在代码中增加这个请求包,并能够保证网络给我们回复带有时间信息的数据包时我们能够解析到,因此这里就增加了如下两段代码:
首先发送网络时间请求包:

云端收到请求包后,会把包含有当前网络时间的数据包通过WiFi模组透传给MCU,MCU则可以通过下面这段函数解析并同步到本地RTC时钟:

当然,过程中需要对protocol.c中命令解析部分增加两行代码,来调用上面这个函数,具体可以查看代码。
5.2)因为这里只使用了Gokit核心板,没有功能板,所以无法通过功能板的KEY2进入配网模式,这里设定的是长按核心板上User Key持续1s左右,当看到LED1~LED3大约以10HZ频率流动时松开,就可以进入airlink模式;如长按User Key持续4s以上直至看到LED1~LED3以大约100HZ频率律动,则系统复位。
注意:因核心板版本不同,有的版本只有一个RESET按键,没有User Key,此时可以通过修改下面宏定义,设定配网按键



以上简单说明,详情参考对应代码和文档。
最后对MCU开发的小伙伴有个建议:
在网页创建工程完成后,在产品开发资源目录下,有“XXX机智云接入串口通信协议文档”,如下图所示:

此文档是一个非常非常有用且非常非常重要的文档!(也建议网站改版时候是否能够考虑把这个文档放一个更明显一些的位置)。MCU开发过程中一定一定要看,尤其是文档中4.9和4.10小节,必须看明白,数据点的调试问题,绝大多数都是数据点解析和上报过程中格式问题,4.9和4.10小节对于这块解释非常详细。

代码链接:链接:http://pan.baidu.com/s/1dF2tuxF 密码:dlka
MySocket-机智云接入串口通信协议文档.pdf (128.13 KB, 下载次数: 138)



31

主题

121

帖子

1426

积分

金牌会员

Rank: 6Rank: 6

积分
1426
沙发
 楼主| 发表于 2016-8-30 09:33:13 | 显示全部楼层
boboP 发表于 2016-8-29 17:06
好帖子!感谢楼主分享!!!!

31

主题

121

帖子

1426

积分

金牌会员

Rank: 6Rank: 6

积分
1426
板凳
 楼主| 发表于 2017-2-27 18:19:24 | 显示全部楼层
杀进丧尸城 发表于 2017-2-27 14:56
如何设备断电,是不是所有数据都清零了啊;要记住断电前的设定值,该怎么整啊;不可能全部写flash吧!求指 ...

只能写flash了,全写flash有什么不可能啊,多少产品都是这么处理的

31

主题

121

帖子

1426

积分

金牌会员

Rank: 6Rank: 6

积分
1426
地板
 楼主| 发表于 2017-6-19 11:29:34 | 显示全部楼层
maomaodemao 发表于 2017-4-16 17:48
楼主能更新一下帖子吗?源码看不到了,想和您学习学习,能的话给发一份吧,十分感谢      ...

http://pan.baidu.com/s/1pLqd92r

31

主题

121

帖子

1426

积分

金牌会员

Rank: 6Rank: 6

积分
1426
5#
 楼主| 发表于 2017-6-19 11:30:03 | 显示全部楼层

31

主题

121

帖子

1426

积分

金牌会员

Rank: 6Rank: 6

积分
1426
6#
 楼主| 发表于 2017-6-19 11:30:54 | 显示全部楼层
peter58 发表于 2017-6-5 12:27
代码失效了,能否从新上传一次,谢谢!

http://pan.baidu.com/s/1pLqd92r
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

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

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