Arduino检查运动物体,详细步骤驱动PIR人体传感器

这次我们做一个简单的电路,用Arduino控制运动物体传感器,也就是PIR传感器。这个电路虽然简单,却很实用,可以做很多扩展,比如人靠近后自动亮起的小夜灯,活体接近蜂鸣警告的报警系统。

这次我们用LED灯和蜂鸣器作为感知信号的输出,如果运动物体传感器检测到有移动物体,LED就会闪烁,蜂鸣器哔哔哔响。

设备清单

元器件清单列举如下,你并不需要所有的元器件,比如LED和蜂鸣器,任选一个就可以,点击链接可直达特别优惠购买。

Arduino运动物体传感器电路图

电路图非常简单,不需要什么高超的技术。

PIR传感器是这个电路中最重要的部件,我们可以调整传感器的灵敏度和侦测时间来让检测更精确,传感器上有三根线:

  • 红色的线接到电源正极(5v)
  • 黑色的线接到地线(GND)
  • 黄色的线是数据输出线,只要检测到有移动物体,就会输出高电平

压电蜂鸣器是一个非常简易的喇叭,有一根地线和一根正极线,我们会把正极性连接到Arduino的一个引脚上,每当这个引脚输出高电平时,蜂鸣器就会疯狂鸣叫。

下面时接线的电路图,如果有看不懂的地方可以参照文字解释。

1、首先从Arduino控制板上5v引脚引出一根导线,连接到面包板正极轨道。

2、然后从Arduino控制板上GND引脚引出一根导线,连接到面包板接地轨道。

3、按照下面的步骤连接PIR传感器

  • 把GND引脚接到面包板接地轨道
  • 把正极引脚接到面包板正极轨道
  • 在面包板上放置一个100欧的电阻
  • PIR传感的黄色的线和这个电阻并联,街道Arduino的2号引脚

4、接下来时蜂鸣器

  • 红色的线接到Arduino的3号引脚
  • 黑色的线接到面包板的地线轨道

5、之后是红色LED

  • 地线引脚通过一个100欧的电阻与LED负极引脚串联。
  • LED正极接到Arduino的4号引脚

检查下所有的接线,确保他们都是正确的。

Arduino控制运动传感器代码

在第一段代码中,设置了4个不同的变量,前三个是引脚编号。

第四个是PIR传感器的状态,LOW表示没有检测到移动物体,HIGH代表检查到了移动物体,我们初始化为LOW.

int ledPin = 4;                // Pin LED is connected to
int piezoBuzzerPin = 3;     // Pin Piezo Buzzer is connected to
int pirSensorPin = 2;               // PIN PIR Sensor is connected to

int motionDetected = LOW;             // Start MotionDetected as low (No motion detected)'

下一段代码我们初始化了所有的设置。

蜂鸣器和LED引脚都设置为输出模式,运动传感器数据引脚设置为输入模式。

然后,我们还设置了串行监控器的比特率,这样就可以很方便地调试代码,如果对串行监视器的用法不是很清楚,可以看这篇文章:Arduino如何使用串行监视器

最后,延迟5秒钟等待PIR传感器初始化,你可以手动调试这个值,只要保证Arduino不会误报就可以。

void setup() {
  pinMode(ledPin, OUTPUT);      // declare LED as output
  pinMode(pirSensorPin, INPUT);     // declare the PIR sensor as input
  pinMode(piezoBuzzerPin, OUTPUT); //declare buzzer as output
  Serial.begin(9600); //Set serial out if we want debugging
  delay(5000); //Allow time for the PIR Sensor to calibrate
}

现在,进入到代码的核心部分:loop函数。这里面的语句会一直执行,直到Arduino关机。

首先,检测PIR传感器给我们的数据是不是高电平,如果是高电平,则代表侦测到了移动物体,执行if语句内的语句,点亮LED,让蜂鸣器鸣叫,然后等待100ms,循环往复。

void loop(){
  motionDetected = digitalRead(pirSensorPin);  // Read the PIR sensor
  if(motionDetected == HIGH) //If motion detected
  {            
    digitalWrite(ledPin, HIGH);
    analogWrite(piezoBuzzerPin, 200);
    delay(100);
    analogWrite(ledPin, LOW);
    analogWrite(piezoBuzzerPin, 25);
    delay(100);
  }
  digitalWrite(ledPin, LOW);
  digitalWrite(piezoBuzzerPin,LOW);
}

至此,如果你给Arduino上电,上传了代码,电路应该就正常运行了,如果遇到任何问题欢迎留言讨论。

 

平均: 5 / 5. votes: 1

到目前为止还没有投票!成为第一位评论此文章。

欢迎转载,请留下出处链接:Labno3 » Arduino检查运动物体,详细步骤驱动PIR人体传感器

赞 (1)

评论

3+5=