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


ESP32-CAM представляет собой крошечную плату с камерой, слотом для карт microSD и микроконтроллером ESP32, и при этом она стоит менее 10 долларов. Также у нее есть возможности использования технологий Wi-Fi и Bluetooth, что делает ее отличным выбором для многих проектов тематики интернета вещей (IoT). Но работа с модулем ESP32-CAM немного осложнена тем, для загрузки в него программы необходимо использовать внешнюю плату для программирования (FTDI плату).

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

В данной статье мы рассмотрим создание системы контроля доступа с распознаванием лиц на основе модуля ESP32-CAM. Также для питания нашей схемы мы разработаем интегрированный источник питания с напряжениями 5 и 3.3 В, который будет запитываться от аккумулятора 18650. Также конструкция нашего проекта будет содержать разъемы для подключения платы FTDI с возможностью переключения напряжений между 5 и 3.3 В. Кроме того, наш проект будет содержать и множество других опций, которые могут пригодиться вам для разработки проектов интернета вещей, запитываемых от батареек/аккумуляторов.

Итак, конструкция нашего проекта будет обеспечивать:

  • доступ к контактам модуля ESP32-CAM с помощью коннекторов типа "папа" и "мама";
  • несколько контактов для напряжений 5 и 3.3 В, а также земли (Ground);
  • светодиоды для индикации подачи питания и подключения к сети интернет;
  • питание от аккумулятора 18650 с возможностью его зарядки и схемы преобразователя напряжения;
  • возможность закрепления конструкции проекта на стену;
  • возможность использования в различных проектах для распознавания лиц и обнаружения движения;
  • джампер IO0 для режима программирования.

В рассматриваемой нами системе контроля доступа на основе модуля ESP32-CAM для распознавания лиц мы будем использовать код CameraWebServer. При успешном распознавании лица его идентификатор (face ID) с именем пользователя, ассоциированным с ним, будет передаваться в документы Google (Google Sheets).

Ранее на нашем сайте мы рассматривали похожие проекты на основе модуля ESP32-CAM:

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

  1. Модуль ESP32-CAM (купить на AliExpress).
  2. Регулятор напряжения 3.3V AMS1117 (купить на AliExpress - можно купить не в виде модуля, а в виде отдельной микросхемы (от 5 до 7 рублей за штуку), но на момент публикации данной статьи не нашел на алиэкспрессе магазина с дешевой доставкой данной микросхемы).
  3. Микросхема заряда Li-Ion батарей TP4056 (купить на AliExpress).
  4. Микросхема конвертера постоянного тока (Boost Converter IC) FP6291 (купить на AliExpress).
  5. 5-пиновый коннектор Micro USB 2.0 B типа.
  6. Резисторы 100 Ом, 1 кОм (2 шт.), 1,2 кОм, 6 кОм, 48 кОм, 51 кОм (купить на AliExpress).
  7. Конденсаторы 0,1 мкФ (2 шт.) (купить на AliExpress), 10 мкФ (4 шт.), 20 мкФ (2 шт.) (купить на AliExpress).
  8. Светодиод – 4 шт. (купить на AliExpress).
  9. Катушка индуктивности 4.7µH.
  10. Диод 1N5388BRLG (купить на AliExpress - целый набор, но другой ссылки, к сожалению, не нашел на момент публикации статьи)
  11. Литиевый аккумулятор 18650.

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

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

Схема системы контроля доступа с распознаванием лиц на основе модуля ESP32-CAMПредставленная схема содержит 3 основные части:

  • схема заряда батареи;
  • схема конвертера постоянного тока (DC to DC boost converter circuit);
  • схема программирования модуля ESP32-CAM.

Схема конвертера постоянного тока используется для преобразования напряжения с 3.7v до 4.5v-6v. На зарядной стороне этой схемы расположен 5-пиновый коннектор Micro USB 2.0 B типа.

Схема заряда батареи

Схема заряда батареи

Основой данной схемы является микросхема заряда литий-ионных батарей TP4056. С ее помощью можно заряжать одиночные литий-ионные батареи в режиме постоянного тока/постоянного напряжения. Поскольку она упакована в SOP корпус и требует малого количества внешних компонентов для своей работы, то она является отличным решением для использования в носимых устройствах. Микросхемы выполняет операции заряда обрабатывая напряжение постоянного тока the 5V, получаемое через разъем Micro USB. Светодиоды в данной схеме показывают статус заряда.

Схема конвертера постоянного тока

Схема конвертера постоянного тока

Основой данной схемы является микросхема FP6291, которая работает на частоте 1 МГц и используется во многих конвертерах подобного типа, например, для получения стабильного напряжения 5V из напряжения 3V, получаемого из батареи. В нашем случае на вход этой схемы поступает напряжение с контактов батареи (+ и -), которое обрабатывается микросхемой FP6291, на выходе которой мы получаем стабильные 5V постоянного тока через стандартный USB разъем.

Схема программирования модуля ESP32-CAM

Схема программирования модуля ESP32-CAM

Данная схема состоит из модуля ESP32-CAM с одним слотом для платы FTDI и другим слотом для конвертера USB в TTL.

Изготовление печатной платы для проекта

Разработанная 3D модель печатной платы для нашего проекта показана на следующем рисунке.

Разработанная 3D модель печатной платы для нашего проекта

Gerber файлы для изготовления данной печатной платы вы можете скачать по следующей ссылке.

Заказ печатной платы на сервисе PCBWay

Для этого выполните следующую последовательность шагов.

Шаг 1. Зарегистрируйтесь на сайте https://www.pcbway.com/, затем там в своем аккаунте перейдите на вкладку PCB Prototype, на которой введите размеры вашей печатной платы, число ее слоев и количество экземпляров данной печатной платы, которое вам необходимо.

Ввод основных параметров печатной платы на сервисе PCBWay

Шаг 2. Нажмите на кнопку ‘Quote Now’ (заказать сейчас). На новой открывшейся странице вам необходимо указать ряд дополнительных параметров для изготовления печатной платы: ее тип, слои, материал, толщину и т.д. Большинство из них можно оставить значениями по умолчанию, которые предлагает сервис.

Ввод дополнительных параметров печатной платы на сервисе PCBWay

Шаг 3. Загрузите ваши Gerber файлы в сервис. PCBWAY проверит их на корректность, после чего можно переходить к оплате заказа.

Загрузка Gerber файлов в сервис PCBWAY

Сборка конструкции проекта

Спустя несколько дней после заказа изготовления печатной платы автор проекта (ссылка на оригинал приведена в конце статьи) получил ее в запечатанном пакете и остался очень доволен качеством ее изготовления. Внешний вид данной печатной платы показан на следующих рисунках:

Внешний вид изготовленной печатной платы для нашего проекта

После припаивания на нее необходимых компонентов у него получилась следующая конструкция проекта:

Внешний вид собранной конструкции проекта

Конфигурация сервиса IFTTT для передачи данных в Google Sheets

Как мы уже отмечали ранее, данные, принимаемые с модуля ESP32-CAM, мы будем передавать в документы/листы Google (Google Sheets). Для этого мы будем использовать апплеты (applets) IFTTT. Эти апплеты будут получать данные с модуля ESP32-CAM с помощью веб-хуков (webhooks) и затем передавать их в документы Google.

Сначала войдите в свой аккаунт на сервисе IFTTT (зарегистрируйтесь, если у вас там еще нет аккаунта) и выполните поиск ‘Webhooks’.

Поиск ‘Webhooks’ в сервисе IFTTT

Далее, чтобы получить приватный ключ, нажмите на ‘Documentation’. Скопируйте этот ключ куда-нибудь в надежное место, в дальнейшем он нам понадобится в коде программы.

Получение приватного ключа в сервисе IFTTT

После получения приватного ключа мы можем создать апплет используя веб-хуки (Webhooks) и документы Google. Для создания апплета нажмите на кнопку ‘Create’ в правом верхнем углу экрана.

Начало создания апплета в сервисе IFTTT

В следующем окне выберите "If This Then That".

Выбор пункта "If This Then That" в сервисе IFTTT

В поле ‘This’ мы будем использовать веб-хуки для получения веб-запросов (web requests) от модуля ESP32-CAM.

Выбор веб-хуков для получения веб-запросов от модуля ESP32-CAM в сервисе IFTTT

Выберите триггер ‘Receive a Web Request’ и затем введите в качестве имени события "attendance" и затем нажмите на ‘Create Trigger.’ (создать триггер).

Выбор триггера ‘Receive a Web Request’ в сервисе IFTTT

После этого нажмите на ‘Then That’, выполните поиск ‘Google Sheets’ и выберите иконку документа Google.

Выбор ‘Google Sheets’ в сервисе IFTTT

На следующем шаге выберите действие “Add a row to spreadsheet” (добавить строку на лист).

Добавление новой строки на лист в ‘Google Sheets’

После этого заполните поля создаваемого действия. Дайте имя листу, укажите путь к каталогу Google Drive и оставьте в поле "Formatted row" значение по умолчанию. Если вы оставите поле пути к каталогу Google Drive пустым, то сервис IFTTT будет сохранять ваш лист в каталог с именем "IFTTT" в вашем каталоге Google Drive. И, наконец, выберите “Create action” (создать действие) из выпадающего меню.

Заполнение настроек созданного действия в сервисе IFTTT

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

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Ранее распознавание лиц с помощью модуля ESP32-CAM мы рассматривали в следующей статье на нашем сайте. Здесь мы немного модифицируем рассмотренный в той статье код программы для отметки доступа в зависимости от распознанного лица. Полный код программы разделен на 3 части. Первая (основная) часть кода включает работу с камерой, в ней модуль ESP32-CAM получает данные о распознанном листе и передает их в документы Google. Остальные две части программы используются для работы с веб-страницей и индексом камеры.

Первым делом в программе мы подключим используемые библиотеки. В нашем случае библиотека "esp_camera.h" используется для инициализации камеры с целью последующего распознавания лиц, а библиотека "WiFi.h" используется для подключения модуля ESP32-CAM к сети Wi-Fi.

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

Далее укажем параметры для доступа к сети WiFi – ее имя (идентификатор) и пароль.

Затем нам необходимо указать уникальный URL с сервиса IFTTT. Для этого войдите в свой аккаунт на сервисе IFTTT, в раздел "webhooks documentation" и скопируйте ссылку, которая приведена в разделе "triggering an event". После этого вставьте данную ссылку в код программы.

Получение уникального URL с сервиса IFTTT

Мы не будем вносить никаких изменений в функцию void setup(), поэтому оставим ее по умолчанию. На следующем шаге мы будем получать идентификаторы лиц (face ids) с веб-страницы и обновлять лист доступа в соответствии с полученными данными. Мы будем назначать различные имена в соответствии с полученными идентификаторами (IDs) и будем передавать эти имена в документы google (google sheets).

Тестирование работы системы доступа с распознаванием лиц

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

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

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

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

Определение IP адреса и номер порта для модуля ESP32-CAM

После этого введите определенный IP адрес модуля в адресной строке браузера. В результате этого откроется окно с видео трансляцией с модуля. Чтобы начать видео трансляцию с модуля нажмите кнопку ‘Start Stream’ внизу данной страницы.

Веб-страница настроек камеры модуля ESP32-CAM

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

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

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

Тестирование работы системы доступа с распознаванием лиц

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

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

Код файла app_httpd.cpp

Код файла camera_index.h

Код файла CameraWebServer.ino

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

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

(Проголосуй первым!)
Загрузка...
346 просмотров

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

Ваш адрес email не будет опубликован.