查看: 294|回复: 2

[DIY项目] 项目分享——做智能插座,享受智能家居的优越性。

[复制链接]

8

主题

1

好友

285

积分

秀才

Rank: 3Rank: 3

  • TA的每日心情

    2016-10-16 19:17
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2016-8-30 16:07:59 |显示全部楼层
         贫道致力于投身建设物联网事业的发展,每每看到好的项目和帖子都忍不住和大家分享。今天就分享一个从某论坛看到的好帖子,希望大家喜欢~


    1、主要功能:

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

    2.2)手机APP端使用官方IOE Demo
    221207xe449g0vdcgnoo14.png

    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时钟会正常运行,因此即使过程中断网,也不会影响已经设定的定时开关操作,如下图所示:
    221207p1gaa1o0g0a4gywz.png

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

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

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

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

    225550ul75h65kkdccpeln.png


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

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

    代码链接:链接:http://pan.baidu.com/s/1dF2tuxF 密码:dlka





    MySocket-机智云接入串口通信协议文档.pdf

    128.13 KB, 下载次数: 6

    回复

    使用道具 举报

    0

    主题

    0

    好友

    3

    积分

    白丁

    Rank: 1

    该用户从未签到

    发表于 2016-9-13 09:43:47 |显示全部楼层
    不错,能否直接控制实际的开关呢?
    回复

    使用道具 举报

    8

    主题

    1

    好友

    285

    积分

    秀才

    Rank: 3Rank: 3

  • TA的每日心情

    2016-10-16 19:17
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2016-9-13 11:03:36 |显示全部楼层
    qq859218009 发表于 2016-9-13 09:43
    不错,能否直接控制实际的开关呢?

    当然可以啊
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /5 下一条


    手机版|爱板网 |网站地图  

    GMT+8, 2016-12-9 13:41 , Processed in 0.148689 second(s), 13 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部