Arduino - PIR 传感器

PIR 传感器可让您感知运动。它们用于检测人类是否已移入或移出传感器的范围。它们通常用于家庭或企业使用的电器和小工具中。它们通常被称为 PIR、"被动红外"、"热释电"或"红外运动"传感器。

以下是 PIR 传感器的优点 −

  • 体积小
  • 镜头范围广
  • 易于连接
  • 价格低廉
  • 低功耗
  • 易于使用
  • 不会磨损
PIR 传感器

PIR 由热释电传感器制成,热释电传感器是一个圆形金属罐,中间有一个矩形晶体,可以检测红外辐射水平。所有物体都会发出低水平辐射,物体越热,发出的辐射就越多。运动检测器中的传感器分为两半。这是为了检测运动(变化)而不是平均红外水平。两半连接在一起,相互抵消。如果一半比另一半看到更多或更少的红外辐射,则输出将摆动高或低。

PIR

PIR 具有可调设置,并在 3 针接地/输出/电源垫中安装了接头。

PIR 可调设置

对于许多需要检测人员何时离开或进入该区域的基本项目或产品,PIR 传感器非常有用。请注意,PIR 不会告诉您周围的人数或他们与传感器的距离。镜头通常固定在一定距离的特定扫描范围内,有时会被家中的宠物触发。

所需组件

您将需要以下组件 −

  • 1 × 面包板
  • 1 × Arduino Uno R3
  • 1 × PIR 传感器 (MQ3)

步骤

按照电路图进行连接,如下图所示。

PIR 传感器电路连接

草图

在您的计算机上打开 Arduino IDE 软件。使用 Arduino 语言进行编码将控制您的电路。单击"新建"打开一个新的草图文件。

Sketch

Arduino 代码

#define pirPin 2
int calibrationTime = 30;
long unsigned int lowIn;
long unsigned int pause = 5000;
boolean lockLow = true;
boolean takeLowTime;
int PIRValue = 0;

void setup() {
   Serial.begin(9600);
   pinMode(pirPin, INPUT);
}

void loop() {
   PIRSensor();
}

void PIRSensor() {
   if(digitalRead(pirPin) == HIGH) {
      if(lockLow) {
         PIRValue = 1;
         lockLow = false;
         Serial.println("Motion detected.");
         delay(50);
      }
      takeLowTime = true;
   }
   if(digitalRead(pirPin) == LOW) {
      if(takeLowTime){
         lowIn = millis();takeLowTime = false;
      }
      if(!lockLow && millis() - lowIn > pause) {
         PIRValue = 0;
         lockLow = true;
         Serial.println("Motion ended.");
         delay(50);
      }
   }
}

需要注意的代码

PIR 传感器有三个端子 - Vcc、OUT 和 GND。按如下方式连接传感器 −

  • 将 +Vcc 连接到 Arduino 板上的 +5v。
  • 将 OUT 连接到 Arduino 板上的数字引脚 2。
  • 将 GND 与 Arduino 上的 GND 连接。

您可以通过位于传感器板底部的两个可变电阻器调整传感器灵敏度和延迟时间。

延迟时间调整

一旦传感器检测到任何运动,Arduino 将通过串行端口发送一条消息,表示检测到了运动。PIR 感应运动将延迟一段时间以检查是否有新的运动。如果没有检测到运动,Arduino 将发送一条新消息,表示运动已结束。

结果

如果检测到运动,您将在串行端口上看到一条消息,当运动停止时,您将看到另一条消息。