ESP32-CAM: Видеостриминг и распознавание лиц с Arduino IDE
Эта статья представляет собой краткое руководство по началу работы с платой ESP32-CAM. Мы покажем, как настроить веб-сервер для видеостриминга с распознаванием и обнаружением лиц менее чем за 5 минут с помощью Arduino IDE.
Примечание: в этом руководстве мы используем пример из библиотеки arduino-esp32. Данное руководство не описывает, как модифицировать этот пример.
Важно: К сожалению, последняя версия примера больше не поддерживает обнаружение и распознавание лиц.
Связанный проект: Веб-сервер видеостриминга ESP32-CAM (работает с Home Assistant и Node-Red)
Смотрите видеоурок
Вы можете посмотреть видеоурок или продолжить чтение данной страницы для получения текстовой инструкции.
Необходимые компоненты
Для выполнения этого руководства вам понадобятся следующие компоненты:
`ESP32-CAM с OV2640 <https://makeradvisor.com/tools/esp32-cam/>`_ – читайте Лучшие платы ESP32-CAM
Вы можете использовать ссылки выше или перейти непосредственно на MakerAdvisor.com/tools, чтобы найти все компоненты для ваших проектов по лучшей цене!
Знакомство с ESP32-CAM
ESP32-CAM – это очень маленький модуль камеры на чипе ESP32-S, который стоит примерно $10. Помимо камеры OV2640 и нескольких GPIO для подключения периферии, он также имеет слот для карты microSD, который может быть полезен для хранения снимков, сделанных камерой, или файлов для отдачи клиентам.
Источник изображения – Seeed Studio
ESP32-CAM не имеет USB-разъёма, поэтому для загрузки кода через выводы U0R и U0T (серийные выводы) вам понадобится FTDI программатор.
Или вы также можете использовать программатор ESP32-MB. Этот micro USB программатор работает как плата расширения, которую вы прикрепляете к плате ESP32-CAM. Программатор имеет USB-разъём, который вы подключаете напрямую к компьютеру.
Характеристики
Вот список характеристик ESP32-CAM:
Самый маленький модуль Wi-Fi 802.11b/g/n BT SoC
Маломощный 32-битный процессор, может также выполнять функции прикладного процессора
Тактовая частота до 160 МГц, суммарная вычислительная мощность до 600 DMIPS
Встроенная SRAM 520 КБ, внешняя PSRAM 4 МБ
Поддерживает UART/SPI/I2C/PWM/ADC/DAC
Поддержка камер OV2640 и OV7670, встроенная вспышка
Поддержка загрузки изображений по WiFi
Поддержка TF-карты
Поддержка нескольких режимов сна
Встроенные Lwip и FreeRTOS
Поддержка режимов работы STA/AP/STA+AP
Поддержка технологий Smart Config/AirKiss
Поддержка локального и удалённого обновления прошивки через серийный порт (FOTA)
Распиновка ESP32-CAM
На следующем рисунке показана распиновка ESP32-CAM (модуль AI-Thinker).
Источник изображения – Seeed Studio
Имеются три вывода GND и два вывода питания: 3.3 В или 5 В.
GPIO 1 и GPIO 3 – это серийные выводы. Эти выводы необходимы для загрузки кода на плату. Кроме того, GPIO 0 также играет важную роль, поскольку определяет, находится ли ESP32 в режиме прошивки или нет. Когда GPIO 0 подключён к GND, ESP32 находится в режиме прошивки.
Следующие выводы внутренне подключены к считывателю карт microSD:
GPIO 14: CLK
GPIO 15: CMD
GPIO 2: Data 0
GPIO 4: Data 1 (также подключён к встроенному светодиоду)
GPIO 12: Data 2
GPIO 13: Data 3
Сервер видеостриминга
Выполните следующие шаги, чтобы создать веб-сервер видеостриминга на ESP32-CAM, к которому вы сможете обращаться в вашей локальной сети.
Важно: Убедитесь, что ваша Arduino IDE обновлена, а также установлена последняя версия дополнения ESP32.
1. Установка дополнения ESP32
В этом примере мы используем Arduino IDE для программирования платы ESP32-CAM. Поэтому у вас должна быть установлена Arduino IDE, а также дополнение ESP32. Следуйте следующему руководству для установки дополнения ESP32, если вы ещё этого не сделали:
2. Пример кода CameraWebServer
В Arduino IDE перейдите в File > Examples > ESP32 > Camera и откройте пример CameraWebServer.
Должен загрузиться следующий код.
Перед загрузкой кода необходимо вставить учётные данные вашей сети в следующие переменные:
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
Затем убедитесь, что вы выбрали правильную модель камеры. В данном случае мы используем модель AI-THINKER.
Закомментируйте все остальные модели и раскомментируйте CAMERA_MODEL_AI_THINKER:
// Select camera model
//#define CAMERA_MODEL_WROVER_KIT
//#define CAMERA_MODEL_ESP_EYE
//#define CAMERA_MODEL_M5STACK_PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE
#define CAMERA_MODEL_AI_THINKER
Если ни один из доступных вариантов не соответствует вашей камере, вам необходимо добавить назначение выводов для вашей конкретной платы во вкладке camera_pins.h.
Теперь код готов к загрузке на ваш ESP32.
3. Загрузка кода на ESP32-CAM
Подключите плату ESP32-CAM к компьютеру с помощью FTDI программатора. Следуйте следующей схеме подключения:
Многие FTDI программаторы имеют перемычку, позволяющую выбрать 3.3 В или 5 В. Убедитесь, что перемычка установлена в правильное положение для выбора 5 В.
Важно: GPIO 0 должен быть подключён к GND, чтобы вы могли загружать код.
ESP32-CAM |
FTDI программатор |
|---|---|
GND |
GND |
5V |
VCC (5V) |
U0R |
TX |
U0T |
RX |
GPIO 0 |
GND |
Или подключите плату к MB-программатору.
Для загрузки кода выполните следующие шаги:
Перейдите в Tools > Board и выберите AI-Thinker ESP32-CAM.
Перейдите в Tools > Port и выберите COM-порт, к которому подключён ESP32.
Затем нажмите кнопку загрузки для загрузки кода.
Когда в окне отладки начнут появляться точки, вам может потребоваться нажать встроенную кнопку RST на ESP32-CAM, если он не переходит в режим прошивки автоматически.
Через несколько секунд код должен быть успешно загружен на вашу плату.
Получение IP-адреса
После загрузки кода отключите GPIO 0 от GND.
Откройте монитор порта на скорости 115200 бод. Нажмите встроенную кнопку Reset на ESP32-CAM.
IP-адрес ESP32 должен быть напечатан в мониторе порта.
Доступ к серверу видеостриминга
Теперь вы можете получить доступ к серверу видеостриминга вашей камеры в локальной сети. Откройте браузер и введите IP-адрес ESP32-CAM. Нажмите кнопку Start Streaming, чтобы начать видеостриминг.
У вас также есть возможность делать фотографии, нажав кнопку Get Still. К сожалению, этот пример не сохраняет фотографии, но вы можете модифицировать его для использования встроенной карты microSD для хранения сделанных снимков.
Также имеются различные настройки камеры, с которыми вы можете поэкспериментировать для регулировки параметров изображения.
Наконец, вы можете выполнять распознавание и обнаружение лиц.
Сначала необходимо зарегистрировать новое лицо. Система сделает несколько попыток сохранить лицо. После регистрации нового пользователя она должна распознавать это лицо впоследствии (subject 0).
Вот и всё. Теперь у вас работает веб-сервер видеостриминга с обнаружением и распознаванием лиц, используя пример из библиотеки.
Устранение неполадок
Если вы получаете любую из следующих ошибок, прочитайте наше Руководство по устранению неполадок ESP32-CAM: Решение самых распространённых проблем
Failed to connect to ESP32: Timed out waiting for packet header
Camera init failed with error 0x20001 или аналогичная
Brownout detector или ошибка Guru meditation
Sketch too big error – выбрана неправильная схема разделов
Board at COMX is not available – COM-порт не выбран
Psram error: GPIO isr service is not installed
Слабый сигнал Wi-Fi
Нет IP-адреса в мониторе порта Arduino IDE
Не удаётся открыть веб-сервер
Изображение зависает / показывает большую задержку
Заключение
ESP32-CAM предоставляет недорогой способ создания более продвинутых проектов домашней автоматизации с функциями видео, фотосъёмки и распознавания лиц.
В этом руководстве мы протестировали пример CameraWebServer для проверки функциональности камеры. Теперь идея состоит в том, чтобы модифицировать пример или написать совершенно новый код для создания других проектов. Например, делать фотографии и сохранять их на карту microSD при обнаружении движения, интегрировать видеостриминг в вашу платформу домашней автоматизации (например, Node-RED или Home Assistant) и многое другое.
Надеемся, что это руководство было полезным. Если у вас ещё нет ESP32-CAM, вы можете приобрести его здесь.
Если вам понравился этот проект, вам также могут понравиться другие проекты с ESP32-CAM:
Веб-сервер видеостриминга ESP32-CAM (работает с Home Assistant и Node-RED)
ESP32-CAM: PIR датчик движения с фотосъёмкой (сохранение на карту microSD)
Источник: ESP32-CAM Video Streaming and Face Recognition with Arduino IDE