用arduino来遥控家电-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12484|回复: 7

用arduino来遥控家电

[复制链接]
发表于 2013-12-20 17:34 | 显示全部楼层 |阅读模式
作为arduino爱好者,最近我完成了用arduino控制电器,分享给各位。

基本的思路是用单片机(Arduino)连接无线发射模块,代替原来的遥控器,控制电源开关。
具体应用可以是热水器,饮水机,电灯,等开/关型电器。
单片机
选用Arduino是因为我之前有一些经验,Arduino似乎上手比较快。国外也有成熟的社区。Arduino在国内TB上一般卖50元以内。以太网扩展卡卖40元左右。无线收发模块15元一对。加上连接线,就可以是一台独立的可以接受HTTP请求的无线发射装置了。关于无线收发模块,分315MHZ和433MHZ2种,需要和后面用到的遥控开关匹配。
遥控开关
现在TB上有不少遥控开关在卖,从20元到50元不等。关键是要买到可以解码的那种。无法解码的话,我们就无法让单片机发射同样的信号了。我了解到发射芯片为PT2262/HS2262的遥控器是可以有办法破解的。已知一款叫柏煌的产品用的是HS2262芯片。买之前最好和卖家确认一下芯片型号。
软件
在Arduino上写的代码一般都很简单,我们要做的就是发射一个信号(或者说编码)去控制遥控开关。
我们要用到一个叫RCSwitch的库(http://code.google.com/p/rc-switch/)。有兴趣的可以去这个网站看看它支持的芯片:SC5262 / SC5272, HX2262 / HX2272, PT2262 / PT2272, EV1527, RT1527, FP1527 or HS1527.  把这个库按照说明下载到本地并加入到库里面以后,我们就可以用了。
解码
我们第一步要做的是解码,电脑连上Arduino和接收模块,运行Examples>RCSwitch>ReceiveDemo_Advanced并打开串口监视器,然后按遥控器上的按钮,串口监视器里会显示读取到的原始数据和解码以后得到的编码。
示例:
Decimal: 1004883 (24Bit) Binary: 000011110101010101010011 Tri-State: 0011FFFFFF01uˆ PulseLength: 163 microseconds Protocol: 1
Raw data: 5068,136,444,136,516,136,516,136,516,464,192,464,192,464,188,472,….
其中1004883是信号的编码,PulseLength是脉冲长度,Protocol是协议编号。记下来后面发射的时候有用。
发射
现在要试试用Arduino发射相同的编码去控制遥控开关。打开Examples>RCSwitch>SendDemo.修改脉冲长度,编码,删除没用的代码就可以运行一下了。运气好的话,这就成功了。
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup() {
  Serial.begin(9600);
  mySwitch.enableTransmit(10);
  mySwitch.setPulseLength(163);
}
void loop() {
  mySwitch.send(1004883, 24);
  delay(2000);
}
Web服务器
用Arduino写的程序太死板(hard code),我们需要的是灵活的控制,如果我们家里有很多的遥控开关,那么给Arduino外加一个以太网扩展卡是很好的。有了Web接口以后,我们只要发送一条类似如下的请求就可以控制任意一个开关了。
http://rcweb/?cmd=RCSwitch&pulseLength=163&code=1004883&bits=24
web服务器的代码稍微多几行,我在官方示例WebServer的基础上添加了解析URL参数的功能,有兴趣可以去这里https://github.com/jackhatedance/rcweb)看看。有了这个web API,我们可以通过第三方程序控制这些家电了,可以是一个简单的网页把所有电器的开关做成按钮,也可以是一个app,或者定时器等。

其他
除了无线遥控开关,同样的思路还可以模拟红外遥控器控制电视,空调等常见家电。红外的缺点是有方向性限制,且不能穿墙。无线遥控可以穿墙,不必对准。Arduino的红外收发模块也很便宜,相关的库是IRRemotehttps://github.com/shirriff/Arduino-IRremote)。
除了以太网控制器,Arduino还支持蓝牙和wifi。
最后来一张图片,Arduino+以太网扩展+传感器扩展+无线发射模块+红外发射模块:


发表于 2013-12-20 21:15 | 显示全部楼层
你的做法太死板,这个现有的产品对遥控编码有更好的解决方案
利用红外接收管/接受模块采集原来遥控器的脉冲编码再记录即可
发表于 2013-12-20 23:35 | 显示全部楼层
学习 学习 天天学习 好好向上
 楼主| 发表于 2013-12-22 20:13 | 显示全部楼层
fuwen0202 发表于 2013-12-20 21:15
你的做法太死板,这个现有的产品对遥控编码有更好的解决方案
利用红外接收管/接受模块采集原来遥控器的脉冲 ...

你说的那种我也听说了,把原始脉冲做参数稍微有点大。估计也是ok的。下次我试试。
发表于 2013-12-22 20:44 | 显示全部楼层
不跳舞的Jack 发表于 2013-12-22 20:13
你说的那种我也听说了,把原始脉冲做参数稍微有点大。估计也是ok的。下次我试试。 ...

不是原始数据会很多,主要是现在很多东西都是非标的,红外参数并未公开
发表于 2013-12-25 12:24 | 显示全部楼层
学习了,我也要买
发表于 2013-12-25 16:25 | 显示全部楼层

感谢分享 学习中.....
发表于 2013-12-25 22:25 | 显示全部楼层
mark学习啊。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2025-1-1 20:17 , Processed in 0.095970 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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