Arduino-Remote控制家庭自动化
在这个项目中,我们将向您展示如何使用电视遥控器控制家用电器。同样的原则也适用于办公室和其他行业。
该项目涉及四家家电的自动化,如管灯,风扇,灯泡,以及电视。自动化它们,必须使用四个继电器。下面提供的电路旨在切换继电器。但是为了自动化和控制家用电器,您必须具有将它们连接到交换机的基本思想,并且必须在远程故障的情况下了解该怎么办。我们的文章家庭自动化总机会让你对这个问题有个清晰的认识。
有关家庭自动化的其他文章也已发表。你也可以参考他们并尝试一下。
参考:基于Arduino和GSM模块的家庭自动化使用AVR和Android应用程序的蓝牙家庭自动化
一个Arduino Nano.在项目中使用,因为它的大小很小,不需要任何外部程序员。如果您是Arduino的专业人士,您可以根据自己的选择使用其他Arduino。根据遥控器上按下的按钮Arduino控制继电器。Arduino连接一个3针传感器TSOP 1838T,读取信号并发送给Arduino。Arduino解码信号,并相应地打开和关闭设备。
这个项目不是很容易,但是你可以很容易地做,因为PCB是在EAGLE上设计的,所以你只需要打印PCB。
IR远程控制家庭自动化-使用的组件
组件 | 规范 | 数量 |
---|---|---|
arduino. | 纳米 | 1 |
DC适配器 | 12伏 | 1 |
红外传感器 | TSOP 1838吨 | 1 |
中继 | 12伏 | 4. |
晶体管 | BC547 | 4. |
电阻 | 10k. | 4. |
电阻 | 330欧姆 | 4. |
领导 | 红色的 | 4. |
指示灯 | 240伏 | 4. |
工作
在该项目中,Arduino使用作为控制单元。TSOP 1838T传感器用于从遥控器接收信号。传感器的输出引脚连接到Arduino,当按下任何遥控器的按钮时,Remote的IR LED发送唯一的编码信号,该信号由传感器接收并发送到Arduino,Arduino解码信号并打开根据信号关闭灯。12伏继电器用于切换设备。
TSOP 1838
这是一个红外传感器,接收红外遥控信号。该传感器有三个引脚,第一个是Vcc,第二个是GND,第三个是OUT;传感器的工作电压为3.7 ~ 5伏。
中继
在该项目中,用于切换家用电器的A12电压继电器。它可以容纳7AMP电流。晶体管用于切换继电器,并且二极管平行于继电器连接,但是在反向偏压中,用于限制反向电流。
你可能会发现这个有用的 -中继工作
晶体管
Arduino可以操作LED和蜂鸣器等小电流组件,但继电器需要大电流(100 mA到250mA)来切换电器。因此,晶体管被用来开关继电器。晶体管的发射极引脚连接GND,集电极引脚连接继电器的线圈引脚,Arduino通过一个电阻对晶体管的基脚发出信号。当Arduino集电极和发射极的基脚逻辑HIGH短路时,电流通过继电器线圈。现在线圈通电,继电器接通。
线路图

在电路传感器的输出引脚连接到Arduino的D12引脚,剩余的传感器引脚连接到VCC和GND。
A2,A3,A4和A5引脚的Arduino连接到晶体管的底销通过10K欧姆电阻。发射器销连接到GND和集电极销连接到继电器的线圈销。继电器的其他引脚连接到12伏。
电器通过继电器的C(常见)和否(常开)引脚连接到电源。
视频演示
附加库
在上传代码之前,将Remote的IR Remote的库附加到Arduino,因为这是以下步骤
- 下载图书馆在这里。
- 提取zip文件
- 复制内部文件夹并粘贴到libraries文件夹。
- 关闭Arduino IDE并重新打开。
- 检查示例中的新库。
远程代码
远程发送唯一的编码信号,所以首先我们需要根据开关识别代码,所以按照这些步骤。
- 按电路图做一个电路。
- 将代码1上传到Arduino。
- 打开串口监视器。
- 设置“波特率9600”。
- 按下遥控器按钮,记录串口显示器的数值。
- 仔细检查值并忽略“FFFFFFFF”代码。
现在我们有了所有按钮的代码,所以我们可以为家用电器Arduino编程。
编程
我们拥有所有开关代码,用于上传主代码按照以下步骤操作。
- 打开代码2.
- 选择任意四个按钮来操作电器。
- Go Line 42的Code2。
- 复制yyyyyyy的交换机的任何代码值和粘贴瞬间
- 对第43、44和45行执行此操作,并选择不同的开关代码。
代码
本项目使用两个代码,第一个用于读取Switch代码的值,第二个是主代码。
code1:
程序读取值的开关代码-下载
在code1中,IR Remote的第一个头文件(IRremote.h)被声明。下一行函数“IRrecv IRrecv(12)”用于声明Arduino的引脚,该引脚与IR传感器相连。在此之后,一个“decode_result results”函数用于解码交换码。
在“void Setup”中“Serial.Begin(9600)”用于启用串行监视器。在此之后,用于启用IR传感器的“Irrecv.EnableIrin”。
在void循环中,使用了一个“if Condition”,当遥控器的任何按钮被按下时,它变成真。然后将结果的十六进制值打印在串行监视器上。毕竟“irrecv.resume()”恢复了红外传感器。
Code2:
主要代码,下载
Code2的许多功能类似于代码,因此我们不会讨论相同的功能
从第6行到第9行,四个整数被命名为lig1、lig2、lig3和lig4,它们用于表示引脚。
在此之后,由名称Flag1,Flag2,Flag3和Flag4声明四个整数;所有标志都用于存储输出引脚的状态。之后,由名称值声明的无符号整数。
在“void setup()”中,首先启用First IR传感器。在它之后,所有引脚Lig1,Lig2,Lig3,Lig4和D13声明为输出。
在Void循环中使用“如果条件”,在按下任何开关时变为真,现在已解码值在整数“值”中保存。在此之后,IR传感器恢复。在第34,35和36和36上,电路板LED接通100毫秒。
在第38行中,“如果条件”用于比较来自遥控器的保存值和值。当变为真时,FLAG1被反转('0'to'1'和'1'到'0'),并且Arduino的相应引脚开启并关闭。在此之后,值变为零。在39,40和41线中使用的这种方法用于切换其他引脚。
3.评论
8通道??????的代码如何修改
你好,
我想用arduino做一个数字铝箔打印机!有人能帮我开始这个项目吗?
我已经有热转印头了。!
有人做过这类项目吗。
请与我联系。
谢谢你
似乎是LED连接方式的错误。两个LED连接到相同的电线。
另外,BC547是一个不好的继电器晶体管。它是用于音频应用程序的。它可能很快就会失败。更好的选择是2N2222或功率晶体管。