📜  Arduino-PIR传感器

📅  最后修改于: 2020-11-05 03:42:52             🧑  作者: Mango


PIR传感器使您可以感应运动。它们用于检测人类是否进入或离开了传感器的范围。它们通常在家庭或企业使用的家用电器和小工具中找到。它们通常被称为PIR,“被动红外”,“热电”或“ IR运动”传感器。

以下是PIR传感器的优点-

  • 体积小
  • 镜头范围广
  • 易于接口
  • 便宜的
  • 低电量
  • 易于使用
  • 不要磨损

被动红外传感器

PIR由热释电传感器制成,热电传感器是圆形的金属罐,中心带有矩形晶体,可以检测红外辐射的水平。一切都散发着低水平的辐射,而物体越热,发射的辐射就越多。运动检测器中的传感器分为两半。这是为了检测运动(变化),而不是检测平均红外水平。两个半部分相连,以便彼此抵消。如果有一半的红外辐射比另一半多或少,则输出将摆高或摆低。

被动红外

PIR的设置可调,并在3针接地/输出/电源板上安装了插头。

PIR可调设置

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

所需组件

您将需要以下组件-

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

程序

遵循电路图并进行连接,如下图所示。

PIR传感器电路连接

草图

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

草图

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传感器具有三个端子-V cc ,OUT和GND。如下连接传感器-

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

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

延迟时间调整

一旦传感器检测到任何运动,Arduino就会通过串行端口发送一条消息,指出检测到运动。 PIR感应运动将延迟一段时间,以检查是否有新运动。如果未检测到运动,则Arduino将发送一条新消息,说明运动已结束。

结果

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