搜索代码

ESP32教程21/55 - 使用PIR运动传感器检测人体 | SunFounder的ESP32物联网学习套件

ESP32教程21/55 - 使用PIR运动传感器检测人体 | SunFounder的ESP32物联网学习套件

在本教程中,我们将学习如何使用ESP32与PIR人体红外传感器来检测人体存在。ESP32是一款功能强大的微控制器,同时具备Wi-Fi和蓝牙功能,非常适合物联网项目。通过集成PIR传感器,我们可以构建一个在检测到运动时激活LED或蜂鸣器的系统,提供一种简单而有效的方式来监控人体活动。

PIR传感器 RE 200B

PIR(被动红外)传感器通过感应物体(尤其是像人体这样有热量的物体)发出的红外辐射来检测运动。当检测到运动时,传感器会向ESP32发送信号,ESP32随后可以触发输出,例如点亮LED或发出蜂鸣声。本教程将指导您完成使系统正常运作所需的硬件设置、接线和代码(视频中00:45处)。

ESP32-21_motion_sensor-原理图

硬件说明

本项目涉及几个关键组件。ESP32微控制器作为操作的核心,负责处理传感器数据并控制输出。PIR运动传感器通过测量红外辐射的变化来检测移动。LED或蜂鸣器在检测到运动时提供视觉或听觉警报。

ESP32配备Wi-Fi和蓝牙,可实现云连接等扩展功能。PIR传感器包含一个透镜,将红外光聚焦到热释电传感器上,当检测到红外水平变化时,该传感器会产生电压信号,表示有移动发生。

数据手册详情

制造商 SunFounder
零件编号 PIR传感器模块
逻辑/IO电压 3.3 V
电源电压 3.3 V
输出电流(每通道) 最大20 mA
峰值电流(每通道) 最大50 mA
PWM频率指南 不适用
输入逻辑阈值 0.3 V(低电平),2.0 V(高电平)
压降 / RDS(on) / 饱和电压 不适用
热限制 0至70 °C
封装 模块
备注 / 变体 可调节灵敏度和延迟

 

  • 确保提供正确的电源(3.3 V),以免损坏设备。
  • 为LED使用电阻以限制电流。
  • 保持正确的接线,以防止短路。
  • 根据需要调节PIR传感器的旋钮以调整灵敏度和延迟。
  • 在不同环境中测试传感器,以获得最佳性能。

接线说明

ESP32-21_motion_sensor-wiring

要将PIR运动传感器和LED连接到ESP32,首先将PIR传感器的VCC引脚连接到ESP32上的3.3 V输出。接下来,将PIR传感器的接地引脚连接到ESP32上的接地引脚。PIR传感器的信号引脚(通常标记为S)应连接到ESP32上的GPIO 14引脚。

对于LED,将较长的引脚(阳极)通过220欧姆电阻连接到GPIO 26引脚,并将较短的引脚(阴极)连接到接地端。确保所有连接牢固,以保证功能正常。如果您使用蜂鸣器代替LED,请将蜂鸣器的一个引脚连接到GPIO 26引脚,另一个引脚连接到接地端,替换LED的设置。

代码示例与讲解

在代码中,我们定义了PIR传感器和LED的引脚编号。我们使用const int pirPin = 14;来设置PIR引脚,使用const int ledPin = 26;来设置LED引脚。这些常量确保引脚编号在程序执行过程中保持不变。

const int pirPin = 14;  // PIR引脚编号
const int ledPin = 26;     // LED引脚

此代码片段初始化了我们将使用的引脚。在setup()函数中,我们将PIR引脚配置为输入,将LED引脚配置为输出。此设置对于读取传感器状态和控制LED至关重要。

void setup() {
  Serial.begin(115200);  
  pinMode(pirPin, INPUT);  // 将PIR引脚初始化为输入
  pinMode(ledPin, OUTPUT);  // 将LED引脚初始化为输出
}

loop()函数中,我们使用digitalRead(pirPin);持续读取PIR传感器的状态。如果传感器检测到运动(以高电平状态表示),我们使用digitalWrite(ledPin, HIGH);点亮LED。否则,我们关闭LED。

if (pirState == HIGH) {
    digitalWrite(ledPin, HIGH);  // 点亮LED
} else {
    digitalWrite(ledPin, LOW);    // 关闭LED
}

此逻辑使LED能够响应PIR传感器检测到的运动。请确保上传文章下方提供的完整代码,以获得完整功能。

演示 / 预期效果

一切设置完成并上传代码后,当PIR传感器检测到运动时,LED将亮起。您可以通过在传感器前移动来测试;LED应立即亮起。如果传感器设置了延迟,它将在指定时间内保持亮起,然后再次关闭(视频中12:15处)。

常见问题包括接线错误,这可能导致传感器无法正常工作。确保PIR传感器正确供电,并且信号引脚连接到ESP32上正确的GPIO引脚。调整PIR传感器上的灵敏度和延迟旋钮,也可以根据您的环境优化性能。

视频时间戳

  • 00:00 开始
  • 1:54 PIR传感器介绍
  • 6:38 接线说明
  • 10:21 Arduino代码说明
  • 12:45 在Arduino IDE中选择ESP32开发板和COM端口
  • 14:27 PIR传感器的演示与校准

图像

ESP32-21_motion_sensor-wiring
ESP32-21_motion_sensor-wiring
PIR SENSOR RE 200B
PIR SENSOR RE 200B
ESP32-21_motion_sensor-schematic
ESP32-21_motion_sensor-schematic
820-ESP32 Tutorial 21/55- Arduino code for motion sensor
语言: C++
/*
 * // 设置引脚编号
 */
const int pirPin = 14; // pir pin的号码
const int ledPin = 26; // LED 引脚

 // 用于存储红外传感器状态的变量
int pirState = 0;

void setup() {
  Serial.begin(115200);
 // 将 PIR 引脚初始化为输入。
  pinMode(pirPin, INPUT);
 // 将LED引脚初始化为输出模式
  pinMode(ledPin, OUTPUT);
}

void loop() {
 // 读取红外传感器的状态值
  pirState = digitalRead(pirPin);
  Serial.println(pirState);
  delay(100);

 // 如果 PIR 被按下,pirState 为 HIGH
  if (pirState == HIGH) {
 // 打开LED
    digitalWrite(ledPin, HIGH);

  } else {
 // 关闭LED灯
    digitalWrite(ledPin, LOW);
  }
}

资源与参考

尚无可用资源。

文件📁

数据手册 (pdf)

其他文件