如今,无论是数据安全还是居家安全,安全性都是每个人最关心的问题。随着技术的进步和物联网的日益普及,近来数字门锁已变得非常普遍。数字锁不需要任何物理钥匙,但是它可以使用RFID、指纹、面部识别码和密码等来控制门锁。在之前,我们已经使用这些各种技术开发了许多数字门锁应用程序。在本篇文章中,我们使用ESP32-CAM制作一个Face ID控制的数字门禁系统。
AI-Thinker ESP32-CAM模块是一款低成本开发板,带有一个非常小巧的OV2640相机和一个micro SD卡插槽。它拥有一个带有内置Wi-Fi和蓝牙连接功能的ESP32 S芯片,以及2个高性能32位LX6 CPU和7级流水线架构。在本文中,我们将使用ESP32-CAM和继电器模块以及电磁锁来制作基于人脸识别的门禁系统。
所需的组件 ● ESP32 CAM模块 ● FTDI电路板 ● 继电器模块 ● 电磁锁 ● 跳线
电磁锁 电磁锁基于电磁机械锁机制。这种类型的锁具有一个带有倾斜切口的嵌条和一个良好的安装支架。接通电源后,DC会产生磁场,该磁场将嵌条移入内部并将门保持在解锁位置。嵌条将保持其位置,直到断电为止。当电源断开时,嵌条会向外移动并锁定门。在锁定状态下,它不使用任何电源。要驱动电磁锁,您需要一个可提供12V @ 500mA的电源。
电路原理图 ESP32-CAM人脸识别门禁系统电路图如下:
上面的电路集合了FTDI电路板、继电器模块和电磁锁。 FTDI电路板用于将代码刷入ESP32-CAM,因为它没有USB连接器,而继电器模块用于打开或关闭电磁锁。 FTDI电路板和继电器模块的VCC和GND引脚连接到ESP32-CAM的Vcc和GND引脚。 FTDI电路板的TX和RX连接到ESP32的RX和TX,继电器模块的IN引脚连接到ESP32-CAM的IO4。
注意:在上传代码之前,将IO0接地。 IO0确定ESP32是否处于闪烁模式。当GPIO 0连接到GND时,ESP32处于闪烁模式。
根据电路图连接硬件后,其效果应如下所示:
在Arduino IDE上安装ESP32开发板 本文中,我们将使用Arduino IDE对ESP32-CAM进行编程。因此,首先,在Arduino IDE上安装ESP32插件。
要将ESP32板安装在Arduino IDE中,请转到File> Preferences。
接下来,复制以下链接并将其粘贴到“Additional Board Manager URLs”字段中,如下图所示。然后,单击“OK”按钮:https://dl.espressif.com/dl/package_esp32_index.json
现在转到Tools > Board > Boards Manager。
在Board Manager中,搜索ESP32并安装“ESP32 by Espressif Systems”。
代码说明 完整的代码分为四个部分。其中一个是是相机和继电器模块的主要代码,其中ESP32根据人脸识别来锁定或解锁门,其他三个代码分别用于网页、相机索引和相机引脚。在这里,我们解释了代码的一些重要部分。
首先包含所有的库文件。 - #include "esp_camera.h"
- #include <WiFi.h>
- #include "camera_pins.h"
复制代码在下一行中,取消注释与ESP32一起使用的照相机模块。在代码中,定义了五个不同的相机型号。在本文中,我们使用的是AI-THINKER型号。 - //#define CAMERA_MODEL_WROVER_KIT
- //#define CAMERA_MODEL_ESP_EYE
- //#define CAMERA_MODEL_M5STACK_PSRAM
- //#define CAMERA_MODEL_M5STACK_WIDE
- #define CAMERA_MODEL_AI_THINKER
复制代码之后,将网络凭据代入以下变量: - const char* ssid = "Wi-Fi Name";
- const char* password = "Wi-Fi password";
复制代码然后定义连接继电器模块的引脚。在定义的时间间隔内将门解锁后,我们将使用millis()函数锁定门,此处为5秒。 - #define relay 4
- long prevMillis = 0;
- int interval = 5000;
复制代码
在setup()函数中,以115200的波特率初始化串口监视器,以进行调试。然后,在接下来的几行代码中,定义继电器模块的引脚模式,并将继电器初始化为低电平。 - void setup() {
- Serial.begin(115200);
- pinMode(relay, OUTPUT);
- digitalWrite(relay, LOW);
复制代码
在loop()函数内部,检查人脸是否与注册的人脸匹配。如果匹配,则将门解锁5秒钟,然后在5秒钟后再次锁定门。 - void loop() {
- if (matchFace == true && activeRelay == false){
- activeRelay = true;
- digitalWrite (relay, HIGH);
- prevMillis = millis();
- }
- if(activeRelay == true && millis()- prevMillis > interval){
- activeRelay = false;
- matchFace = false;
- digitalWrite(relay, LOW);
- }
复制代码
测试ESP32-CAM人脸识别门禁系统 最后,上传代码,将FDTI板连接到您的笔记本电脑,然后电路板选择“ ESP32 Wrover Module”。另外,如下图所示更改其他设置:
在上传代码之前,别忘了将IO0引脚连接到GND,然后按下ESP32复位按钮,点击上传按钮。
上载代码后,移除IO0和GND引脚的连接。然后打开串口监视器,并将波特率更改为115200。然后,按ESP32复位按钮,它将在串口监视器上打印ESP IP地址和端口号。
现在导航至浏览器,并输入从串口监视器复制的ESP IP地址以访问视频流。它将带您到流媒体页面。要开始视频流,请单击页面底部的“Start Stream”按钮。
要使用ESP32-CAM识别人脸,首先,我们必须注册人脸。为此,请从设置中启用面部识别和检测功能,然后单击“Enroll Face”按钮。需要进行多次尝试来保存人脸。保存人脸后,它将人脸检测为subject 0,其中人脸编号为零。
注册了人脸之后,如果在视频流中识别到人脸,ESP32将使继电器模块变为高电平,并解锁门。
以上就是使用ESP32-CAM制作基于人脸识别的安全系统的方式。如果有任何问题,请随时在本帖下面进行回复。
|