第三十三篇、基于Arduino uno,获取hcsr501人体红外感应传感器的原始值并判断是否有人——结果导向

0、结果

说明:先来看看串口调试助手显示的结果,没有人的时候,串口打印的是0,有人的时候会打印有人,此时串口打印的是1,当连续若干时间为0,也就是若干时间没有检测到人,则打印没人。如果是你想要的,可以接着往下看。

1、外观

说明:虽然hcsr501人体红外感应传感器形态各异,但是原理和代码都是适用的。


2、连线

说明:只需要连接三根线。
uno————hcsr501人体红外感应传感器

 3、源程序

说明:采用非阻塞方式编写,一定时间检测一次是否有人,并能判断是否有人离开,并将对应功能进行函数化,方便移植。

/*
  这个传感器可以检测是否有人或者动物,就是红外热感应
  注意:这个传感器输出的信号不是持续且稳定的,
  第一个旋钮可以改变检测到有人的时候持续的时间最短1秒,最长应该有三分钟;
  第二个旋钮可以改变反映的时间,也就是灵敏度。
  所以调节最高的灵敏度,最低的持续时间,人一直在的时候,识别1秒,然后切换到了4到5秒识别不到,
  所以当人出现的时候,变成1的时候,监测30秒之后是否还是1,如果还是1,那就是人还在,否则人离开。

  接线:
  VCC------VCC
  GND------GND
    7------OUT
*/
/****************************************hcsr501 part****************************************/
#define hcsr501Pin 7                                //设置对应的引脚
#define hcsr501TimeInterval 1000                    //检测一次的时间间隔  
#define existTimeInterval   20000

unsigned long hcsr501Times = 0, existTimes = 0;     //记录设备运行时间
int hcsr501Val = 0, existVal = 0;
/****************************************set up and loop part*********************************/
void setup() {
  Serial.begin(9600);                               //设置串口波特率为9600
  pinMode(hcsr501Pin, INPUT);                       //引脚设置成输入
  
  Serial.println("设备上线!"); 
}

void loop() {
  judgmentExist();                                  //判断人是否存在
}
/****************************************hcsr501 part****************************************/
/*获取传感器的数据数据*/
void getHcsrData() {
  if (millis() - hcsr501Times >= hcsr501TimeInterval) {
    hcsr501Times = millis();                        //一定时间执行一次
    hcsr501Val = digitalRead(hcsr501Pin);

    Serial.println(hcsr501Val);                     //串口打印对应的值
  }
}
/*判断人是否存在*/
void judgmentExist() {
  getHcsrData() ;                                   //获取传感器的数据数据
  if (hcsr501Val == 1 && existVal == 0) {            //检测到有人
    existVal = 1;
    Serial.println("有人!");                        //串口打印对应的值
  } if (hcsr501Val == 1 && existVal == 1) {
    existTimes = millis();
  }
  if (millis() - existTimes >= existTimeInterval && existVal == 1) { 
    existVal = 0;                                    //一定时间执行一次
    Serial.println("没人!");                        //串口打印对应的值
  }
}

4、注意事项

说明:如果有什么问题可以评论@我,我将帮助你。该传感器有两个旋钮,分别用来调节灵敏度和有人时信号持续的时间长短,我建议调到最灵敏,最低持续时间。传感器上面白色的盖子拿下来可以看到引脚。白色盖子的作用是增强信号,拿下来就识别不到人了。

5、基本原理

        HC-SR501人体红外感应传感器是一种基于被动红外技术(PIR)的人体探测器件。其原理是利用人体本身发出的红外辐射作为检测目标。

        具体来说,HC-SR501传感器内部包含一组感知器件和信号处理电路。传感器的感知器件是一种特殊的红外线(IR)感知组件,可以检测周围环境中的红外线辐射强度。当一个人或者其他有温度的物体进入到传感器的监测范围内时,就会产生一个动态的红外辐射场,这个场会被感知器件所感应,并转化为电信号。然后,信号处理电路对这个电信号进行处理和分析,判断出是否有人体在传感器范围内活动。

        由于人体的温度显著高于周围环境,因此人体就会产生相对强烈的红外辐射。这使得HCSR501传感器能够通过对红外辐射的检测实现对人体的探测。同时,HCSR501传感器通常还有灵敏度延迟时间等参数可以调整,以便适应不同的使用环境和需求。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值