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
PIR SENSOR RE 200B
ESP32-21_motion_sensor-schematic
ESP32-21_motion_sensor-wiring
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);
}
}