跳转到内容

PIR 运动传感器集成

PIR 运动传感器集成

本节介绍如何将 PIR(Passive Infrared)运动传感器与 ESP32-CAM 集成,实现运动触发拍照。学习完成后,您将能够:

  • 理解 PIR 传感器的工作原理和电路设计
  • 通过 NPN 晶体管放大 PIR 信号
  • 将 PIR 运动检测集成到 ESP32-CAM 电路
  • 测试运动触发拍照功能

PIR(被动红外)传感器检测人体发出的红外辐射变化:

┌─────────────────────────────────────────────────────────────┐
│ PIR 传感器工作原理 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 人体 (37°C) ──→ 红外辐射 ──→ 菲涅尔透镜 ──→ 焦热电传感器 │
│ │
│ 当人体移动时: │
│ 1. 红外辐射在传感器两个感应元上产生差值 │
│ 2. 差值信号被内部 FET 放大器放大 │
│ 3. 输出引脚 (OUT) 从 LOW 跳变到 HIGH │
│ 4. 保持 HIGH 约 2-3 秒后恢复 LOW │
│ │
└─────────────────────────────────────────────────────────────┘

常用 PIR 传感器模块:

型号检测距离检测角度工作电压输出电平
HC-SR5013-7 米<120°DC 4.5-20V3.3V / 5V
HC-SR6023-5 米<100°DC 3-12V3.3V
AM3123-5 米<130°DC 2.7-12V3.3V
DYP-ME0033-7 米<120°DC 5-20V3.3V / 5V

对于 3.3V 输出的 PIR 模块(如 AM312、HC-SR602),可直接连接 ESP32-CAM:

PIR 传感器 ESP32-CAM
┌───────┐ ┌──────────┐
│ VCC ├───────────┤ 3.3V │
│ GND ├───────────┤ GND │
│ OUT ├───────────┤ GPIO 13 │
└───────┘ │ │
└──────────┘

对于输出信号较弱的 PIR 模块,或需要长距离布线时,使用 NPN 晶体管放大:

+3.3V
├──────────┐
│ │
┌┴┐ │
│R1│ 10kΩ │
└┬┘ │
│ │
PIR OUT ──── R2 ──────┼───── B │
10kΩ │ | C (NPN Transistor, e.g. 2N2222)
│ | E
│ │ │
│ └───┤
│ │
│ ┌┴┐
│ │R3│ 1kΩ
│ └┬┘
│ │
│ │
GND GND
ESP32-CAM GPIO 13 ←── C 极 (Collector)
B 极 ←── PIR OUT (经过 R2)
E 极 ←── GND

说明: NPN 晶体管放大电路的输出电压接近 3.3V,确保 ESP32 GPIO 能可靠检测到 HIGH 电平。R1 为上拉电阻,R2 为基极限流电阻,R3 防止振荡。

HC-SR501 模块上有两个电位器:

┌────────────────────────────────────────────────────────┐
│ HC-SR501 调节 │
├────────────────────────────────────────────────────────┤
│ │
│ 1. 灵敏度 (Sensitivity): 逆时针增大检测距离 │
│ 范围: 3 米 (顺时针) → 7 米 (逆时针) │
│ │
│ 2. 延时 (Delay Time): 调节输出脉冲宽度 │
│ 范围: 3 秒 (顺时针) → 300 秒 (逆时针) │
│ │
│ 3. 模式跳线: │
│ H: 重复触发模式 (有人持续活动时持续输出 HIGH) │
│ L: 单次触发模式 (输出一次 HIGH 后复位) │
│ │
│ ⚠️ 推荐配置: │
│ 灵敏度: 中等 (4-5 米) │
│ 延时: 最小 (3 秒) │
│ 模式: H (重复触发) │
│ │
└────────────────────────────────────────────────────────┘
+5V (外部电源)
┌───────────┼──────────────────────┐
│ │ │
┌─┴─┐ ┌──┴──┐ ┌──┴──┐
│PIR│ │FTDI│(仅烧录用) │ESP32│
│ │ │ │ │-CAM │
│VCC│─────┼────┤ │ │
│GND│─────┼────┤──────────────────┤GND │
│OUT│─────┼────┤──────────────────┤GPIO13
└───┘ └─────┘ │ │
│ VCC │ ←── +5V
└─────┘
注意:
- PIR 和 ESP32-CAM 共用 GND
- 烧录时 GPIO 0 需接地,完成后断开
- 外接电源需能提供 500mA+ 稳定电流
// ESP32-CAM PIR 运动检测验证
#define PIR_PIN 13
void setup() {
Serial.begin(115200);
pinMode(PIR_PIN, INPUT);
Serial.println("PIR Sensor Test - Waiting for motion...");
delay(5000); // PIR 稳定时间
}
void loop() {
int pirState = digitalRead(PIR_PIN);
if (pirState == HIGH) {
Serial.println("Motion detected! " + String(millis()));
delay(2000); // 防抖动
}
delay(100);
}

预期输出:

PIR Sensor Test - Waiting for motion...
Motion detected! 17258
Motion detected! 48921
场景推荐传感器原因
室内短距离(3-5米)AM312体积小,3.3V 直连,免放大
室内标准(5-7米)HC-SR501灵敏度可调,性价比高
走廊长距离HC-SR501 + 透镜增加检测范围
室外防水防水型 PIRIP65 防护等级
电池供电AM312功耗低(~50μA)

推荐做法:

  • PIR 模块启动后预留 30-60 秒稳定时间
  • 使用 3.3V 输出的 PIR 模块免去放大电路
  • PIR 与 ESP32 之间的连接线不超过 3 米
  • 在软件中添加 1-2 秒防抖动延迟
  • PIR 面朝远离热源/空调的方向安装

避免做法:

  • PIR 直对窗户(日晒引起误触发)
  • PIR 靠近空调出风口(气流引起误触发)
  • 长距离(>5 米)未使用屏蔽线
  • 5V 输出的 PIR 直接连接 3.3V 的 ESP32 GPIO
  • 忘记预留 PIR 启动稳定时间
  1. PIR 传感器通过检测人体的红外辐射变化触发输出
  2. HC-SR501 是最常用的 PIR 模块,灵敏度可调
  3. NPN 晶体管电路用于放大弱信号 PIR 的输出
  4. GPIO 13 是 ESP32 的 RTC 唤醒引脚,也是 PIR 的标准连接引脚
  5. 防抖动机制和稳定时间是可靠检测的关键