ESP32-CAM: Видеостриминг и распознавание лиц с Arduino IDE

Эта статья представляет собой краткое руководство по началу работы с платой ESP32-CAM. Мы покажем, как настроить веб-сервер для видеостриминга с распознаванием и обнаружением лиц менее чем за 5 минут с помощью Arduino IDE.

ESP32-CAM начало работы с видеостримингом и распознаванием лиц

Примечание: в этом руководстве мы используем пример из библиотеки arduino-esp32. Данное руководство не описывает, как модифицировать этот пример.

Важно: К сожалению, последняя версия примера больше не поддерживает обнаружение и распознавание лиц.

Связанный проект: Веб-сервер видеостриминга ESP32-CAM (работает с Home Assistant и Node-Red)

Смотрите видеоурок

Вы можете посмотреть видеоурок или продолжить чтение данной страницы для получения текстовой инструкции.

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

Для выполнения этого руководства вам понадобятся следующие компоненты:

Вы можете использовать ссылки выше или перейти непосредственно на MakerAdvisor.com/tools, чтобы найти все компоненты для ваших проектов по лучшей цене!

Знакомство с ESP32-CAM

Модуль камеры ESP32-CAM

ESP32-CAM – это очень маленький модуль камеры на чипе ESP32-S, который стоит примерно $10. Помимо камеры OV2640 и нескольких GPIO для подключения периферии, он также имеет слот для карты microSD, который может быть полезен для хранения снимков, сделанных камерой, или файлов для отдачи клиентам.

ESP32-CAM с подписями выводов и компонентов

Источник изображения – Seeed Studio

ESP32-CAM не имеет USB-разъёма, поэтому для загрузки кода через выводы U0R и U0T (серийные выводы) вам понадобится FTDI программатор.

FTDI программатор для ESP32-CAM

Или вы также можете использовать программатор ESP32-MB. Этот micro USB программатор работает как плата расширения, которую вы прикрепляете к плате ESP32-CAM. Программатор имеет USB-разъём, который вы подключаете напрямую к компьютеру.

ESP32-CAM-MB Micro USB программатор CH340G для OV2640

Характеристики

Вот список характеристик 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).

Распиновка 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.

Пример CameraWebServer в меню Arduino IDE для ESP32-CAM

Должен загрузиться следующий код.

Код примера ESP32 CameraWebServer

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

const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

Затем убедитесь, что вы выбрали правильную модель камеры. В данном случае мы используем модель AI-THINKER.

Модуль AI-Thinker ESP32-CAM

Закомментируйте все остальные модели и раскомментируйте 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
Выбор модели камеры в коде CameraWebServer

Если ни один из доступных вариантов не соответствует вашей камере, вам необходимо добавить назначение выводов для вашей конкретной платы во вкладке camera_pins.h.

Теперь код готов к загрузке на ваш ESP32.

3. Загрузка кода на ESP32-CAM

Подключите плату ESP32-CAM к компьютеру с помощью FTDI программатора. Следуйте следующей схеме подключения:

ESP32-CAM подключённый к FTDI программатору для загрузки программы через Arduino IDE

Многие FTDI программаторы имеют перемычку, позволяющую выбрать 3.3 В или 5 В. Убедитесь, что перемычка установлена в правильное положение для выбора 5 В.

Важно: GPIO 0 должен быть подключён к GND, чтобы вы могли загружать код.

Подключение ESP32-CAM к FTDI программатору

ESP32-CAM

FTDI программатор

GND

GND

5V

VCC (5V)

U0R

TX

U0T

RX

GPIO 0

GND

Или подключите плату к MB-программатору.

ESP32-CAM-MB Micro USB программатор CH340G с камерой OV2640

Для загрузки кода выполните следующие шаги:

  1. Перейдите в Tools > Board и выберите AI-Thinker ESP32-CAM.

  2. Перейдите в Tools > Port и выберите COM-порт, к которому подключён ESP32.

  3. Затем нажмите кнопку загрузки для загрузки кода.

Кнопка загрузки в Arduino IDE 2
  1. Когда в окне отладки начнут появляться точки, вам может потребоваться нажать встроенную кнопку RST на ESP32-CAM, если он не переходит в режим прошивки автоматически.

Точки при загрузке кода на ESP32-CAM

Через несколько секунд код должен быть успешно загружен на вашу плату.

Успешная загрузка примера CameraWebServer в Arduino IDE

Получение IP-адреса

После загрузки кода отключите GPIO 0 от GND.

Откройте монитор порта на скорости 115200 бод. Нажмите встроенную кнопку Reset на ESP32-CAM.

IP-адрес ESP32 должен быть напечатан в мониторе порта.

Получение IP-адреса в примере CameraWebServer через монитор порта Arduino IDE ESP32-CAM

Доступ к серверу видеостриминга

Теперь вы можете получить доступ к серверу видеостриминга вашей камеры в локальной сети. Откройте браузер и введите IP-адрес ESP32-CAM. Нажмите кнопку Start Streaming, чтобы начать видеостриминг.

Пример видеостриминга с ESP32-CAM

У вас также есть возможность делать фотографии, нажав кнопку Get Still. К сожалению, этот пример не сохраняет фотографии, но вы можете модифицировать его для использования встроенной карты microSD для хранения сделанных снимков.

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

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

ESP32-CAM обнаружение лица - оповещение о вторжении

Сначала необходимо зарегистрировать новое лицо. Система сделает несколько попыток сохранить лицо. После регистрации нового пользователя она должна распознавать это лицо впоследствии (subject 0).

ESP32-CAM распознавание и обнаружение лиц

Вот и всё. Теперь у вас работает веб-сервер видеостриминга с обнаружением и распознаванием лиц, используя пример из библиотеки.

Устранение неполадок

Если вы получаете любую из следующих ошибок, прочитайте наше Руководство по устранению неполадок 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 Video Streaming and Face Recognition with Arduino IDE