Arduino 与红外遥控器打造家居自动化

> 在这篇文章中,我们将使用 Arduino UNO 和 IR (红外)遥控设备设计家庭自动化。

步骤0:材料清单

  • Arduino UNO 开发板
  • TSOP 1738 红外遥控接收器
  • 1KΩ电阻 x 4
  • 2N2222 NPN晶体管 x 4
  • 1N4007二极管 x 4
  • 12V 继电器 x 4 - 继电器板
  • 遥控
  • 原型板(面包板)
  • 连接电线
  • 12V 电源

在这里遥控器,我们将使用旧的电视遥控器。

电路图

电路图

工作原理

在这个项目中,家庭自动化系统通过电视遥控器控制 4 个不同的设备。项目的工作如下所述:

TSOP1738 红外接收模块具有内置的光电接收器,带通滤波器和解调器。模块的输出可以被微控制器容易地读取。它支持 38 KHz 的载波频率。因此,信源的载波频率即遥控器必须在 38KHz 的范围内才能解调。

第一步是使用 TSOP1738 和 Arduino UNO 解码来自遥控器的数据。为此,我们需要使用一个名为 “IRremote” 的特殊库。从 Arduino-IRremote 下载这个库,并把它放在 Arduino 的库文件夹中。

下一步是解码遥控器每个键的数据。为此,我们将在 “IRremote” 库中使用一些功能。下面的程序将帮助我们解码来自遥控器每个键的数据。

注:以下程序是 “IRremote” 库的示例程序。

#include <irremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
 Serial.begin(9600);
 irrecv.enableIRIn();
}
void loop() {
 if (irrecv.decode(&amp;results;)) {
 Serial.println(results.value, HEX);
 irrecv.resume();
 }
 delay(100);
} 

在解码密钥后,我们将使用电源键和数字键 1 至 4 来编写最终的家庭自动化系统的代码,以控制 4 个负载。 数字键将控制单个负载,即键 1 可以用来打开或关闭负载1等等。电源键一次打开或关闭所有负载。

在代码中,我们将比较按键和我们之前得到的解码值。如果键匹配,相应的负载将打开。 如果再次按下相同的按键,负载将被关闭。类似的操作适用于所有其他键。

最后示例代码如下:

#include <irremote.h>
const int RECV_PIN=11;
IRrecv irrecv(RECV_PIN);
decode_results results;
#define IN1 3
#define IN2 4
#define IN3 5
#define IN4 6
bool i=false;
bool j=false;
bool k=false;
bool l=false;
bool m=false;
void setup()
{
 Serial.begin(9600);
 pinMode(IN1, OUTPUT);
 pinMode(IN2, OUTPUT);
 pinMode(IN3, OUTPUT);
 pinMode(IN4, OUTPUT);
 irrecv.enableIRIn();
 irrecv.blink13(true);

}
void loop() 
{
 if (irrecv.decode(&amp;results;)) 
 {
 Serial.println(results.value,HEX);
 delay(100);
 /////////////////////////
 if(results.value==0x40BD00FF)
 {
 i=!i;
 digitalWrite(IN1, i);

 }
 ////////////////////////
 if(results.value==0x40BD807F)
 {
 j=!j;
 digitalWrite(IN2, j);
  }
 if(results.value==0x40BD40BF)
 {
 k=!k;
 digitalWrite(IN3, k);
 } 
 //////////////////////////////
 if(results.value==0x40BDC03F)
 {
 l=!l;
 digitalWrite(IN4, l)
 }
 //////////////////////
 if(results.value==0x40BD28D7)
 {
 m=!m;
 digitalWrite(IN1, m);
 digitalWrite(IN2, m);
 digitalWrite(IN3, m);
 digitalWrite(IN4, m);

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

原文链接:http://digitalab.org/2017/11/home-automation-using-arduino-uno/

尚未评分
您的评分将帮助我们做出更好的玩法

观光\评论区

Copyright © 2017 玩点什么. All Rights Reserved.