Arduino - PIR传感器

Arduino - PIR传感器 首页 / Arduino入门教程 / Arduino - PIR传感器

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

以下是PIR传感器的优点-

  • 体积小
  • 镜头范围广
  • 易于接口
  • 便宜
  • 低功耗
  • 易于使用
PIR Sensor

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

PIR

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

PIR Adjustable Settings

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

无涯教程网

所需组件

您将需要以下组件-

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

电路图

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

PIR Sensor Circuit Connection

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。如下连接传感器-

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

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

Delay time Adjust

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

输出结果

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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

邱岳的产品手记 -〔邱岳〕

后端技术面试 38 讲 -〔李智慧〕

Vim 实用技巧必知必会 -〔吴咏炜〕

跟着高手学复盘 -〔张鹏〕

陶辉的网络协议集训班02期 -〔陶辉〕

程序员的个人财富课 -〔王喆〕

HarmonyOS快速入门与实战 -〔QCon+案例研习社〕

全链路压测实战30讲 -〔高楼〕

云原生基础架构实战课 -〔潘野〕

好记忆不如烂笔头。留下您的足迹吧 :)