风筝
发表于: 2020-12-30 11:03:23 | 显示全部楼层

如今,无论是数据安全还是居家安全,安全性都是每个人最关心的问题。随着技术的进步和物联网的日益普及,近来数字门锁已变得非常普遍。数字锁不需要任何物理钥匙,但是它可以使用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的电源。

Solenoid-Door-Lock.jpg


电路原理图

ESP32-CAM人脸识别门禁系统电路图如下:

Face-Recognition-Door-Lock-Circuit-Diagram.png

上面的电路集合了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处于闪烁模式。


根据电路图连接硬件后,其效果应如下所示:

Face-Recognition-Door-Lock-System.jpg


在Arduino IDE上安装ESP32开发板

本文中,我们将使用Arduino IDE对ESP32-CAM进行编程。因此,首先,在Arduino IDE上安装ESP32插件。


要将ESP32板安装在Arduino IDE中,请转到File> Preferences

Install-ESP32-Board-on-Arduino-IDE.jpg


接下来,复制以下链接并将其粘贴到“Additional Board Manager URLs”字段中,如下图所示。然后,单击“OK”按钮:https://dl.espressif.com/dl/package_esp32_index.json

Additional-Board-Manager-URL.jpg

现在转到Tools > Board > Boards Manager

ESP32-Arduino-IDE-Programming.jpg


在Board Manager中,搜索ESP32并安装“ESP32 by Espressif Systems”。

ESP32-Library.jpg


代码说明

完整的代码分为四个部分。其中一个是是相机和继电器模块的主要代码,其中ESP32根据人脸识别来锁定或解锁门,其他三个代码分别用于网页、相机索引和相机引脚。在这里,我们解释了代码的一些重要部分。


首先包含所有的库文件。

  1. #include "esp_camera.h"
  2. #include <WiFi.h>
  3. #include "camera_pins.h"
复制代码

在下一行中,取消注释与ESP32一起使用的照相机模块。在代码中,定义了五个不同的相机型号。在本文中,我们使用的是AI-THINKER型号。

  1. //#define CAMERA_MODEL_WROVER_KIT
  2. //#define CAMERA_MODEL_ESP_EYE
  3. //#define CAMERA_MODEL_M5STACK_PSRAM
  4. //#define CAMERA_MODEL_M5STACK_WIDE
  5. #define CAMERA_MODEL_AI_THINKER
复制代码

之后,将网络凭据代入以下变量:

  1. const char* ssid = "Wi-Fi Name";
  2. const char* password = "Wi-Fi password";
复制代码

然后定义连接继电器模块的引脚。在定义的时间间隔内将门解锁后,我们将使用millis()函数锁定门,此处为5秒。

  1. #define relay 4
  2. long prevMillis = 0;
  3. int interval = 5000;
复制代码

在setup()函数中,以115200的波特率初始化串口监视器,以进行调试。然后,在接下来的几行代码中,定义继电器模块的引脚模式,并将继电器初始化为低电平。

  1. void setup() {
  2.   Serial.begin(115200);
  3.   pinMode(relay, OUTPUT);
  4.   digitalWrite(relay, LOW);
复制代码

loop()函数内部,检查人脸是否与注册的人脸匹配。如果匹配,则将门解锁5秒钟,然后在5秒钟后再次锁定门。

  1. void loop() {
  2.     if (matchFace == true && activeRelay == false){
  3.       activeRelay = true;
  4.       digitalWrite (relay, HIGH);
  5.       prevMillis = millis();
  6.     }
  7.     if(activeRelay == true && millis()- prevMillis > interval){
  8.       activeRelay = false;
  9.       matchFace = false;
  10.       digitalWrite(relay, LOW);
  11.     }
复制代码

测试ESP32-CAM人脸识别门禁系统

最后,上传代码,将FDTI板连接到您的笔记本电脑,然后电路板选择“ ESP32 Wrover Module”。另外,如下图所示更改其他设置:

ESP32-Wrover-Module.jpg

在上传代码之前,别忘了将IO0引脚连接到GND,然后按下ESP32复位按钮,点击上传按钮。


上载代码后,移除IO0和GND引脚的连接。然后打开串口监视器,并将波特率更改为115200。然后,按ESP32复位按钮,它将在串口监视器上打印ESP IP地址和端口号。

ESP-IP-Address.jpg


现在导航至浏览器,并输入从串口监视器复制的ESP IP地址以访问视频流。它将带您到流媒体页面。要开始视频流,请单击页面底部的“Start Stream”按钮。

ESP32-CAM-Testing.jpg


要使用ESP32-CAM识别人脸,首先,我们必须注册人脸。为此,请从设置中启用面部识别和检测功能,然后单击“Enroll Face”按钮。需要进行多次尝试来保存人脸。保存人脸后,它将人脸检测为subject 0,其中人脸编号为零。

Face-Recognition-using-ESP32-CAM.jpg


注册了人脸之后,如果在视频流中识别到人脸,ESP32将使继电器模块变为高电平,并解锁门。


以上就是使用ESP32-CAM制作基于人脸识别的安全系统的方式。如果有任何问题,请随时在本帖下面进行回复。


跳转到指定楼层
xy1306940951
发表于: 2021-3-29 14:09:03 | 显示全部楼层

楼主,matchFace这个变量是在哪里定义的
回复

使用道具 举报

lx123456
发表于: 2021-4-26 16:29:36 | 显示全部楼层

xy1306940951 发表于 2021-3-29 14:09
楼主,matchFace这个变量是在哪里定义的

我也想问一下,matchFace这个变量是在哪里定义的
回复

使用道具 举报

lx123456
发表于: 2021-4-27 19:08:41 | 显示全部楼层

matchFace怎么定义
回复

使用道具 举报

lx123456
发表于: 2021-4-27 19:18:31 | 显示全部楼层

代码说明在哪里
回复

使用道具 举报

风筝
发表于: 2021-4-27 20:49:05 | 显示全部楼层

工程的整个代码如下: ESP32-FaceCAM-Door-lock-system.rar (1.47 KB, 下载次数: 224)
回复

使用道具 举报

桃子呀
发表于: 2022-3-17 18:17:40 | 显示全部楼层

风筝 发表于 2021-4-27 20:49
工程的整个代码如下:

请问上面的仿真图是怎么画的啊,在线等,急!!
回复

使用道具 举报

yccccccc
发表于: 2022-11-27 22:22:15 | 显示全部楼层

请问编译成功但显示不出ip怎么办啊
回复

使用道具 举报

penny
发表于: 2023-12-8 16:40:39 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 54 | 回复: 107



手机版|

GMT+8, 2024-4-25 13:06 , Processed in 0.247547 second(s), 9 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表