Использование модуля камеры ESP32 для видео трансляции и распознавания лиц


В настоящее время системы распознавания лиц (face recognition) получают все более широкое распространение, начиная от систем безопасности и заканчивая различными системами контроля доступа.

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

В данной статье мы рассмотрим создание системы распознавания лиц на основе модуля ESP32-CAM (ESP32 Camera module), которую можно использовать в качестве системы безопасности, предотвращающей проникновение неавторизованных лиц в охраняемое помещение. ESP32-CAM представляет собой очень маленький модуль камеры с чипом ESP32-S. На основе данного модуля мы можем достаточно просто создать систему распознавания лиц, не прибегая к каким то "тяжеловесным" технологиям как, например, система распознавания лиц на основе платы Raspberry Pi с модулем камеры и библиотеки OpenCV.

Общие сведения о модуле ESP32-CAM

Внешний вид модуля ESP32-CAM

Модуль ESP32-CAM содержит в своем составе чип ESP32-S, очень маленького размера камеру OV2640 и слот для карт памяти формата micro SD, на которых можно хранить снимки с камеры и различные файлы. Модуль ESP32-CAM находит широкое применение в различных проектах интернета вещей (IoT). Он может использоваться в системах обнаружения лиц в офисах, школах и других охраняемых зонах, также он может использоваться для беспроводного мониторинга, беспроводной идентификации по QR коду и многих других приложениях.

Модуль ESP32-CAM можно программировать с помощью ESP-IDF или Arduino IDE. Также модуль содержит несколько контактов ввода/вывода общего назначения (GPIO pins) для подключения внешних устройств. Модуль ESP32-CAM не содержит USB разъема, поэтому для его программирования необходима плата FTDI.

Назначение контактов (распиновка) модуля ESP32-CAM

Особенности модуля ESP32-CAM:

  • самый маленький SoC модуль с поддержкой 802.11b/g/n Wi-Fi BT;
  • 32-битный процессор с низкой потребляемой мощностью;
  • тактовая частота процессора до 160MHz, суммарная вычислительная мощность до 600 DMIPS;
  • встроенная 520 KB SRAM, внешняя 4MPSRAM;
  • поддержка UART/SPI/I2C/PWM/ADC/DAC;
  • поддержка камер OV2640 и OV7670, встроенная флэш-лампа;
  • загрузка изображений через Wi-Fi;
  • поддержка TF карт;
  • поддержка нескольких типов спящих режимов;
  • можно установить Lwip и FreeRTOS;
  • поддержка режимов Wi-Fi STA/AP/STA+AP;
  • "умное" конфигурирование с помощью технологии AirKiss;
  • поддержка локальных и удаленных обновлений прошивки (FOTA).

Технические характеристики модуля ESP32-CAM:

  • SPI Flash: по умолчанию 32Mbit;
  • RAM: 520KB SRAM+ 4M PSRAM;
  • поддержка TF карт: максимум 4G;
  • поддержка интерфейсов UART, SPI, I2C, PWM;
  • выходные форматы изображений: JPEG, BMP, GRAYSCALE;
  • количество портов (IO): 9;
  • напряжение питания: 5V.

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

  1. Модуль ESP32-CAM (купить на AliExpress).
  2. Плата FTDI (купить на AliExpress).

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

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

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

Как видите, схема очень проста. Достаточно просто подключить модуль ESP32-CAM к плате FTDI для его программирования с компьютера.

Контакты Vcc и GND модуля ESP32-CAM подключены к контактам Vcc и GND платы FTDI. Контакты Tx и Rx модуля ESP32-CAM подключены к контактам Rx и Tx платы FTDI.

Примечание: перед загрузкой кода программы в модуль замкните контакт IO0 модуля на землю. Когда контакт GPIO 0 модуля замкнут на землю (GND) – модуль находится в режиме загрузки программы (flashing mode), если он не замкнут на землю – то модуль не находится в режиме загрузки.

После загрузки программы в модуль ESP32-CAM можно отключить от него плату FTDI и подать на модуль питание 3.3V используя регулятор напряжения 7805. В результате у вас должна получиться конструкция примерно следующего вида:

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

Установка модуля ESP32-CAM в Arduino IDE

Мы будем программировать модуль ESP32-CAM с помощью Arduino IDE. Для этого мы в Arduino IDE должны установить дополнение (add-on) для работы с данным модулем.

Для этого в Arduino IDE выберите пункт меню File> Preferences.

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

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

Добавление поддержки модуля ESP32-CAM в Arduino IDE

Далее в Arduino IDE выберите пункт меню Tools > Board > Boards Manager.

Выбор менеджера плат в Arduino IDE

В открывшемся менеджера плат (Board Manager) выполните поиск ESP32, после чего из результатов поиска установите библиотеку “ESP32 by Espressif Systems“.

Установка в Arduino IDE библиотеки для работы с модулем ESP32

Код веб-сервера для камеры модуля ESP32

У нас в Arduino IDE уже есть пример кода для камеры модуля ESP32 чтобы с ее помощью осуществлять видео трансляции (video streaming) и распознавание лиц (face recognition). Откройте этот пример выбрав пункт меню File > Examples > ESP32 > Camera и из него открыв пример CameraWebServer.

Открытие в Arduino IDE примера для работы с модулем кмеры ESP32

Но прежде чем загружать код этого примера в свой модуль измените в нем параметры доступа к сети Wi-Fi (имя и пароль) на свои.

После этого в программе инициализируйте модуль камеры ESP32. В представленном примере представлены примеры инициализации 5 модулей камеры, для нашего проекта раскомментируйте строку “CAMERA_MODEL_AI_THINKER” и оставьте в комментариях остальные 4 строки. Теперь наш код программы готов к загрузке в модуль.

Для загрузки кода программы в модуль ESP32-CAM подключите плату FDTI в компьютеры и в качестве своей платы (модуля) выберите ‘ESP32 Wrover Module’. Также измените другие настройки как показано на следующем рисунке.

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

Перед загрузкой программы в модуль ESP32-CAM нажмите на нем кнопку сброса (reset button) и затем нажмите на кнопку upload в Arduino IDE.

Примечание: если во время загрузки кода программы у вас появились сообщения об ошибках, убедитесь в том, что контакт IO0 замкнут на землю (GND) и что вы выбрали правильные настройки в меню Tools.

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

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

Теперь, чтобы получить доступ к видеотрансляции камеры, откройте браузер и введите в нем в строке адреса IP адрес вашего модуля ESP. После этого вас должно перебросить на страницу с видео трансляцией (streaming page). Чтобы начать видео трансляцию с модуля камеры ESP32 нажмите на кнопку ‘Start Stream’ внизу страницы.

Начало видео трансляции с модуля ESP32-CAM

Изменить качество видео трансляции можно изменяя параметр ‘Resolution’ на странице видео трансляции. Также вместо видео вы можете включить показ картинки нажав на кнопку ‘Get Still’, но используемый нами код примера не содержит опции для сохранения этих картинок.

После того как мы протестировали видео трансляцию с модуля ESP32-CAM, можно приступить к тестированию обнаружения лиц и их распознавания. Для этого в настройках выберите опции обнаружения лиц (detection) и их распознавания (Face recognition) как показано на следующем рисунке.

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

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

Для того чтобы использовать распознавание лиц вы сначала должны добавить/внести в список лицо. Вы можете добавить новое лицо в систему нажав на опцию ‘Enroll Face’. Произойдет несколько попыток сохранения лица. После сохранения лица система будем обнаруживать это лицо под именем subject 0 и после этого его можно будет использовать в нашей системе безопасности.

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

В следующем пункте приведен код программы, также его можно скачать по следующей ссылке.

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

Библиотеку esp_camera.h можно скачать по следующей ссылке (либо самостоятельно можете скачать ее с github'а).

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

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

Комментарии

Использование модуля камеры ESP32 для видео трансляции и распознавания лиц — 6 комментариев

  1. 1 нет библиотеки esp_camera.h /\скачивал с гетХаба но её ардуино Айди не воспринимает
    2 после загрузки плата стала нагреваться в руках нельзя держать, ни при подключении питания от ПК ни от аккумулятора 3.5В
    3 и без библиотеки которая указана в заголовке ничего не работает пожалуйста если она у вас есть разместите её архивом, без ссылок на ГетХаб там всё меняется каждый день, новые названия и папки с дополнениями

    • Разместил перед кодом ссылку на скачивание этой библиотеки, но мне кажется с гитхаба ее скачивать все же лучше потому что там вы скачаете самую свежую версию библиотеки, я же свою ссылку на скачивание часто обновлять не смогу. Гитхаб для того и создан ведь чтобы у конечных пользователей не болела голова насчет того где же скачать самую свежую версию библиотеки

  2. Не знаю, как у вас это работает, у меня ничего работает, не работает, у вас есть здесь везде отметки, начало установки на библиотеки, где вы взяли эти библиотеки, пожалуйста, загрузите на своём сайте архивы этих библиоте, потому что скачиваешь с. Там вообще нет таких названий папок, просто это не работает.

  3. Добрый день! А Вы можете сделать камеру смартфона (Андроид) выносной? Цель : извлечь основной модуль камеры из смартфона, и соединить проводом 1-1, 5 метра. Варианты доп камеры блютуз, вай фай, USB - не подходят. Есть приложения которые работают только с основной камерой. Если это возможно, напишите на электронную почту, заранее спасибо.

    • Здравствуйте. Нет, к сожалению не занимался этой проблематикой, не могу подсказать по этому вопросу ничего дельного

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

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