Arduino Uno 使用 人体红外传感器(HC_SR051)实现 人体感应灯

本文介绍了一个使用Arduino Uno和人体红外传感器HC_SR051制作的人体感应灯项目。当有人靠近时,LED灯会自动点亮,并在人离开后5秒自动关闭。文章提供了详细的组装步骤和开源代码。

 

 

 

“登”,亮了.,

每当我游走在图书馆书架之间就会有这样的一个情景。

 

这次实验使用的模块是人体红外传感器(HC_SR051),配上Arduino Uno 实现人体感应灯的实现。

 

先看看这模块(点击查看大图)

 

实验效果

开始灯还没有亮,手伸过去LED灯就亮了。

模块自带延时,在人离开后,会有5秒的延时。

即使感应到有人,也要活动才能保持一直亮着,只要一停止不动5秒LED一样会关掉。

 

(不知道为什么我调节到最低还是有5秒,求大神指导)

(点击查看大图)

 

打开串口可以看到以下数据:

 

BOM表

Arduino Uno                                        *1

人体红外传感器(HC_SR051)      *1

跳线(公对母)若干

 

接线方式

Arduino Uno                   HC_SR051

5V                    <--->              VCC

A5                    <--->              OUT

GND                <--->              GND

PS:模块跳线使用可重复触发方式

         延时调节距离调节分别 以逆时针调到最小

 

开源程序

程序打包下载:https://u16460183.ctfile.com/fs/16460183-296053404

 

int PIR_sensor = A5;    //指定PIR模拟端口 A5
int LED = 13;           //指定LED端口 13
int val = 0;            //存储获取到的PIR数值

void setup()
{
  pinMode(PIR_sensor, INPUT);   //设置PIR模拟端口为输入模式
  pinMode(LED, OUTPUT);         //设置端口2为输出模式
  Serial.begin(9600);          //设置串口波特率为9600
}

void loop()
{
  val = analogRead(PIR_sensor);    //读取A0口的电压值并赋值到val
  Serial.println(val);            //串口发送val值
  
  if (val > 150)//判断PIR数值是否大于150,
  {
    digitalWrite(LED,HIGH);  //大于表示感应到有人
  }
  else
  {
    digitalWrite(LED,LOW);   //小于表示无感应到有人
  }
}

 

 

 

 

 

### Arduino人体红外感应灯实现方案 通过使用Arduino平台以及人体红外感应模块,可以轻松实现一种自动化的人体感应灯具控制系统。以下是具体的实现方法和技术细节。 #### 方案概述 该方案主要依赖于人体红外传感器(PIR传感器)来检测是否有移动物体进入其探测范围,并触发相应的动作——点亮LED灯或其他照明装置。整个系统的硬件部分由Arduino主板、PIR传感器和LED组成;而软件方面则涉及基本的C/C++编程逻辑[^1]。 #### 硬件准备 - **Arduino UNO/Nano**: 主控芯片负责处理来自传感器的数据并控制输出设备。 - **HC-SR501 PIR Motion Sensor Module**: 高灵敏度人体热释电红外运动探测器用于捕捉周围环境中温度变化引起的信号波动。 - **LED Light Bulb or Relay Module connected to actual light source** #### 软件设计与编码示例 下面提供了一个基础版本的程序清单供参考: ```cpp const int pirSensor = 2; // 定义pirSensor连接至数字端口D2 const int ledPin = 13; // 将LED接到数字端口D13上 void setup(){ pinMode(pirSensor, INPUT); // 设置pirSensor作为输入模式 pinMode(ledPin, OUTPUT); // 设定ledPin为输出模式 Serial.begin(9600); // 初始化串行通信波特率为9600bps以便调试信息打印 } void loop(){ int motionState = digitalRead(pirSensor); // 获取当前pirSensor状态 if(motionState == HIGH){ // 当侦测到有人经过时... digitalWrite(ledPin, HIGH); // ...打开LED指示灯 Serial.println("Motion Detected!"); delay(1000); // 延迟一秒再继续监测新的事件 } else{ digitalWrite(ledPin, LOW); // 若无活动,则关闭LED } } ``` 此段代码实现了最基本的功能需求:当检测区域内存在人员走动情况发生时即刻开启灯光效果直至再次静止为止[^2]。 #### 进阶功能拓展建议 为了进一步提升用户体验或者满足特定场景下的应用要求,在原有基础上还可以考虑加入如下改进措施之一或多者组合运用: - 添加延迟机制使得即使短暂离开也不会立刻熄灭光源; - 结合其他类型的传感元件比如光线强度测量单元共同决定最终操作行为; - 利用无线传输技术远程监控现场状况并将数据上传云端服务器保存分析等等[^3]. 以上便是有关如何借助开源硬件平台Arduino完成一套简易版自动响应型室内节能照明解决方案的相关介绍内容啦!
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值