夏季的灵感——自制窗帘升降机详解

2014-03-122.5万
AI 快速预览详细 收起
本文介绍了一个由Barry制作的智能遥控窗帘升降系统。该项目使用了Romeo三合一Arduino兼容控制器、IR kit红外遥控套件和红外数字避障传感器。通过编程,Barry成功实现了通过遥控器远程控制窗帘的升降。为了提高系统的稳定性和安全性,他还增加了两个限位开关,确保窗帘在到达极限位置后自动停止。这个项目非常适合家庭自动化爱好者,能够轻松解决手动拉窗帘的烦恼。
原文作者:Dany 原载于:DFRobot

坐在窗边有个好处,就是能够尽情的享受阳光。可是随着夏季的到来,享受变成了煎熬,Barry就是承受煎熬者之一。不过公司有个不成文的规定,下班得把所有的窗帘拉起来,据说是根据飞机起飞降落时需要拉起遮阳板的说法。因此,Barry每次上班的时候都必须要将窗帘拉上。但是,每天都做这种重复的事情很烦恼。而且每次拉窗帘的时候都很费劲,一点都不高效。做为一个机器人工程师的Barry,用现有的资源完全能够做一个窗帘遥控升降的设备。
经过一段时间的努力和实验,Barry终于完成了这个系统。

夏季的灵感——自制窗帘升降机详解图3

图1  窗帘自动遥控升降系统设备终极版

制作的过程首先得需要一个电机,其次还需要一个特制的能让电机带动窗帘升降的齿轮。两个电机很容易找到,但齿轮需要定制。Barry 用3D打印机打印了一个所需齿轮的样品模型,让工厂根据样品制造了一个金属的齿轮。在这个齿轮的中间做出一个圆槽,这样就可以嵌入窗帘拉绳。于是,一个执行机构就完成了。

夏季的灵感——自制窗帘升降机详解图4

图2  Romeo

完成了执行机构并不是最终的目标,还需要控制电机的正反转才能让窗帘顺利的升降运行。Barry搞定了Romeo( Romeo是一块Arduino,不过DFRobot设计的这块Romeo集成了电机驱动,可以直接将电机接入Romeo,不用再去找电机驱动板。)和电机的连接后,通过编程成功的将Romeo上的按键控制了窗帘的上下拉动,不过这样也出现了新的问题。虽然Barry可以用开发板上面的按键来控制电机,但是这样比较麻烦是,每次不得不走近窗口并且按住按键才能控制。想要更便捷的控制窗帘,还需要一套IR Receiver Module红外遥控器(DFR0094)和一个迷你遥控器来实现远程控制。

夏季的灵感——自制窗帘升降机详解图2


本来以为这样就很完美了,但是还是出了问题。一次Barry用遥控器将窗帘关上后去饮水,但是窗帘没有关闭,而是不停的运动,最后整个窗帘差点报废。通过这件事说明,这个系统还不够智能稳定。于是berry在原有设备的基础上增加两个限位开关,让整个系统能够在开关后完全自动,不用再考虑任何问题。此时的窗帘升降系统就能够在任何时候都能安全到达限位后自动停止,防止意外的出现。

夏季的灵感——自制窗帘升降机详解图1


需要的部件
【硬件列表】
4、  电线若干
5、  电机两个
6、12v适配器

【软件代码】
[mw_shl_code=cpp,false]#include <IRremote.h>

const int InfraredSensorPin1 = 7;

const int InfraredSensorPin2 =8;

int RECV_PIN = 11;

int E1 = 5;     //M1 Speed Control

int M1 = 4;    //M1 Direction Control

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()

{

pinMode(InfraredSensorPin1,INPUT);

pinMode(InfraredSensorPin2,INPUT);

pinMode(M1, OUTPUT);

pinMode(E1, OUTPUT);

Serial.begin(9600);

irrecv.enableIRIn(); // Start the receiver

}

void loop() {

if(digitalRead(InfraredSensorPin1) ==LOW&&digitalRead(InfraredSensorPin2) ==LOW)

{

digitalWrite(E1,LOW);

if(results.value==0xFD807F)

{

analogWrite (E1,255);

digitalWrite(M1,LOW);

}

delay(1000);

}

if(digitalRead(InfraredSensorPin1) ==HIGH&&digitalRead(InfraredSensorPin2) == HIGH)

{

digitalWrite(E1,LOW);

if(results.value==0xFD906F)

{

analogWrite (E1,255);

digitalWrite(M1,HIGH);

}

delay(1000);

}

if (irrecv.decode(&results))

{

Serial.println(results.value, HEX);



if(digitalRead(InfraredSensorPin1) ==LOW&&digitalRead(InfraredSensorPin2) ==HIGH)

{

if(results.value==0xFD807F)

{

analogWrite (E1,255);

digitalWrite(M1,LOW);

}

if(results.value==0xFD906F)

{

analogWrite (E1,255);

digitalWrite(M1,HIGH);

}

if(results.value==0xFDA05F)

{

digitalWrite(M1,LOW);

analogWrite (E1,0);

}

}

irrecv.resume(); // Receive the next value

}

}[/mw_shl_code]


tutorials

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(5)
诩
这个不错
但是最后做出来是怎样的呢?
20060606
20060606
为什么没有安装效果图
Youyou
Youyou
用变色玻璃怎么样?
Angleo
Angleo回复Youyou
非常有意思的想发,我特地到淘宝上找了一下,还真有电致变色玻璃~
买回来玩玩看~
lauren
lauren
这是个充满想象的概念=。=
Holiday
Holiday
楼主这是在偷懒啊,只有步骤一,
还没效果图
Holiday
Holiday回复Ash1
这样啊[抽搐]
Ash1
Ash1
作者
回复Holiday
故意的 [叹气]
共6条回复,已加载2条,点击查看更多共6条回复,已加载全部
- 没有更多了 -