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