Рубрики
Проекты на ESP32

Дверной замок с распознаванием лиц на основе модуля ESP32-CAM

Безопасность в настоящее время является одной из ключевых проблем человечества. С развитием технологий достаточно важную роль в обеспечении безопасности помещений различного назначения стали играть цифровые замки. Существующие цифровые замки могут работать на различных физических принципах: радиочастотная идентификация (RFID), распознавание лиц, отпечатки пальцев и т.д. В данной статье мы рассмотрим создание умного дверного замка с распознаванием лиц на основе модуля ESP32-CAM.

AI-Thinker ESP32-CAM представляет собой дешевый модуль с очень маленькой камерой OV2640 и слотом для карт micro SD. Он содержит чип ESP32 S с поддержкой технологий Wi-Fi и Bluetooth, двухъядерным 32-битным микропроцессором LX6 с 7-уровневой конвейерной архитектурой. Более подробно данный модуль мы уже рассматривали на нашем сайте в статьях про распознавание лиц на основе модуля ESP32-CAM и умный дверной звонок с камерой на основе модуля ESP32-CAM.

Необходимые компоненты

  1. Модуль ESP32 CAM (купить на AliExpress).
  2. Плата FTDI для программирования модуля (купить на AliExpress).
  3. Модуль реле (купить на AliExpress).
  4. Замок с электромагнитным управлением.
  5. Соединительные провода.

Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158

Замок с электромагнитным управлением (Solenoid Lock)

Принцип работы замка с электромагнитным управлением основан на электромеханическом механизме запирания. Он имеет личинку со скошенным концом и монтажным кронштейном. При подаче питания на замок постоянный ток создает магнитное поле, которое задвигает личинку внутрь замка и, таким образом, дверь открывается. Когда подача питания прекращается личинка высвобождается и возвращается в исходное состояние, тем самым закрывая дверь. В закрытом состоянии замок не потребляет электроэнергии. Чтобы замок с электромагнитным управлением сработал, необходим источник питания обеспечивающий 12V @ 500mA.

Ранее подобный замок с электромагнитным управлением мы рассматривали в статье про замок с электромагнитным управлением на основе Arduino и радиочастотной идентификации.

Схема проекта

Схема дверного замка с распознаванием лиц на основе модуля ESP32-CAM представлена на следующем рисунке.

Плата FTDI используется для загрузки кода программы в модуль ESP32-CAM поскольку у данного модуля нет собственного USB разъема для подключения к компьютеру. Модуль реле используется для отпирания и запирания замка с электромагнитным управлением. Контакты VCC и GND платы FTDI и модуля реле подключены к контактам Vcc и GND модуля ESP32-CAM. Контакты TX и RX платы FTDI подключены к контактам RX и TX модуля, а контакт IN модуля реле подключен к контакту IO4 модуля ESP32-CAM.

Полная схема соединений проекта представлена в следующей таблице.

ESP32-CAM Плата FTDI
5V VCC
GND GND
UOR TX
UOT RX
ESP32-CAM Модуль реле
5V VCC
GND GND
IO4 IN

Примечание: перед загрузкой программы в модуль ESP32-CAM замкните его контакт IO0 на землю. Контакт IO0 определяет, находится ли модуль в режиме загрузке программы или нет. Когда GPIO 0 подключен к земле, модуль ESP32 находится в режиме загрузки.

Внешний вид собранной конструкции проекта показан на следующем рисунке.

Установка платы ESP32 в Arduino IDE

В нашем проекте мы будем программировать модуль ESP32-CAM с помощью Arduino IDE. Для этого необходимо добавить поддержку данного модуля в Arduino IDE.

Вначале в Arduino IDE выберите пункт File> Preferences.

В открывшемся окне в поле “Additional Board Manager URLs” скопируйте ссылку https://dl.espressif.com/dl/package_esp32_index.json. После этого нажмите на кнопку “OK”.

Затем откройте пункт меню Tools > Board > Boards Manager.

В открывшемся менеджере библиотек выполните поиск ESP32 и установите библиотеку “ESP32 by Espressif Systems“.

Объяснение программы для модуля ESP32

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
Ранее на нашем сайте мы уже рассматривали основы распознавания лиц с помощью модуля ESP32-CAM. В этом проекте мы модифицируем рассмотренный в той статье код программы.

Первым делом мы в программе подключим используемые библиотеки.

Среди следующих строк кода раскомментируйте ту, которая соответствует используемой вами модели модуля. В нашем случае мы используем модель AI-THINKER.

После этого укажем параметры доступа к сети Wi-Fi – ее имя и пароль.

Далее укажем контакт, к которому подключен модуль реле. Мы будем использовать функцию millis() для того чтобы автоматически закрывать дверь после того, как она была открыта некоторый интервал времени (5 секунд).

В функции setup() мы инициализируем последовательную связь со скоростью 115200 бод для целей отладки. Также в этой функции мы зададим режим работы контакта, к которому подключен модуль реле, на вывод данных, и подадим на этот контакт уровень low.

Внутри функции loop() мы будем проверять соответствует ли проверяемое лицо ранее сохраненному лицу. Если да, то разблокируем (открываем) дверь на 5 секунд и затем снова ее закрываем.

Тестирование работы проекта

Соберите схему проекта, подключите плату FDTI к компьютеру/ноутбуку, в качестве платы в Arduino IDE выберите ‘ESP32 Wrover Module’. Измените ряд других настроек как показано на следующем рисунке.

Не забудьте подключить контакт IO0 к земле (GND) перед загрузкой программы в модуль, также нажмите на модуле ESP32 кнопку сброса (reset button), после этого нажимайте на кнопку загрузки программы в Arduino IDE.

Примечание: если у вас возникли ошибки при загрузке программы в модуль, проверьте подключен ли контакт IO0 к земле и правильные ли выбраны настройки в пункте меню Tools в Arduino IDE.

После загрузки кода программы в модуль отключите IO0 от земли (GND). Откройте окно монитора последовательной связи и измените в нем скорость на 115200. После этого нажмите кнопку сброса на модуле ESP32, в результате чего в окно монитора последовательной связи будет выведен IP адрес модуля ESP32 и номер порта, к которому он подключен.

Затем в адресной строке браузера введите определенный IP адрес модуля ESP32 – после этого вы получите доступ к настройкам камеры модуля. Вас перебросит на страницу видео трансляции камеры. Если вы хотите начать трансляцию (streaming), нажмите на кнопку ‘Start Stream’ внизу страницы.

Чтобы распознавать лица с помощью модуля ESP32-CAM сначала в его память мы должны записать лица людей, которым разрешен доступ в помещение. Для этого выберите в настройках пункт «Face recognition and detection» и затем нажмите на кнопку «Enroll Face». Произойдет несколько попыток сохранения лица. После того как сохранение лица произойдет, этому лицу присвоится имя subject 0, где 0 будет обозначать номер лица.

После захвата и сохранения необходимых лиц, если лицо будет распознаваться в видео потоке, то модуль ESP32-CAM будет подавать на реле уровень high и электромагнитный замок будет открывать дверь.

Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы (скетча)

Видео, демонстрирующее работу проекта

Источник статьи

16 ответов к “Дверной замок с распознаванием лиц на основе модуля ESP32-CAM”

Добрый вечер
1 что то я не понимаю мы устанавливаем ESP32 Wrover Module а расскоментируем в коде строку CAMERA_MODEL_AI_THINKER а почему сражу не установить Ai Thinker ESP32-CAM?
2 какую библиотеку надо установить чтобы появился файл camera_pin.h
3. а что означает вот эта процедура не содержащая кода void startCameraServer();
вообщем по итогу имеем ошибки
sketch\face_cam_1.ino.cpp.o:(.literal._Z5setupv+0x38): undefined reference to startCameraServer()'
sketch\face_cam_1.ino.cpp.o: In function
setup()’:
D:\ProgramingProject\Arduino\face_cam_1/face_cam_1.ino:91: undefined reference to `startCameraServer()’
collect2.exe: error: ld returned 1 exit status
Несколько библиотек найдено для «WiFi.h»
Используется: C:\Users\Harry\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.5\libraries\WiFi
Не используется: D:\ProgramingProject\Arduino\libraries\WiFiEspAT
Не используется: C:\Program Files (x86)\Arduino\libraries\WiFi
Не используется: D:\ProgramingProject\Arduino\libraries\WiFi
exit status 1
Ошибка компиляции для платы AI Thinker ESP32-CAM.
может подскажете что это?

Добрый день.
1. ESP32 Wrover Module — это целое семейство модулей, у каждой конкретной модели этого семейства свой особенный модуль камеры, поэтому раскомментировать нужно именно ту строчку кода, которая соответствует модулю камеры на вашей модели модуля.
2. Не в курсе, к сожалению, данного вопроса.
3. Скорее всего это опечатка и эту строку нужно удалить из программы.
Если после удаления этой строки у вас программа не заработает скорее всего у вас используется другой модуль камеры и вам в этом случае нужно раскомментировать другую строку с заданием модели камеры

Добрый день, хочу дополнительно подключить светодиод к контроллеру, чтобы он светился в функции loop() постоянно, используя любой пин, однако он загорается только при нажатии кнопки RESET(

Добрый вечер. Ну если он должен светиться постоянно вы можете зажечь его в функции setup()

помогите пожалуйста, после загрузки на плату и нажатия кнопки обновления вместо строчек с IP выдаёт
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:9720
ho 0 tail 12 room 4
load:0x40080400,len:6352
entry 0x400806b8

[E][camera.c:1049] camera_probe(): Detected camera not supported.
[E][camera.c:1249] esp_camera_init(): Camera probe failed with error 0x20004

На этой странице приведена самая подробная информация в сети по решению данной проблемы. Предлагают разные пути ее решения:
— замена USB кабеля;
— переключение на питание 5V вместо 3.3V;
— задание правильной конфигурации контактов ввода/вывода;
— смена модели камеры в скетче (например, #define CAMERA_MODEL_WROVER_KIT)
и др.
Сложно сказать какое из этих решений вам поможет, нужно пробовать.

Здравствуй хороший человек!
Вопрос, как поменять номер порта http 80 на свой?
В esp_http_server.h есть server_port при замене на другой
страница грузится, но не идёт видео трафик.

Добрый день. Насколько я знаю, если вы используете роутер, то нужно настроить перенаправление трафика на ваш порт еще и на нем

Да, если заходить с сети интернет 80 и 81 нужно перенаправить на локальный хост, а вот с другими портами страница грузиться, а видео трафик не идёт.

Честно говоря, тогда точно не знаю. Можно в исходных кодах библиотеки попробовать посмотреть может там где то жестко порт 81 прописывается. И если это так, то тогда просто в программе с помощью такой же команды как в библиотеке изменить номер порта

при компиляции скетча выдало ошибку.
camera_pins.h: No such file or directory
в чем может быть проблемма ?

Может быть, вы не в то место установили библиотеку для работы с модулем ESP32. Попробуйте через поиск на компьютере поискать где у вас находится файл camera_pins.h

Не работает. Не возможно зарегистрировать лицо, кнопка регистрации не дает результата…вообще не понятно, куда сохраняются снимки — на флешку или во внутреннюю память

Точно не знаю поскольку лично этот проект не собирал, но оно определенно будет зависеть от того качества, в котором вы будете сохранять фотографии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *