极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 171401|回复: 86

基于Arduino的低成本智能家居,开源贴

  [复制链接]
发表于 2013-6-5 11:49:05 | 显示全部楼层 |阅读模式
本帖最后由 wasdpkj 于 2013-7-10 23:15 编辑

///////////////////所有资料及源代码都放在了 (地址更新)
https://github.com/wasdpkj/Roomduino


先说一下背景,本人大二学生一枚,去年开始接触Arduino时就已经开始尝试将其融入寝室中:控制灯、饮水机、电风扇。
今年又尝试重写一个,对程序的要求就是:留出很大的扩展空间、主打网络控制、良好的人机界面。

系统基本介绍:

===========硬件要求===========
主机:
  • MCU:MEGA644PA(可以选用张老师的Microduino Core+,基本运算全归单片机,328资源不够);
  • 网络芯片:ENC28J60,RJ45网口:HR911105A;
  • 2.4G无线:nRF24L01;
  • 显示屏:NOKIA5110屏(后期会适配12864的OLED);
  • 红外接收头;
  • 红外遥控器;


副机:
  • MCU:MEGA328P或者168PA;
  • 2.4G无线:nRF24L01;
  • 交流电器控制:可控硅:BT136,光耦:MOC3041;


{副机可以自行选择设计成节点式(既一个arduino+24L01控制一个开关节点)还是单MCU多路式(既一个arduino+24L01控制四个开关)}

除了以上条件,你还需要一个路由器,一个YEELINK账号。

===========功能简介===========
主要功能:
  • 红外直接遥控各路开关
  • 定时开启,也就是预约功能
  • 倒计时
  • 局域网控制,通过网页(网页控制方式是客户端发送pos命令,系统获取并使得控制页面做出响应)
  • 广域网控制,通过Yeelink
  • 默认四路节点(因为Yeelink的5s限制,虽然可以扩展很多路,但也会很卡)

其他规格:
  • 网络自动同步时钟
  • POE供电
  • 2.4G通信
  • 一键配置节点
  • 预留DHT11,18B20,IIC接口,串口,充足的扩展空间

提示:
  • 本文所涉及的PCB大多预留了ISP刷机座,烧写程序的方法论坛很多资源,不过多阐述
  • 局域网:在源代码中找到"web.rar"可以本地运行,我也上传到了空间:http://www.mudi-china.com/PKJ/arduino/room/,由于jquery的安全限制,现在仅支持PC端谷歌浏览器和ios端的谷歌浏览器的正常使用
  • 更多说明请参照github




------------开源方案1:主机打板+副机节点---------------
你可以通过开源的PCB制作出主机,副机节点我也提供了PCB,不过想要集成在插座里的话,就要自己动手了

主机:

主机完成图:


副机节点(没有预留isp刷机座,需自行跳线):


改装节点插座中:



------------开源方案2:主机打板+副机多路式---------------
主机和上面一样
副机设计也很简单,接上24L01模块,引出几路信号线和地、接到可控硅控制板就行了
下面是可控硅控制板:
把上面的接线座当作墙壁里的开关(也就是火线的一部分)就可以控制交流电器了:
如果是感性负载,可控硅需要加上阻容滤波,阻性可不加。



------------开源方案3:主机用Microduino搭建---------------
关于Microduino:http://wiki.microduino.net
微博@Microduino
这是最适合普通玩家的方案了。
MEGA644,28J60,24L01,OLED。这些都能在Microduino里面找到,你所要外接的仅仅是一个红外接收头。

搭建的过程:
从收到一套Microduino到移植程序、适配屏幕,我用了不到半天,其间还包括吃饭、逛超市、骑车、吃西瓜。

这里我用到了:Microduino-Core+ ,Microduino-ENC28J60 + Microduino-RJ45,Microduino-nRF24,Microduino-OLED
并且用到了Test-Microduino扩张板,因为这样我可以更方便的烧写程序,并且获取到3.3V的电压。
再焊接一颗红外接收头,接好OLED到IIC线路上(Core+是第20和21引脚,别搞错了),硬件就算完成了。
你可以使用asp、tiny asp、Microduino-FT232R烧写程序。



下面是Microduino搭建的Roomduino,


无视那堆线吧,我直接用跳asp刷机用的


oled格外漂亮


红外接收头,偷懒直接焊在了插针上


END


Microduino也很适合结合洞洞板


不过副机依然要自己选择搭建方案,我现在并无量产、开模的能力。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1 +3 收起 理由
幻生幻灭 + 3 很给力!

查看全部评分

回复

使用道具 举报

发表于 2013-6-5 20:41:43 | 显示全部楼层
其实主控机可以考虑用成品的ARM来弄。搭载32位的LINUX;
而且可以内建WEB服务。稳定性 性能啥的 没话说(智能家居是完全够了)
而且可以在WEB控制端设置一定强度的密码。避免未经授权的访问。(如果不需要外网访问,可以单独一个子网 只要一个更廉价的HUB 全部静态IP 路由器都省了)

还有就是智能家居稳定系数要高。最好是打开看门狗 免得一个板子程序死了,导致家里的所有电路都出问题。。。HOHO 很吓人的
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2013-6-5 11:49:57 | 显示全部楼层
本帖最后由 wasdpkj 于 2013-6-5 11:58 编辑

占楼编辑
运行中的主机:


========================================================
硬件:
主机:MCU:MEGA644PA,网络芯片:ENC28J60,RJ45网口:HR911105A,2.4G无线:nRF24L01,显示屏:NOKIA5110屏,红外接收头
副机:MCU:MEGA328P或者168PA,2.4G无线:nRF24L01,可控硅:BT136,光耦:MOC3041
{副机可以自行选择设计成节点式(既一个arduino+24L01控制一个开关节点)、还是单MCU多路式(既一个arduino+24L01控制四个开关)}

除了以上条件,你还需要一个路由器,一个YEELINK账号,和一个红外遥控器。


========================================================
软件:

配置:
比如我的路由器网关是192.168.1,那么主机程序段里设置成如下即可,第一个是主机的IP地址,这个要和本地网页中的IP地址匹配

static byte myip[] =
{
  192, 168, 1, 121
};
static byte gwip[] =
{
  192, 168, 1, 1
};
static byte dnsip[] =
{
  192, 168, 1, 1
};

然后YEELINK的ID:
urlBuf0[]是YEELINK控制开关地址,剩下的是四个节点,然后填好你的API就可以

char website[] PROGMEM = "api.yeelink.net";

char urlBuf0[] PROGMEM = "/v1.0/device/xxx/sensor/xxx/";

char urlBuf1[] PROGMEM = "/v1.0/device/xxx/sensor/xxx/";
char urlBuf2[] PROGMEM = "/v1.0/device/xxx/sensor/xxx/";
char urlBuf3[] PROGMEM = "/v1.0/device/xxx/sensor/xxx/";
char urlBuf4[] PROGMEM = "/v1.0/device/xxx/sensor/xxx/";

char apiKey[] PROGMEM = "U-ApiKey: xxx";

================================================

说说红外遥控的使用:
开机进入系统后:
按“1”“2”“3”“4”可以开关四路节点;
按“PLAY”也可以实现系统模式切换(YEELINK万维网控制还是本地手动控制);
按“CH+”“CH-”“CH”可以选择相应节点并且执行倒计时功能。

按“EQ”即可进入设置,此时“0”为确认,“+”和“-”上下移动菜单,再次按“EQ”结束设置:
设置的第一项“CONFIG MOD”是切换系统模式,这个在主界面按PLAY也可以实现切换。
设置的第二项“CONFIG TIME”是预约开启的设置,选择对应节点后,第一项是否定时开启,第二项与第三项是定时开启的时间设置,第四项是定时开启的世界设置(单位分钟)。
设置的第三项“CONFIG DS”是倒计时的设置,选择对应节点后,即可设置倒计时时间(单位分钟),此时“+”“-”“NEXT”“PREV”分别是加1,减1,加10,减10。
设置的第四项“CONFIG CON”是配置节点用的,选择所需配置节点后,系统会提示按下你所需节点的配置按键2秒以上,此时你能看到节点上的状态灯快速闪烁的话,就配置成功了;对了,工作模式下,节点上的灯闪动次数对应着第几路。
设置的第五项“CONFIG INFO”是系统信息和about

================================================

关于本地局域网控制的web网页:
你可以用编辑器打开index.html,里面的“http://192.168.1.121”就是当前arduino主机对应的IP地址;
另外,由于jquery的安全限制,现在仅支持PC端谷歌浏览器和ios端的谷歌浏览器的正常使用。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-5 11:59:09 | 显示全部楼层
本帖最后由 wasdpkj 于 2013-6-28 00:04 编辑

=================================
本作品采用知识共享 署名-非商业性使用-相同方式共享 3.0 未本地化版本 许可协议进行许可。
访问 http://creativecommons.org/licenses/by-nc-sa/3.0/ 查看该许可协议。
=================================

等待各种反馈,建议,改进



V0.2更新:支持dht11的温湿度yeelink上传了,可以结合yeelink网站的触发功能,设置合适的温湿度开启某个电器


V0.4更新:主机程序无论用5110还是oled,写在一个程序了,在define中选择


回复 支持 反对

使用道具 举报

发表于 2013-6-5 12:47:18 | 显示全部楼层
学习了,帮顶~
回复 支持 反对

使用道具 举报

发表于 2013-6-5 13:16:50 | 显示全部楼层
晕啊,enc还加散热片啊。。。
回复 支持 反对

使用道具 举报

发表于 2013-6-5 13:27:09 | 显示全部楼层
好东西,要顶一下
回复 支持 反对

使用道具 举报

发表于 2013-6-5 13:37:44 | 显示全部楼层
棒!好动西啊,可以考虑做个批量方案了。 {:soso_e179:}
回复 支持 反对

使用道具 举报

发表于 2013-6-5 14:14:45 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2013-6-5 14:26:36 | 显示全部楼层
好强大,学习。。。。。。。。
回复 支持 反对

使用道具 举报

发表于 2013-6-5 14:29:30 | 显示全部楼层
强大!大二这么能干
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-5 15:04:05 | 显示全部楼层
zcbzjx 发表于 2013-6-5 13:16
晕啊,enc还加散热片啊。。。

偷懒用二极管降压,加散热片凉快点
回复 支持 反对

使用道具 举报

发表于 2013-6-5 19:23:25 | 显示全部楼层
学习,这种与实际应用结合的很强大
回复 支持 反对

使用道具 举报

发表于 2013-6-5 19:29:18 | 显示全部楼层
mark
。。。。
回复 支持 反对

使用道具 举报

发表于 2013-6-5 22:27:47 | 显示全部楼层
很好的方案。
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-25 15:08 , Processed in 0.050913 second(s), 33 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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