在大多数项目中,检测运动或运动一直很重要。在PIR传感器的帮助下,检测人/动物的运动变得非常容易。在这个项目中,我们将学习如何将 PIR 传感器与 Arduino 等微控制器连接 。我们将 Arduino 与 PIR 模块连接 ,并在检测到移动时闪烁 LED 并发出蜂鸣器哔哔声。生成此项目需要以下组件。
PIR 传感器代表被动红外传感器。它是一种低成本的传感器,可以检测人类或动物的存在。传感器中存在两种重要材料,一种是可以检测生物体(人类/动物)的热信号的热释电晶体,另一种是可以扩大传感器范围的菲涅耳透镜。此外,PIR 传感器模块还为我们提供了一些调整传感器工作的选项,如下图所示。
两个电位计(橙色)用于控制传感器的灵敏度和触发时间。基本上,传感器的Dout引脚位于Vcc和Gnd引脚之间。该模块工作在3.3V,但也可以用5V供电。在左上角,它还具有触发引脚设置,可用于使模块在两种不同的模式下工作。一种是“H”模式,另一种是“I”模式。
在“H”模式下,当检测到有人在范围内时,输出引脚Dout将变为高电平(3.3V),并在特定时间后变为低电平(时间由电位计设置)。在这种模式下,无论该人是否仍在范围内或已离开该区域,输出引脚都将变为高电平。我们在项目中以“H”模式使用我们的模块。
在“I”模式下,当检测到一个人在范围内时,输出引脚Dout将变为高电平(3.3V),只要他/她保持在传感器范围内的限制内,输出引脚Dout就会保持高电平。一旦该人离开该区域,引脚将在可以使用电位计设置的特定时间后变低。
注意:电位计或引脚的位置可能因 PIR 传感器供应商而异。按照丝印确定您的引脚排列
下图显示了将Arduino与PIR模块接口并闪烁LED /蜂鸣器的arduino运动检测器项目的电路图。
我们使用 Arduino 的 5V 电源轨为 PIR 传感器供电。PIR 传感器的输出引脚连接到 2 ^德·^ Arduino的数字引脚。此引脚将是 Arduino 的输入引脚。然后是 3^RD^Arduino的引脚连接到LED和蜂鸣器。该引脚将充当Arduino的输出引脚。我们将对 Arduino 进行编程以触发 3 上的输出^RD^如果检测到输入为 2 的引脚 ^德·^ 针。完整的程序解释如下。
Arduino的程序非常简单明了。要连接 Arduino PIR 传感器 ,我们必须将引脚编号 2 分配为输入,引脚编号 3 分配为输出。然后,每当引脚 2 变为高电平时,我们必须产生一个不连续的触发器。下面对每行进行说明。
在下面显示的空白设置函数中,我们必须声明连接到 PIR 输出的引脚 2 将用作输入,连接到 LED/蜂鸣器的引脚 3 将用作输入。
void setup() {
pinMode(2, INPUT); //Pin 2 as INPUT
pinMode(3, OUTPUT); //PIN 3 as OUTPUT
}
然后我们继续使用 loop() 函数。众所周知,只要MCU通电,此处的代码就会被执行。因此,我们始终使用 loop() 函数中的以下行来检查 Pin 2 是否变高。
if (digitalRead(2) == HIGH)
如果我们发现特定引脚已变为高电平,则表示已触发 PIR 模块。所以,现在我们已经使我们的输出引脚(引脚3)变高。我们以 100 毫秒的延迟打开和关闭此引脚,以便我们可以获得闪烁或嗡嗡声输出。执行相同操作的代码如下所示。
void setup() {
pinMode(2, INPUT); //Pin 2 as INPUT
pinMode(3, OUTPUT); //PIN 3 as OUTPUT
}
void loop() {
if (digitalRead(2) == HIGH) // check if PIR is triggered.
{
digitalWrite(3, HIGH); // turn the LED/Buzz ON
delay(100); // wait for 100 msecond
digitalWrite(3, LOW); // turn the LED/Buzz OFF
delay(100); // wait for 100 msecond
}
}
上面已经讨论了这个arduino运动检测器的电路和程序。现在,您可以按照上面给出的原理图在面包板上构建该电路,并上传本教程末尾的程序。连接完成后,您的设置应如下所示。
现在,打开 Arduino 电源并等待大约 50-60 秒,让 PIR 传感器进行校准。不要对在此期间获得的输出感到沮丧。之后,尝试移动到 PIR 传感器前面,您的 LED/蜂鸣器应该被触发。
一段时间后应停止发出蜂鸣声/闪烁声;现在,您可以通过改变电位计来改变模块的灵敏度或低时间,从而绕过输出。
void setup() {
pinMode(2, INPUT); //Pin 2 as INPUT
pinMode(3, OUTPUT); //PIN 3 as OUTPUT
}
void loop() {
if (digitalRead(2) == HIGH)
{
digitalWrite(3, HIGH); // turn the LED/Buzz ON
delay(100); // wait for 100 msecond
digitalWrite(3, LOW); // turn the LED/Buzz OFF
delay(100); // wait for 100 msecond
}
}
全部0条评论
快来发表一下你的评论吧 !