这次我们做一个简单的电路,用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上电,上传了代码,电路应该就正常运行了,如果遇到任何问题欢迎留言讨论。
欢迎转载,请留下出处链接:Labno3 » Arduino检查运动物体,详细步骤驱动PIR人体传感器