使用红外传感器的自动洗手间灯

这个基于Arduino Uno和 IR 传感器的项目用于自动打开和关闭洗手间灯。每当有人进入洗手间时,灯就会自动打开。当人离开浴室时,灯就关闭。这将节省使用洗手间后由于误开灯而产生的电费。

电路和工作

自动洗手间灯的电路图如下图所示。它使用Arduino Uno (Borad1)、BC547 晶体管 (T1)、红外 (IR) 传感器模块 (Module1 和 Module2) 和继电器 (RL1) 构建。

红外线传感器

此处使用的IR传感器 (FC-51),通常用于障碍物检测。两对红外传感器模块用于检测人员进出洗手间。

每个传感器都有三个引脚,即 Vcc、Vout 和 GND。Vcc 引脚接入5V 直流电源,可从 Arduino Uno 的 5V 引脚获取。传感器的接地引脚(GND)可以连接到 Arduino Uno 的 GND 引脚。IR Module1 和 IR Module2 的 Vout 引脚分别连接到 Arduino Uno 的8 和 7 引脚。

5V继电器

5V 机械继电器 (RL1) 用于打开和关闭灯。典型的方糖型 5V 继电器有五个端子,其中两个用于给线圈通电。其余为公共端 (COM)、常闭 (NC) 和常开 (NO) 端子。

把灯连接在继电器的 NO 和 COM 触点上。很明显,在正常情况下,NO 引脚与 COM 引脚没有任何接触。当继电器线圈通电时,COM 引脚和NO 引脚导通,灯泡获得 220V 交流电源。继电器的引脚细节如下图所示。

220V 交流电源的火线(L) 通过继电器连接到灯泡。零线 (N) 直接连接到灯泡。

当“in”传感器(Module2)先检测到人体, 然后是“out”传感器(Module1)时,Arduino 控制器认为有人正在进入洗手间,并在 Board1 的引脚 9 处提供 5V。而来自 Arduino 输出引脚的电流不足启动继电器。因此,使用npn晶体管T1(BC547)放大电流控制继电器导通进而开灯。

当“out”传感器检测到有人,随后“进入”传感器也检测到时,控制器认为有人正在离开并在引脚 9 输出 0V,从而使继电器断电。火线断开灯泡关闭。

软件

Arduino Uno 用于计算两个红外传感器的逻辑。程序是用Arduino IDE 1.8.5 编写、编译并上传。

在代码中,“void setup()”初始化引脚 7 和 8 作为输入,以及引脚 9 作为输出。void show () 是用于串行通信的函数。“void setup ()”如图下图所示。

“void loop()”包含要执行的逻辑。首先检查“in”传感器是否有障碍物(人)。如果有任何障碍物,在此阶段,“out”传感器尚未检测到障碍物,则执行while循环,等待“out” 传感器感应结果。

当人挡住“out”传感器时,传感器的输出为低电平,则程序退出 while 循环,说明有人进入,进入人数递增1。

反之亦然,否则为 else if 部分,人物出去计数值递减。Show( ) 函数用于串口监视器,实际应用中不需要。

我反而觉得它比较适用于商店,用于和顾客打招呼,因为在公共洗手间计数,不会准确,因为同时进出的人可能有多个,也不能时亮时灭。但是它的用途不一定只用在控制卫生间的灯,还可以用于计数,检测物体移动方向,并做出响应。

猜你喜欢

转载自blog.csdn.net/m0_67034740/article/details/124237930