十八,ESP32 PIR运动传感器的使用

一.介绍

在本教程中,我们使用ESP32 和PIR运动传感器检测运动的物体,由于PIR运动传感器检测到运动的物体会返回一个高电平,这意味着我们可以使用它来检测一个人何时进入和离开某一个区域。在许多场景都用到了这个一个传感器,比如触发警报或打开灯。

IR代表P yroelectric I nfra r ed(很多时候,它们也被称为P assive I nfra r ed传感器)。这是因为它们的操作原理是基于移动体发射的红外能量的检测[1]。这是通过使用热电传感器实现的,热传感器在受热时会产生能量。

二.硬件

  • ESP32开发板
  • 一个PIR传感器
  • 导线若干
  • 一块面包板

三.电路图

PIR 传感器 data 连接 ESP32 GPIO22。

十八,ESP32 PIR运动传感器的使用
图1

四.代码设计

本教程的代码非常简单,因为我们基本上只需要从数字引脚读取。因此,我们首先声明我们将用作全局变量的引脚数,因此我们可以根据需要轻松更改它。

int pin = 22;

继续进行Arduino设置,我们将引脚作为输入,因为我们将从中读取数字值。我们通过使用pinMode函数来完成此操作,该函数接收引脚编号作为第一个输入,第二个接收引脚模式(在这种情况下,引脚模式将为INPUT)。

pinMode(pin,INPUT);

我们还将打开一个串行连接,这样我们就可以在检测到运动时输出一条消息。

Serial.begin(115200);

现在我们将定期轮询主循环上的传感器,以检查是否正在检测运动。请注意,有些方法比轮询更好,例如使用中断。尽管如此,为了使这个介绍简单并专注于传感器操作模式,我们将使用轮询方法。

因此,我们将使用digitalRead函数读取传感器值,该函数接收引脚编号作为输入并返回引脚状态(HIGHLOW)

由于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所示。

十八,ESP32 PIR运动传感器的使用
图2
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论