发 帖  
原厂入驻New

[经验] 【Intel Edison试用体验】【结项】我的家庭电能管家

2016-8-31 21:41:57  5208 Intel
分享
4
本帖最后由 左岸cpx 于 2017-10-20 17:25 编辑

原创声明:本文原创,严禁转载,引用请注明出处!
项目概述
物联网的浪潮席卷全球,加之李总理的互联网+的提出与推动,全国都兴起了物联网与互联网的浪潮。本文,笔者将介绍一个“我的家庭电能管家”的项目。
本作品,即家庭电能管家,综合考虑了传统电器的缺点,以及目前家用电器更换周期长的实际情况,开发了一套切实可行的方案来智能化和辅助控制传统电器,达到节能、辅助和防护的目的。采用智能插座收集电器的实时用电信息,将信息上传至服务器后,服务器根据其运行情况做出节电和辅助推荐,并在电器的异常状况下做出应对措施,及时反馈至用户的移动设备上,方便用户查看电器情况和用电量等信息。作品实验情况表明该系统可以为用户提供节能、辅助和安防作用,对目前的家庭均切实可行。

原料Intel Edison开发板、路由器、220V5V非隔离式电源220V5V隔离式电源、功率计量电路、光电路、XDK开发包

项目实现过程
【硬件篇】
版本1
图片7.png
版本2
图片8.png
版本3
图片9.png
【软件篇】Intel Edisonsocket编程、web手机APP步骤1:功率采集
通过上文,我们已经知道,通过硬件电路的实现,我们已经把功率信息转换为频率信息。所以我们只需要让爱迪生实现一个频率计的功能,就可以测量出用电器的实时功率值。
代码:
var mraa = require("mraa");
var front_time = 0;
var back_time = 0;
var interval = 0;
var freq = 0;
var wave_begin = true;

var key = new mraa.Gpio(8);
key.dir(mraa.DIR_IN);
key.isr(mraa.EDGE_RISING, function(){
    IF(wave_begin){
        var d = new Date();
        front_time = d.getTime();
        wave_begin = false;
    }else{
        var d = new Date();
        back_time = d.getTime();
        wave_begin = true;
        interval = back_time - front_time;
    }
});

//主循环
setInterval(function(){
    var d = new  Date();
    var time_now = d.getTime();
    if(time_now - back_time > 1500){
        //1.5秒超时,认为无信号,freq = 0 Hz
        interval = 0;
    }
    //计算频率
    if(0 == interval){
        freq = 0;
    }else{
        freq = 1000/interval;
    }
    console.log("The frequency is " + freq + " Hz");
}, 1000);
分析:
实验目的:通过外部中断time时间戳来测量方波频率
原理:方波信号作为外部中断源,第一个上升沿(前沿front_time)到来时,爱迪生记录前沿时间戳;第二个上升沿(后延back_time)到来时,爱迪生记录后延时间戳。两个时间戳之差就是该方波的周期(注意时间戳的单位是毫秒哦!)。
在中断服务函数中记录方波前沿和后延对应的时间戳,在主循环中计算方波频率。设置超时时间为1.5秒(所以,测量最低范围是1/1.5 Hz),1秒钟打印一次测量频率。
现象:
我这边是通过CPLD输出了频率为100 Hz的方波信号,和爱迪生共地后连接IO8,观察实验现象:
图片13.png
可以看到在控制台打印出了 方波频率!

步骤2socket编程,网页设计,手机APP客户端:
通过html语言写一个静态网页,是这个样子的。
图片14.png
相当于web前端开发,所以我们还需要用CSSJavaScript来写两个文件。文件是在XDKDemo程序里面改的,附件里可以看到工程文件。
服务器:
服务器这边我们用node.js语言开发,XDK里面有个Web SocketsDemo,如下图所示,一次点击3个红色方框,就可以建立起一个Socket通信程序。
图片15.png
在这个Demo中修改,来实现自己的功能。
现象: 图片16.png
用户连接:可以显示当前和服务器(爱迪生)连接的客户端(网页)数量,从u0, u1, u2...以此类推。
开关状态:通过鼠标点击蓝色方框内的“开关”来切换开关状态。ON或者OFF
实时功率:测量用电器的实时功率。
所以,我们的爱迪生完成了两个工作,1:采集用电器功率。2:充当socket通信服务器。监听它的某一个端口(本文设置为3000),浏览器访问爱迪生所在ip3000端口,即可获取此页面。
这是我自己根据XDK Demo程序修改而成的工程,还很粗糙。我的学长也写了一个逼格更高的网页端和手机APP,在腾讯云上租用了一个公网服务器,有一个静态IP,我用爱迪生采集功率信息上传到腾讯云上,浏览器或手机APP即可向服务器索要数据,实现开关功能,和用电器功率计量功能。下面上图!
Web端:
图片17.png
手机端:
图片18.png     图片19.png     图片20.png
演示视频及项目总结
首先来几张安装示意图:
图片21.png
图片22.png
图片23.png
图片24.png

不会插入本地视频,我就把演示视频放在附件里面吧,供大家参考学习批评。

本项目如题所示,完成了一个完整软硬件系统。硬件部分包括电源管理、功率计量、PCB设计(涉及到开槽隔离等布线技巧)。软件部分包括socket通信编程,node.js, python, html, javascript, css, express等语言及框架。在试用的过程中,也学到了很多东西,希望分享给大家!

最后分享一句话:真正的科技是让人感觉不到科技的存在!

演示视频.rar (4.43 MB, 下载次数: 11)



1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
图片10.png
图片11.png
图片12.png
左岸cpx 2016-9-1 10:59:15
回复

举报

xjallen 2016-9-1 11:13:26
学习学习,赞
回复

举报

城域自由 2016-9-5 08:00:51
为超级发烧友点个赞
回复

举报

michael_llh 2016-9-9 09:58:49
很不错的帖子,顶!!
回复

举报

机智的X宝 2016-9-9 12:02:04
这块板子很贵啊
回复

举报

左岸cpx 2016-9-10 10:02:19

是很贵哦。。。
回复

举报

左岸cpx 2016-9-10 10:02:30
michael_llh 发表于 2016-9-9 09:58
很不错的帖子,顶!!

谢谢!            
回复

举报

左岸cpx 2016-9-10 10:02:52
城域自由 发表于 2016-9-5 08:00
为超级发烧友点个赞

谢谢  !                                 
回复

举报

himol 2016-9-12 11:26:37
这个创意不错。。。。安全性怎样呢??
回复

举报

左岸cpx 2016-9-12 11:43:13
himol 发表于 2016-9-12 11:26
这个创意不错。。。。安全性怎样呢??

安全主要在PCB板上来控制,强弱电挖槽分开了,还有保险丝。电源也有过载保护的功能
回复

举报

himol 2016-9-12 13:43:18
左岸cpx 发表于 2016-9-12 11:43
安全主要在PCB板上来控制,强弱电挖槽分开了,还有保险丝。电源也有过载保护的功能

可能是对强电产生阴影了 ,,,,不敢这样玩
回复

举报

左岸cpx 2016-9-12 15:48:43
himol 发表于 2016-9-12 13:43
可能是对强电产生阴影了 ,,,,不敢这样玩

安全问题确实很重要。不过只是 常规的220V转5V,解决方案都很成熟稳定,不会有什么问题
回复

举报

晓丶x 2016-9-26 09:02:29
厉害,点赞!!!!!!
回复

举报

清风online 2017-2-21 10:48:40
求板子
回复

举报

清风online 2017-2-21 10:48:44
求板子
回复

举报

清风online 2017-2-21 10:49:00
求板子
回复

举报

清风online 2017-2-21 10:49:31
求板子
回复

举报

只有小组成员才能发言,加入小组>>

966个成员聚集在这个小组

加入小组

创建小组步骤

关闭

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

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