在 Arduino 上使用 HC-SR501 人体热释电(PIR)传感器

深入探索微控制器(MCU)在现实世界中的应用,特别是在报警系统中的应用。从唤醒你的闹钟到保护企业和家庭的防盗和火灾警报,深入了解微控制器如何保障我们的安全。

本教程将指导你构建一个自定义防盗报警器,配备一个灵敏的运动传感器,可检测房间内的任何移动。无论是保护贵重物品还是防止盗窃,这个报警器都将成为一个宝贵的工具。

所需材料

Arduino Uno
面包板
LED 灯(任何颜色)
330Ω 电阻
有源蜂鸣器
HC-SR501 人体热释电(PIR)传感器
公对公、公对母杜邦线
使用运行 Arduino IDE 的计算机连接 Arduino Uno

连接电路

将 Arduino 的 GND 引脚连接到面包板的负极。
将 Arduino 的 5V 引脚连接到面包板的正极。
将 PIR 传感器的 GND 引脚连接到面包板的负极。
将 PIR 传感器的 VCC 引脚连接到面包板的正极。
将 PIR 传感器的 OUT 引脚连接到 Arduino 的数字引脚 2。
将 LED 的长脚连接到面包板的正极。
将 LED 的短脚通过 330 欧姆电阻连接到 Arduino 的数字引脚 13。
将 10K 欧姆电阻的一端连接到 Arduino 的数字引脚 2。
将 10K 欧姆电阻的另一端连接到面包板的正极。


编写代码

打开 Arduino IDE 并创建一个新的空白项目。
复制以下代码并粘贴到项目中:

int pirPin = 2;  // PIR传感器连接的引脚
int ledPin = 13; // LED连接的引脚

void setup() {
  pinMode(pirPin, INPUT);  // 将PIR传感器引脚设置为输入模式
  pinMode(ledPin, OUTPUT); // 将LED引脚设置为输出模式
  Serial.begin(9600);      // 初始化串口通信
}

void loop() {
  int pirValue = digitalRead(pirPin); // 读取PIR传感器的值

  if (pirValue == HIGH) { // 如果检测到运动
    digitalWrite(ledPin, HIGH); // 打开LED灯
    Serial.println("Motion detected!"); // 在串口打印消息
    delay(1000); // 延迟1秒
  } else {
    digitalWrite(ledPin, LOW); // 关闭LED灯
  }
}

上传代码

将 Arduino 开发板连接到计算机上。
在 Arduino IDE 中选择正确的 Arduino 开发板和端口。点击“上传”按钮将代码上传到 Arduino 上。

测试

在 PIR 传感器前面挥一挥你的手,当有运动检测到时,LED灯将亮起,并在串口监视器中显示“Motion detected!”的消息。确认传感器检测到了手的移动。如果你一直挥动你的手,信息将持续输出,但是在每条消息之间有一个延迟,
这种延迟和内置在 HC-SR501 上的电位器设置相关。你可以插入一个螺丝刀,把它朝一个 方向转动来减少延迟,朝另一个方向转动来增加延迟。

组装输出后的代码

真正的防盗警报器有灯和警报器来醒周围的人有问题了,下面我们就来添加它们。如图所示添加有源蜂鸣器。蜂鸣器的正极与 Uno 的数字引脚 8 相连。蜂鸣器的 GND 与 Uno 的 GND 引脚相连。

编写代码

int pirPin = 2;  // PIR传感器连接的引脚
int ledPin = 13; // LED连接的引脚
int buzzerPin = 8; // 有源蜂鸣器连接到Arduino的数字引脚13

void setup() {
  pinMode(pirPin, INPUT);  // 将PIR传感器引脚设置为输入模式
  pinMode(ledPin, OUTPUT); // 将LED引脚设置为输出模式
  pinMode(buzzerPin, OUTPUT); // 将有源蜂鸣器的引脚设置为输出模式
  Serial.begin(9600);      // 初始化串口通信
}

void loop() {
  int pirValue = digitalRead(pirPin); // 读取PIR传感器的值

  if (pirValue == HIGH) { // 如果检测到运动
    digitalWrite(ledPin, HIGH); // 打开LED灯
    digitalWrite(buzzerPin, HIGH); // 打开有源蜂鸣器
    Serial.println("Motion detected!"); // 在串口打印消息
    delay(1000); // 延迟1秒
  } else {
    digitalWrite(ledPin, LOW); // 关闭LED灯
    digitalWrite(buzzerPin, LOW); // 关闭有源蜂鸣器
  }
}

测试
将PIR传感器放置在需要监测的区域,当传感器检测到运动时,蜂鸣器将发出声音。
这样,你就成功地使用Arduino构建了一个简单的防盗报警器。

你还可以:
查看系列教程中的其他文章
购买本教程所用到的 Pico 套件



坐沙发

发表评论