Крутая Wi-Fi камера на основе ESP32 CAM
Хочу представить вам проект функциональной прошивки веб-камеры на базе ESP32-CAM с модулем OV2640 с использованием фреймворка ESP-IDF. Такие модули часто поставляются с дополнительными компонентами, такими как светодиодная "вспышка" высокой мощности, OLED-дисплей или детектор движения. Этот проект включает поддержку дополнительных библиотек для поддержки этих компонентов.
Особенности проекта
- Улучшенный веб-интерфейс
- Возможность изменять настройки Wi-Fi и сети из веб-интерфейса
- Постоянное хранение настроек камеры и других настроек в NVS
- Драйвер дисплея SSD1306 и код для вывода соответствующей информации о подключении Wi-Fi и частоте кадров
- Драйвер светодиодной подсветки для управления интенсивностью светодиодной вспышки
- Сервер mDNS для объявления услуг камеры в локальной сети
- Встроенный клиент NTP и RTC для определения даты / времени
Ресурсы, доступные на ESP32 для поддержки камер, очень ограничены, и выжать максимум из OV2640 весьма затруднительно.
Установка
Исходный код требует установки ESP-IDF toolchain and development framework
В установке нет ничего сложного. Скачайте пакет по ссылке выше, запустите и следуйте указаниям мастера.
Для сборки проекта требуется ESP-IDF не ниже v4.0!
Крайне желательно чтобы в пути к программе не было русских букв. В моем случае пакет был установлен в C:\Espressif
После установки среды разработки обязательно зайдите в настройки переменных среды Windows (Панель управления\Система\Переменные среды) и проверьте, наличие этой переменной
IDF_TOOLS_PATH со значением C:\Espressif. Если она отсутствует, то создайте ее самостоятельно
После чего перезагрузите компьютер
Далее перейдите в проводнике в папку C:\Espressif , создайте в нем директорию myprojects и распакуйте в нее содержимое архива проекта. В итоге ваш проект должен располагаться по следующему пути C:\Espressif\myprojects\esp32-cam.
Далее из меню Пуск>Программы>ESP-IDF запустите ESP-IDF CMD и ESP-IDF PowerShell в зависимости от ваших предпочтений. Первый вариант открывает Консоль разработчика через Командную строку Windows,
Второй через Windows Power Shell.
В остальном разницы никакой. Переходим к настройке прошивки
Настройка прошивки
Для начала, перейдем в папку с исходниками прошивки, введя в консоли следующую команду
cd C:\Espressif\myprojects\esp32-cam
Для экономии места в памяти ESP32 выполним сжатие таблиц стилей, страниц html и javascript Веб-интерфейса прошивки, введя команды
cd main/www
./compress_pages.sh
cd ../..
Далее для настройки параметров прошивки введите следующую команду
idf.py menuconfig
Откроется редактор настроек прошивки.
Основные настройки прошивки
- Выберите USB-порт для загрузки прошивки в разделе Serial Flasher Config -> Default serial port
- Выберите, какую плату вы используете, в разделе Camera Web Server -> Camera Pins
- Если на вашей плате установлена светодиодная подстветка, включите ее в разделе Camera Web Server -> LED Illuminator
- Вы можете выбрать настройки Wi-Fi по умолчанию в разделе Camera Web Server -> Wifi Settings
- Если на вашей плате установлен OLED-дисплей на базе SSD1306, включите его в разделе Component Config -> SSD1306 Configuration и выберите контакты для SDA и SCL
- Чтобы использовать дополнительную внешнюю оперативную память SPI, которая может быть на вашей плате, включите ее с помощью Component Config -> ESP32 Specific -> Support for external, SPI-connected RAM
- Чтобы включить наложение шрифтов, в разделе Font Configuration проверьте раздел Store Font Partition (используется примерно 240 КБ флэш-памяти)
- Включите NTP и выберите NTP-сервер и часовой пояс по умолчанию в разделе NTP configuration
Когда настройки будут завершены, сохраните их и выйдите.
Компиляция и прошивка
При необходимости очистите каталог сборки с помощью
idf.py fullclean
Скомпилируйте исходный код, выполнив
idf.py build
Прошейте двоичный файл в свой ESP32 с помощью
idf.py flash
Контролируйте процесс сборки, выполнив
idf.py monitor
Первый запуск
При первом запуске прошивки она попытается установить соединение wifi в следующем порядке:
- Установка соединения, используя SSID и пароль, хранящиеся в энергонезависимом хранилище (nvs)
- Установка соединения, используя SSID и пароль STA по умолчанию, предоставленные make menuconfig
- После пяти неудачных попыток запуска в режиме станции (STA) она вернется в режим SoftAP и будет действовать как точка доступа Wi-Fi
Чтобы подключиться к точке доступа, введите в браузере 192.168.4.1. Имя пользователя и пароль вводить не нужно.
В веб-интерфейсе выберите SSID и пароль Wi-Fi и, при необходимости, укажите статический IP-адрес и другие сетевые настройки. Перезагрузите устройство, чтобы настройки вступили в силу.
Веб интерфейс камеры
Экран веб интерфейса камеры представлен на скриншоте ниже
Основные его возможности это настройка параметров захвата изображения, сетевого доступа, синхронизации времени и параметров аутентификации
Также есть возможность сохранить скриншот изображения на SD карты вставленную в модуль, а также запустить потоковую трансляцию видео
Дополнительные URL-адреса веб-камеры
Получить фото: http://IP/capture
Потоковая трансляция: http://IP:81/stream
Управление подсветкой: http://IP/control?var=led_intensity&val =[0...255]