在这篇文章中,我们将构建一个可定制的基于红外(红外)的无线遥控开关,由红外遥控器和接收器组成,您可以根据您的需要进行修改。在本文的后一部分,我们将了解一个升级的安全版本的红外遥控器,它将只响应一个唯一分配的频率。
如果你是初学者以上的水平,你可以很容易地完成它。建议的电路图中说明了这里只有三个遥控器和三个继电器的接收器端。你可以修改代码和电路图,以满足你的需要。
您将需要两个Arduino板,分别作为遥控器和接收器。我建议将Arduino pro mini用于此项目,因为它们的尺寸非常小,而且遥控器的整体尺寸可以忽略。
您可以使用基于3.3V的Arduino pro mini遥控器,这样您可以根据需要使用两个按钮电池或两个AA大小的电池供电。
红外发射器电路有3个按钮和一个红外LED,用于向接收器发送命令。每个按钮都用唯一的十六进制代码编程,接收器侧也编程相同的十六进制代码。
按下按钮时,IR LED向接收器发送十六进制代码,接收器将识别按下哪个按钮,并打开/关闭相应的继电器。
建议的遥控器使用RC5协议与接收器通信;您可以通过修改代码来更改所有内容。
如果您是初学者,也可以按照图来完成,无需修改即可上传代码。
电路和程序:
Arduino遥控发射器:
上述电路说明了如何构建Arduino红外遥控发射器。
三个10K的电阻为下拉电阻,防止遥控器因静电意外触发,IR LED采用220欧姆限流电阻。
远程发射器的程序:
//---------由R.Girish开发的程序--------//
#包括
欧文·欧文;
Const int button1 = 4;
Const int button2 = 5;
const int button3=6;
无效的设置(){
pinMode(按钮1,输入);
pinMode(按钮2,输入);
pinMode (button3、输入);
}
void循环()
{
if (digitalRead(button1) == HIGH)
{
延迟(50);
irsend.sendRC5(0x80C,32);
延迟(200);
}
如果(数字读取(按钮2)=高)
{
延迟(50);
irsend.sendRC5(0x821,32);
延迟(200);
}
如果(数字读取(按钮3)=高)
{
延迟(50);
irsend.sendRC5(0x820,32);
延迟(200);
}
}
//---------由R.Girish开发的程序--------//
Arduino接收机:
上图所示的IR Arduino接收机电路由TSOP1738传感器少量晶体管、晶体管限流电阻器、继电器和二极管,用于吸收继电器线圈的高压尖峰。
电路图不言自明。
Arduino接收机程序:
//-----------------由R.Girish开发的程序-----------//
#包括
int输入=11;
int op1=8;
Int op2 = 9; / /
Int op3 = 10;
内部初始化1;
intinitial2;
国际倡议3;
IRECV IRECV(输入);
解码结果dec;
#定义从按钮A接收的输出1 0x80C//代码
#定义从按钮B接收的输出2 0x821//代码
#定义从按钮C接收的输出3 0x820//代码
无效的设置()
{
依那普利();
pinMode(凤凰社第一章,1);
pinMode(《凤凰社》第2章,1);
pinMode(op3,1);
}
void循环(){
if(不可逆解码(&dec)){
无符号整数值=十二月值;
开关(值){
案例产出1:
If (initial1 == 1) {
数字写入(op1,低电平);
初始值1=0;
}否则{
数字写入(op1,高);
初始值1=1;
}
中断;
案例输出2:
如果(初始值=1){
digitalWrite(《凤凰社》第2章、低);
intitial2 = 0;
}否则{
digitalWrite(《凤凰社》第2章,高);
intitial2 = 1;
}
中断;
案例output3:
如果(初始值=1){
数字写入(op3,低电平);
intitial3 = 0;
}否则{
数字写入(op3,高);
intitial3 = 1;
}
中断;
}
irrecv.resume ();
}
}
//--------------由R.Girish开发的程序-----------//
按照上述说明,您可以完成三个控制,如果您想添加更多控制和继电器,您需要编辑代码和电路图。
您可以在程序中为接收器和遥控器中未使用的管脚分配输出和输入,并为接收器中的各个管脚连接晶体管和继电器的数量,同样,在遥控器中连接开关和下拉电阻器的数量。
您可以使用随机十六进制代码来分配更多数量的按钮。
例如:0xA235, 0xFFFF, 0xBA556等等。并且在接收码中也加相同的十六进制值。例如:#define output4 0xA235, #define outout5 0xFFFF等等。
制作独特频率的红外遥控器
在上述章节中,我们了解了一个简单的红外遥控器,它可以与任何红外遥控器配合使用。
在下面的文章中,我们将学习如何使用arduino微控制器对上述概念进行升级,以实现对家用电器的万无一失的控制,该微控制器将以独特的频率工作,并且永远不会使用普通红外手持机。
万无一失的红外遥控器
该电路可以使用电视遥控器未使用的按钮或任何其他未使用的遥控器打开/关闭您的小工具,这些遥控器可能会在您的垃圾箱中放置很长时间。
该项目的宗旨是帮助残障人士,帮助他们独立地打开/关闭基本家用电器,如风扇或灯。
第二个目标是让用户“像老板一样”控制这些小工具,而不必离开他或她现有的位置。
该电路在发射机和接收机之间利用传统的基于红外的通信。
该电路对其他红外遥控器和其他红外源是百分百安全的,而且更不容易出错。
基于非微控制器的主要问题红外遥控电路这一点在互联网上随处可见,它可以通过任何基于红外的遥控器打开/关闭,并且一瞬间只能控制一个设备,而且更容易出错。
该电路克服了上述问题,我们可以在一个遥控器上控制多个小工具并为特定小工具分配密钥。
在进行这个项目之前,您需要从这个链接下载arduino的库文件,并遵循下面给出的说明:github.com/z3t0/Arduino-IRremote
说明:
1) 从给定链接中单击“克隆或下载”按钮并点击“下载ZIP”。
2) 提取文件并将“IRremote”文件夹移动到Arduino的库文件夹中。
3) 从您的arduino库中删除“RobotIRremote”文件夹。“RobotIRremote”具有与“Iremote”库类似的定义,该定义冲突,无法将代码上载到arduino,因此,必须删除/删除。
通过复制上述说明,您的Arduino IDE软件可用于任何/大多数基于IR的项目。
为远程计算机分配密钥:
在我们的电视遥控器中,每个键都有唯一的十六进制代码,用于识别按下哪个键进行操作。在将最终代码上载到Arduino之前,您需要找到键的十六进制代码。
要做到这一点,在面包板上构造以下电路并按照说明操作。
1)打开Arduino IDE,上传示例代码“IRrecv Demo”
2) 打开串行监视器并按下要使用的遥控器上的键。
只要按下这个键,就会看到十六进制代码弹出。这是特定键的十六进制代码。
3) 对其他两个键执行相同操作(本项目中给出了3个键,用于控制3个设备)
·我们将在主程序中使用这些十六进制代码并上传到arduino。
节目://-----------------由R.Girish开发的程序-----------//
#包括
int输入=11;
int op1=8;
Int op2 = 9; / /
Int op3 = 10;
内部初始化1;
intinitial2;
国际倡议3;
IRECV IRECV(输入);
解码结果dec;
#定义output1 0x111//放置从按钮A接收到的代码
#定义输出2 0x112//放置从按钮B接收到的代码
#定义output3 0x113//放置从按钮C接收到的代码
无效的设置()
{
依那普利();
pinMode(凤凰社第一章,1);
pinMode(《凤凰社》第2章,1);
pinMode(op3,1);
}
void循环(){
if(不可逆解码(&dec)){
无符号整数值=十二月值;
开关(值){
案例产出1:
If (initial1 == 1) {
数字写入(op1,低电平);
初始值1=0;
}否则{
数字写入(op1,高);
初始值1=1;
}
中断;
案例输出2:
如果(初始值=1){
digitalWrite(《凤凰社》第2章、低);
intitial2 = 0;
}否则{
digitalWrite(《凤凰社》第2章,高);
intitial2 = 1;
}
中断;
案例output3:
如果(初始值=1){
数字写入(op3,低电平);
intitial3 = 0;
}否则{
数字写入(op3,高);
intitial3 = 1;
}
中断;
}
irrecv.resume ();
}
}
//--------------由R.Girish开发的程序-----------//
注:
在节目中:
#定义output1 0x111//放置从按钮A接收到的代码
#定义输出2 0x111//放置从按钮B接收到的代码
#定义输出3 0x111//放置从按钮C接收的代码
·将遥控器中的3个唯一代码放在111、112和113处,然后上载代码。十六进制代码将从0到9,从A到F,例如:20156、26FE789、FFFFFF。
·将代码放在“0x”(零x)处。
电路图:
·按下该键将使继电器接通,再次按下该键将关闭继电器。
我正在寻找一个6通道红外遥控器与7个非闭锁继电器。我希望6个按钮中的每一个操作相应的继电器,第7个继电器在按下任何按钮时操作。我准备为设计付款。我在网上找到了类似的东西,但它们都是锁着的。
六通道红外遥控器可以很容易地从任何在线电子商店购买。第7继电器可以放在外部,其线圈的电源可以通过单独的二极管供电,其输入端可以与来自其余6个继电器的电源电压集成,因此,当任何一个继电器被激活时,第7继电器也被激活。
我在网上找到了很多,甚至买了一些,但它们都是锁着的。我不知道如何修改它们。
PCB上有一个小开关,需要设置以实现闭锁模式或临时开启模式
我不知道是否有一个设施,发送照片给你,但没有这个Pcb的开关
如果你找不到开关,那么可能在你的电路板上没有这样的设施。事实上,这个开关在射频遥控器上是常用的,我不确定是不是红外类型的遥控器。在这种情况下,你可能已经诊断了继电器驱动器的晶体管级,然后修改电路,使锁存特性失效。
你好,
有趣的话题。
我想问一下,我是否可以使用这种方式找到的十六进制代码来构建我自己的基于Attiny85的遥控器?
我想制作一个只有睡眠定时器功能的遥控器。(我的电视上没有这个功能)
谢谢你的回复…
嗨,对不起,我对Arduino的东西不太在行,所以没什么建议!!
能否提供红外遥控和Arduino UNO控制celling风扇速度的电路图、零件名称、使用代码、库名称?因此,我将非常感谢您。
谢谢,如果可能的话,我一定会在这里尝试更新它!