目录
一.介绍
在本教程中,我们使用ESP32 和PIR运动传感器检测运动的物体,由于PIR运动传感器检测到运动的物体会返回一个高电平,这意味着我们可以使用它来检测一个人何时进入和离开某一个区域。在许多场景都用到了这个一个传感器,比如触发警报或打开灯。
IR代表P yroelectric I nfra r ed(很多时候,它们也被称为P assive I nfra r ed传感器)。这是因为它们的操作原理是基于移动体发射的红外能量的检测[1]。这是通过使用热电传感器实现的,热传感器在受热时会产生能量。
二.硬件
- ESP32开发板
- 一个PIR传感器
- 导线若干
- 一块面包板
三.电路图
PIR 传感器 data 连接 ESP32 GPIO22。
四.代码设计
本教程的代码非常简单,因为我们基本上只需要从数字引脚读取。因此,我们首先声明我们将用作全局变量的引脚数,因此我们可以根据需要轻松更改它。
int pin = 22;
继续进行Arduino设置,我们将引脚作为输入,因为我们将从中读取数字值。我们通过使用pinMode函数来完成此操作,该函数接收引脚编号作为第一个输入,第二个接收引脚模式(在这种情况下,引脚模式将为INPUT)。
pinMode(pin,INPUT);
我们还将打开一个串行连接,这样我们就可以在检测到运动时输出一条消息。
Serial.begin(115200);
现在我们将定期轮询主循环上的传感器,以检查是否正在检测运动。请注意,有些方法比轮询更好,例如使用中断。尽管如此,为了使这个介绍简单并专注于传感器操作模式,我们将使用轮询方法:
因此,我们将使用digitalRead函数读取传感器值,该函数接收引脚编号作为输入并返回引脚状态(HIGH或LOW)。
由于HIGH 和LOW分别是映射到1和0的常量,因此我们可以将digitalRead函数的输出解释为布尔值。
bool isDetected = digitalRead(pin);
现在,如果我们检测到HIGH值(这意味着我们的布尔值为true),那么我们会向串口打印一条消息,指示检测到存在。
if(isDetected){
Serial.println("Presence detected");
}
我们通过稍微延迟来结束循环,因此我们不会不断地轮询传感器。
delay(500);
最终的源代码如下所示。
/*******************************************************
ESP32 使用PIR传感器
功能:使用PIR传感器检测人的运动
引脚: PIR传感器 data-> GPIO22
Designer: Code_Mouse
Date:2018-9-18
*******************************************************/
int pin = 22;
void setup()
{
pinMode(pin, INPUT);
Serial.begin(115200);
}
void loop()
{
bool isDetected = digitalRead(pin);
if (isDetected) {
Serial.println("Presence detected");
}
delay(500);
}
五.代码测试
要测试代码,只需将传感器模块连接到ESP32后编译并使用Arduino IDE将其上传到ESP32设备。
程序完成后,只需打开Arduino IDE串行监视器即可。然后,尝试在传感器前面移动,它应该开始将“Presence detected”字符串打印到控制台,如图2所示。
我想學
?
作者厉害