ESP8266-Arduino编程实例-PIR(被动红外)传感器驱动

PIR(被动红外)传感器驱动

1、PIR传感器介绍

被动红外传感器(PIR 传感器)是一种电子传感器,可测量从其视野内的物体辐射的红外 (IR) 光。

单个 PIR 传感器可检测照射在其上的红外辐射量的变化,该变化取决于传感器前面物体的温度和表面特性。 当一个物体(例如人)从背景(例如墙壁)前面经过时,传感器视场中该点的温度将从室温升至体温,然后再返回。 传感器将入射红外辐射的变化转换为输出电压的变化,从而触发检测。 温度相似但表面特征不同的物体也可能具有不同的红外发射模式,因此相对于背景移动它们也可能触发检测器。

PIR 具有多种配置,适用于各种应用。 最常见的型号有许多菲涅耳透镜或反射镜段,有效范围约为 10 米(30 英尺),视野小于 180 度。 提供具有更宽视野(包括 360 度)的型号,通常设计安装在天花板上。 一些较大的 PIR 由单段镜制成,可以感应距离 PIR 一百英尺以外的红外能量变化。 也有设计有可逆定向镜的 PIR,允许广泛覆盖(110° 宽)或非常窄的“幕”覆盖,或具有单独选择的部分来“塑造”覆盖范围。

2、硬件准备

  • ESP8266 NodeMCU开发板一块
  • PIR传感器模块一个
  • 面板板一个
  • 杜邦线若干
  • 数据线一条

硬件接线图如下:

在这里插入图片描述

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

在前面的文章中,对如何搭建ESP8266开发环境做了详细的介绍,请参考:

ESP8266 NodeMCU的引脚介绍在前面的文章中做了详细的介绍,请参考:

4、代码实现

1)定义PIR传感器引脚

1
2
3
int pirPin = D7;
int val;

2)在setup函数中初始化串口

1
2
3
4
5
void setup()
{
Serial.begin(115200);
}

3)在loop函数中检测传感器引脚电平

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void loop()
{
val = digitalRead(pirPin);
// 低电平表示没有响应,高电平表示有响应
if (val == LOW)
{
Serial.println("No motion");
}
else
{
Serial.println("Motion detected ALARM");
}

delay(1000);
}

文章来源: https://iotsmart.blog.csdn.net/article/details/126081827