Arduino传感器04.Arduino PIR传感器

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

以下是PIR传感器的优点:

  • 体积小
  • 镜头范围广
  • 易于界面
  • 廉价
  • 低电量
  • 使用方便
  • 不会磨损
PIR传感器

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

PIR

PIR具有可调设置,并在3引脚ground/out/power板上安装了一个接头。

可调设置

对于许多需要在人们离开或进入该区域进行检测的基础项目或产品,PIR传感器是非常有用的。请注意,PIR不会告诉你周围的人数或与传感器的距离。镜头通常固定在有一定距离的扫描范围内,有时候它们会被房子里的宠物带走。

必需的组件

你将需要以下组件:

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

程序

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

电路图

草图

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

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将发送一条新消息,说明运动已经结束。

结果

如果检测到运动,你将在串口上看到一条消息,并在运动停止时看到另一条消息。

发布者:suiyublg,转转请注明出处:https://huibian.net/1504-2/

(0)
suiyublg的头像suiyublg
上一篇 2017年4月22日 17:05
下一篇 2017年4月24日 17:08

相关推荐

  • Arduino教程16.Arduino 比较运算符

    假设变量A为10,变量B为20,则: 运算符名称 运算符简写 描述 例子 等于 == 检查两个操作数的值是否相等,如果相等,则条件为真(true)。 (A == B)不为真 不等于 != 检查两个操作数的值是否相等,如果值不相等,则条件为真。 (A != B)为真 小于 < 检查左操作数的值是否小于右操作数的值,如果是,则条件为真。 (A < B…

    2017年3月23日
    4500
  • Arduino电机控制02.Arduino 伺服电机

    伺服电机是一种有输出轴的小型设备。通过向伺服发送编码信号,可以将该轴定位到特定的角度位置。只要编码信号存在于输入线上,伺服将保持轴的角位置。如果编码信号改变,则轴的角位置改变。实际上,伺服用于无线电控制的飞机中来定位控制面,如升降舵和方向舵。它们还用于无线电控制的汽车,木偶,当然还有机器人。 伺服在机器人中非常有用。电机体积小,内置控制电路,相对于它们尺寸来…

    2017年4月27日
    9400
  • Arduino教程20.Arduino If语句

    它采用括号中的表达式,后面跟随语句或语句块。如果表达式为真,则执行语句或语句块,否则跳过这些语句。 不同形式的if语句 形式1 if (expression) statement; 如果你有一个语句,你可以使用没有大括号{}的if语句。 形式2 if (expression) { Block of statements; } if语句 – 执行顺…

    2017年3月24日
    5100
  • Arduino电机控制03.Arduino 步进电机

    步进电机是无刷同步电机,它将完整的旋转分成多个步骤。与无刷直流电机不同,当向其施加固定的直流电压时,它将连续旋转,步进电机以不连续的步进角旋转。 因此,步进电机被制造成具有每转12,24,72,144,180和200的步长,从而产生每步30°,15°,5°,2.5°,2°和1.8°的步进角。步进电机可以有或没有反馈控制。 想象一下在RC飞机上的电机。电机在一…

    2017年4月28日
    9400
  • Arduino教程18.Arduino 按位运算符

    假设变量A为60,变量B保持13,则: 运算符名称 运算符简写 描述 例子 and(与) & 如果同时存在于两个操作数中,二进制AND运算符复制一位到结果中。 (A & B) 将得出12,即0000 1100 or(或) | 如果存在于任一操作数中,二进制OR运算符复制一位到结果中。 (A | B)将得出61,即0011 1101 …

    2017年3月23日
    4600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
欢迎大家来到大雄学编程!