Использование модуля камеры ESP32 для видео трансляции и распознавания лиц
В настоящее время системы распознавания лиц (face recognition) получают все более широкое распространение, начиная от систем безопасности и заканчивая различными системами контроля доступа.
В данной статье мы рассмотрим создание системы распознавания лиц на основе модуля ESP32-CAM (ESP32 Camera module), которую можно использовать в качестве системы безопасности, предотвращающей проникновение неавторизованных лиц в охраняемое помещение. ESP32-CAM представляет собой очень маленький модуль камеры с чипом ESP32-S. На основе данного модуля мы можем достаточно просто создать систему распознавания лиц, не прибегая к каким то «тяжеловесным» технологиям как, например, система распознавания лиц на основе платы Raspberry Pi с модулем камеры и библиотеки OpenCV.
Общие сведения о модуле 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:
- самый маленький 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.
Необходимые компоненты
Схема проекта
Схема системы распознавания лиц на основе модуля 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.
Preferences в Arduino IDE» src=»https://microkontroller.ru/wp-content/uploads/2022/02/preferences-to-install-esp32-board-on-arduino-ide.png» alt=»Выбор пункта меню File> Preferences в Arduino IDE» width=»300″ height=»444″ srcset=»https://microkontroller.ru/wp-content/uploads/2022/02/preferences-to-install-esp32-board-on-arduino-ide.png 300w, https://microkontroller.ru/wp-content/uploads/2022/02/preferences-to-install-esp32-board-on-arduino-ide-203×300.png 203w» sizes=»(max-width: 300px) 100vw, 300px»/>
Затем в открывшемся окне в поле “Additional Board Manager URLs” вставьте строку https://dl.espressif.com/dl/package_esp32_index.json как показано на рисунке ниже. После этого нажмите кнопку “OK”.
Далее в Arduino IDE выберите пункт меню Tools > Board > Boards Manager.
В открывшемся менеджера плат (Board Manager) выполните поиск ESP32, после чего из результатов поиска установите библиотеку “ESP32 by Espressif Systems“.
Код веб-сервера для камеры модуля ESP32
У нас в Arduino IDE уже есть пример кода для камеры модуля ESP32 чтобы с ее помощью осуществлять видео трансляции (video streaming) и распознавание лиц (face recognition). Откройте этот пример выбрав пункт меню File > Examples > ESP32 > Camera и из него открыв пример CameraWebServer.
Но прежде чем загружать код этого примера в свой модуль измените в нем параметры доступа к сети Wi-Fi (имя и пароль) на свои.
ESP32-CAM ov2640, потоковое видео в среде Arduino IDE.
Эта статья представляет собой краткое руководство по началу работы для платы ESP32-CAM. Я расскажу как настроить веб-сервер потокового видео менее, чем за 5 минут с помощью Arduino IDE.
Примечание: в этой статье я использую пример из библиотеки arduino-esp32, но не рассматриваю как его изменить.
ESP32-камера — это очень маленький модуль камеры с чипом ESP32-S, который стоит около $ 10. Помимо камеры OV2640 и нескольких GPIO для подключения периферийных устройств, он имеет слот для карт microSD, который может быть полезен для хранения изображений, сделанных с помощью камеры, или хранения файлов.
Основные характеристики ESP32-CAM:
Беспроводной модуль — ESP32-S WiFi 802.11 b/g/n + модуль Bluetooth;
Внешнее хранилище — слот для карт micro- SD ёмкостью до 4 ГБ;
Поддержка камер OV2640 (продаётся с платой) или OV7670;
Формат изображения — JPEG (только OV2640), BMP, оттенки серого;
Контакты – 16 с интерфейсами UART, SPI, I2C, PWM
Напряжение питания — 5 В;
Потребляемая мощность:
- при выключенной вспышке — 180 мА;
- при включенной вспышке — 310 мА;
- глубокий сон — 6 мА;
- модем-сон — 20 мА;
- лёгкий сон — 6,7 мА.
Размеры — 40,5 х 27 х 4,5 мм
Температурный диапазон:
- рабочий: 20 – 85 ℃;
- хранение: -40 — 90 ℃ при 90% относительной влажности.
Карты памяти на 4 Гб не было под рукой, поэтому проверить не получилось. Ставил на 16 Гб. Не сохраняет.
На следующем рисунке показаны выводы ESP32-CAM.
Есть три вывода GND и два вывода для питания: 3.3 V, либо 5V.
GPIO 1 и GPIO 3 — это последовательные контакты. Вам нужны эти контакты, чтобы загрузить код на вашу плату. Кроме того, GPIO 0 играет важную роль, поскольку он определяет, находится ли ESP32 в режиме программирования или нет. Когда GPIO 0 подключен к GND, ESP32 находится в режиме программирования.
Для программирования ESP32-камеры понадобятся следующие компоненты:
Приступим к установке, настройке необходимого ПО и прошивке ESP32. Разделим вс ё на несколько этапов:
1. Установка дополнения ESP32
В этом примере я использую Arduino IDE для программирования платы ESP32-CAM. Установите Arduino IDE, и настройте работу с ESP32. Если этого у вас не сделано, воспользуетесь следующей инструкцией:
2. Пример Кода CameraWebServer
В среде Arduino IDE выберите пример для работы с камерой для этого перейдите:
Файл > Примеры > ESP32 > Camera>CameraWebServer
Откроется пример скетча работы с камерой ESP32:
Если вы не можете найти данный пример, то можете его скачать с нашего сайта. Внизу статьи есть ссылка для скачивания материала. Внимание! Для того, чтобы скачать файлы с сайта вам нужно зарегистрироваться.
После загрузки распакуйте папку и откройте файл скетча для esp32 cam ov2640: CameraWebServer.ino.
Перед загрузкой прошивки в модуль ESP32 CAM необходимо указать ваши данные для подключения к Wi-Fi сети.
Затем убедитесь, что вы выбрали правильный модуль камеры. В данном случае используйте модель AI-THINKER Model. Для этого закомментируйте все другие модели и раскомментируйте указанную ниже:
Теперь код готов к загрузке на вашу ESP32.
3. Прошивка ESP32-CAM
Для прошивки я использую самый недорогой TTL программатор. И всё прошивается и работает отлично.
Подключаю всё вот по такой схеме:
Важно! GPIO 0 должен быть подключен к GND, чтобы вы смогли загрузить код.
Чтобы загрузить код, выполните следующие действия:
- Перейдите в меню Инструменты>Плата и выберите модуль ESP32 Wrover
- Перейдите в меню Инструменты >порт и выберите COM-порт, к которому подключен ESP32
- В меню Инструменты >Partition Scheme , выберите “Huge APP (3MB No OTA)“
- Нажмите кнопку ESP32-CAM on-board RESET
- Затем нажмите кнопку Загрузка, чтобы загрузить код
Важно! Если вы не можете загрузить код, то еще раз проверьте, что GPIO 0 подключен к GND и, что вы выбрали правильные настройки в меню Инструменты. Вы также должны нажать кнопку сброса на борту, чтобы перезагрузить ESP32 в режиме программирования.
4. Получение IP-адреса и подключение к камере.
После загрузки кода отключите GPIO 0 от GND. Подключите питание на 5 В. На 3,3 В у меня камера не заработала.
Откройте последовательный монитор со скоростью передачи данных 115200. Нажмите кнопку ESP32-CAM on-board Reset.
IP-адрес ESP32 должен быть выведен в последовательном мониторе.
Теперь вы можете получить доступ к серверу потоковой передачи камеры в локальной сети. Откройте браузер и введите IP-адрес ESP32-CAM . Нажмите кнопку Start Streaming, чтобы начать потоковую передачу видео.
У вас так же есть возможность делать фотографии, нажав на кнопку Get Still. К сожалению, этот пример не сохраняет фотографии, но вы можете изменить его, чтобы использовать встроенную карту microSD для хранения полученных фотографий.
Есть еще несколько настроек камеры, с которыми вы можете поиграть, чтобы настроить параметры изображения.
Если вы откроете монитор порта во время работы камеры, то вы получите подробную информацию о количестве кадров в секунду, о скорости обработки и пр.
Чем выше качество потокового вещания, тем меньше кадров. Комфортно работает при разрешении 600х800.
Можно реализовать распознавание лиц. Но, пока, в данном направлении я не экспериментировал. Как будут результаты, обязательно напишу статью, или сделаю проект.
Подписывайтесь на наш канал на Youtube и вступайте в группы в Вконтакте и Facebook.
Всем Пока-Пока. И до встречи в следующей статье.
Понравилась статья? Поделитесь ею с друзьями: