风筝
发表于: 2020-2-3 17:18:35 | 显示全部楼层

PIR(Pyroelectric Infra Red)传感器可测量检测区域中的物体发出的红外光。 HC-SR505就是这样的传感器。它非常易于使用,如果检测区域中有物体在移动,该传感器会产生HIGH高电平信号。该高电平信号持续约8秒钟,有时被视为不利条件。不幸的是,这个缺点不能在软件上解决,即在源代码中添加替代方法不起作用。该模块的工作电压在4.5V至20V之间。根据数据手册,传感器可检测到长达3m的移动。在本篇文章中,我们将主要介绍如何在Arduino开发板上使用HC-SR505传感器。


所需的材料清单:

–  Arduino Uno开发板

–  跳线

–  面包板

–  HC-SR505传感器

pir_sensor_hc-sr505.jpg


连接方式

要将SR505连接到Arduino,只需要三根线。 SR505有三个引脚,分别是:“-”、“ OUT”和“ +”。首先,确保为SR505提供足够的电压:Arduino的GND引脚连接到SR505的“-”引脚。接下来,必须将Arduino的5V引脚连接到SR505的“ +”引脚。OUT引脚将根据检测到的内容返回LOW或HIGH。该引脚必须连接到Arduino的其中一个数字引脚。在本文中,使用引脚2。

pin_layout.jpg


示例源代码

该程序非常简单。首先,在setup函数功能中启用串口连接。以后使用串口连接将传感器的状态打印到串行监视器。然后,将引脚2声明为输入引脚。在loop函数中,读取引脚2的状态。如果该引脚具有HIGH信号,则将显示消息“Movement detected”。否则,如果该引脚输出LOW信号,则会打印一条消息,指示传感器未检测到任何移动。在loop函数的末尾,添加了一秒的延迟,以避免过多的消息淹没串口监视器。

  1. #define SIGNAL_PIN 2
  2. void setup()
  3. {
  4.   Serial.begin(9600);
  5.   pinMode(SIGNAL_PIN, INPUT);
  6. }
  7. void loop() {
  8.   if(digitalRead(SIGNAL_PIN)==HIGH) {
  9.     Serial.println("Movement detected.");
  10.   } else {
  11.     Serial.println("Did not detect movement.");
  12.   }
  13.   delay(1000);
  14. }
复制代码

将代码编译并传输到Arduino后,串行监视器(Tools-> Serial monitor)应显示PIR传感器的当前状态。将手移到传感器上方,可以轻松触发传感器以检测到某些移动。

screenshot_serial_monitor.png


跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 714 | 回复: 1501



手机版|

GMT+8, 2024-12-22 23:01 , Processed in 0.045810 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表