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


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

Внешний вид дверного замка с распознаванием лиц на основе модуля 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 представлена на следующем рисунке.

Схема дверного замка с распознаванием лиц на основе модуля 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.

Выбор пункта меню File> Preferences в Arduino IDE

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

Добавление поддержки платы ESP32 в Arduino IDE

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

Выбор пункта меню Tools > Board > Boards Manager в Arduino IDE

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

Установка библиотеки “ESP32 by Espressif Systems“ в Arduino IDE

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

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

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

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

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

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

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

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

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

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

Изменение настроек в Arduino IDE для загрузки программы в модуль ESP32-CAM

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

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

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

Отображение в окне монитора последовательной связи IP адреса модуля ESP32

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

Настройки камеры модуля ESP32-CAM

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

Включение настроек для обнаружения и распознавания лиц в модуле ESP32-CAM

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

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

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

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

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

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

(1 голосов, оценка: 5,00 из 5)
Загрузка...
3 991 просмотров

Комментарии

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

  1. Добрый вечер
    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. Скорее всего это опечатка и эту строку нужно удалить из программы.
      Если после удаления этой строки у вас программа не заработает скорее всего у вас используется другой модуль камеры и вам в этом случае нужно раскомментировать другую строку с заданием модели камеры

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

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

  3. помогите пожалуйста, после загрузки на плату и нажатия кнопки обновления вместо строчек с 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)
      и др.
      Сложно сказать какое из этих решений вам поможет, нужно пробовать.

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

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

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

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

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

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

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

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

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

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