
如何自制人体红外控制灯?
人体红外控制灯是一种通过检测人体发出的红外线来自动控制灯光开关的装置,这种设备在家庭、办公室、走廊等场所非常实用,能够在有人经过时自动开灯,人离开后自动关闭灯,从而节约能源并提高便利性,下面将详细介绍如何制作一个人体红外控制灯。
所需材料和工具
材料/工具 | 数量 | 备注 |
Arduino UNO R3控制板 | 1块 | 主控板 |
HCSR501人体红外传感器 | 1个 | 用于检测人体红外信号 |
LED灯 | 1个 | 被控制的光源 |
电阻(220欧姆) | 1个 | 用于限流保护LED |
杜邦线 | 若干 | 用于连接电路 |
面包板 | 1个 | 非必需,但方便接线 |
继电器模块 | 1个 | 用于控制高电压设备 |
手机或电脑 | 1台 | 用于编写和上传代码 |
USB数据线 | 1根 | 用于连接Arduino与电脑 |
接线方式

为了实现人体红外控制灯的功能,需要将各个组件正确连接,以下是详细的接线步骤:
1、连接HCSR501人体红外传感器:
VCC引脚接Arduino的5V电源引脚。
GND引脚接Arduino的GND引脚。
OUT引脚接Arduino的模拟输入引脚A0。
2、连接LED灯:
LED的正极(长引脚)通过220欧姆电阻连接到Arduino的数字输出引脚10。
LED的负极(短引脚)连接到Arduino的GND引脚。

3、连接继电器模块(如需控制更高电压的设备):
VCC引脚接Arduino的5V电源引脚。
GND引脚接Arduino的GND引脚。
IN引脚接Arduino的数字输出引脚2。
NO(常开端)和NC(常闭端)根据需要连接灯具的电源线路。
程序设计
使用Arduino IDE编写以下代码来实现人体红外控制灯的功能:
const int sensorPin = A0; // 定义人体红外传感器的引脚 const int ledPin = 10; // 定义LED灯的引脚 int sensorValue = 0; // 声明传感器数据变量 void setup() { Serial.begin(9600); // 初始化串口通信 pinMode(ledPin, OUTPUT); // 设置LED引脚为输出模式 digitalWrite(ledPin, LOW); // 确保初始状态为关闭 pinMode(sensorPin, INPUT); // 设置传感器引脚为输入模式 } void loop() { sensorValue = analogRead(sensorPin); // 读取传感器值 Serial.print("Sensor Value: "); // 打印传感器值到串口监视器 Serial.println(sensorValue); if (sensorValue > 50) { // 如果传感器值大于50(根据环境调整阈值) digitalWrite(ledPin, HIGH); // 打开LED灯 } else { digitalWrite(ledPin, LOW); // 关闭LED灯 } delay(100); // 延迟100毫秒 }
运行演示
1、上传代码:将上述代码复制到Arduino IDE中,选择正确的开发板和端口,然后点击上传按钮将代码烧录到Arduino控制板上。
2、测试效果:上传完成后,打开Arduino的串口监视器(工具 > 串口监视器),设置波特率为9600,当有人进入传感器的检测范围时,LED灯应该会自动点亮;当人离开后,灯会自动熄灭。
应用场景及扩展

人体红外控制灯适用于多种场景,如家庭走廊、办公室入口、地下室等需要自动照明的地方,还可以通过增加光敏传感器来实现白天不感应的功能,或者接入智能家居系统进行远程控制和监控。
自制一个人体红外控制灯不仅能够提升生活便利性,还能有效节约能源,通过简单的硬件连接和编程,即可实现这一功能,希望以上内容能够帮助你成功制作一个实用的人体红外控制灯,如果有任何问题或需要进一步的帮助,请随时提问!
常见问题解答(FAQs)
Q1: 如果我想增加一个光敏传感器来实现白天不感应的功能,应该如何操作?
A1: 可以在现有电路的基础上增加一个光敏传感器,并将其连接到Arduino的另一个模拟输入引脚上,然后在程序中添加对光敏传感器的读取逻辑,只有当环境光线较暗时才启用人体红外传感器的功能,具体代码修改如下:
const int lightSensorPin = A1; // 定义光敏传感器的引脚 int lightValue = 0; // 声明光敏传感器数据变量 void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); pinMode(sensorPin, INPUT); pinMode(lightSensorPin, INPUT); // 初始化光敏传感器引脚为输入模式 } void loop() { lightValue = analogRead(lightSensorPin); // 读取光敏传感器值 if (lightValue < 300) { // 如果环境光线较暗(根据环境调整阈值) sensorValue = analogRead(sensorPin); // 读取人体红外传感器值 if (sensorValue > 50) { // 如果检测到人体活动 digitalWrite(ledPin, HIGH); // 打开LED灯 } else { digitalWrite(ledPin, LOW); // 关闭LED灯 } } else { digitalWrite(ledPin, LOW); // 如果环境光线较亮,保持LED灯关闭 } delay(100); }
这样,只有在环境光线较暗的情况下,人体红外传感器才会起作用,从而实现白天不感应的功能。
Q2: 如果我希望使用继电器模块来控制更高电压的灯具,应该如何接线?
A2: 使用继电器模块可以安全地控制更高电压的灯具,以下是具体的接线步骤:
1、连接继电器模块:
VCC引脚接Arduino的5V电源引脚。
GND引脚接Arduino的GND引脚。
IN引脚接Arduino的数字输出引脚2(或其他空闲引脚)。
2、连接灯具:
将灯具的正极(火线)连接到继电器模块的常开端(NO)。
将灯具的负极(零线)直接连接到电源的零线。
3、修改代码:在代码中将digitalWrite(ledPin, LOW);
和digitalWrite(ledPin, HIGH);
替换为对继电器模块的控制,
const int relayPin = 2; // 定义继电器控制引脚 void setup() { // ...(其他初始化代码) pinMode(relayPin, OUTPUT); // 设置继电器控制引脚为输出模式 } void loop() { // ...(其他逻辑) if (sensorValue > 50) { // 如果检测到人体活动 digitalWrite(relayPin, HIGH); // 激活继电器,打开灯具 } else { digitalWrite(relayPin, LOW); // 关闭继电器,关闭灯具 } }
通过这种方式,可以使用Arduino和继电器模块安全地控制更高电压的灯具。
作者:豆面本文地址:https://www.jerry.net.cn/articals/13886.html发布于 2025-01-10 01:40:51
文章转载或复制请以超链接形式并注明出处杰瑞科技发展有限公司