> 在这篇文章中,我们将使用 Arduino UNO 和 IR (红外)遥控设备设计家庭自动化。
在这里遥控器,我们将使用旧的电视遥控器。
在这个项目中,家庭自动化系统通过电视遥控器控制 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(&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(&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/
观光\评论区