ESP32-CAM - это недорогой и мощный модуль, который объединяет в себе микроконтроллер и камеру. Он может использоваться для создания простых систем видеонаблюдения, например, для наблюдения за домашними животными или охраны дома. В этой статье мы рассмотрим проект простого видеорегистратора на основе ESP32-CAM, с датчиком движения, записью видео на SD карту, отправкой фото через Telegram и собственным файловым менеджером.
Особенности проекта
Данный проект обладает рядом особенностей:
- Захват и запись MJPEG AVI таймлапс видео на SD карту подключенную к ESP32-CAM
- Включение записи видео при срабатывании датчика движения HC-SR501
- Уведомления через Telegram бота при включении или срабатывании датчика движения с фото и видео
- Веб интерфейс для настройки
- Синхронизация времени с NTP сервером
- Файловый менеджер для удаленного управления файлами на SD карте
Необходимые компоненты
Для сборки проекта вам понадобятся следующие компоненты:
- AI Thinker ESP32-CAM c сенсором OV2640
- Датчик движения HC-SR501
- Электролитический конденсатор не менее 220 мКФ
- Micro USB разъем
- Блок питания 5В 1А
- Макетная или печатная плата для размещения компонентов
Без MicroUSB можно и обойтись. Он используется лишь для подключения питания к устройству, как самый простой и универсальный вариант. Можете использовать то, что есть под рукой. Конденсатор здесь тоже опциональный элемент. Все работает и без него, но с ним все же гораздо стабильнее.
Схема подключения
В общем виде схема подключения выглядит следующим образом:
Пины VCC и GND micro USB разъема подключаем к пинам 5V и GND ESP32-CAM. Для сглаживания пульсации параллельно на пины 5V и GND ESP32 CAM припаивается конденсатор на 220 мкФ.
Если в проекте планируется использовать датчик движения, то его пины питания подключаем е 5V и GND соответственно, Контакт OUT соединяем с пином IO12 ESP32-CAM
Настройка, компиляция и сборка проекта
Для сборки прошивки вам потребуется установить в Arduino IDE ядро ESP32 версии 2.0.6.
После установки ядра, распакуйте архив с проектом и откройте его в Arduino IDE. Все основные настройки представлены в файле settings.h. Рассмотрим его параметры более подробно.
Настройка отображаемого имени устройства:
static const char devname[] = "altJSV";
В кавычках укажите желаемое имя устройства. Влияет на отображение камеры в сетевом окружении, настройках роутера и префиксы создаваемых им имен файлов.
Автоматическое удаление старых файлов:
int delete_old_files = 1;
Если равно 1, то автоматически с SD карты будут удаляться файлы с самой ранней датой создания. Позволяет всегда сохранять на карте 10% свободного места.
Установка часового пояса для синхронизации времени:
#define TIMEZONE "MSK-3MSD,M3.5.0/2,M10.5.0/3"
Код вашего часового пояса можно найти здесь
Режим работы встроенного светодиода:
#define BlinkWithWrite 1
1 - мигать только при записи на SD карту. 0 - мигать при ошибке записи на SD карту
Настройки WiFi:
const char* ssid = "ssid";
const char* password = "pass";
Логин и пароль вашей WiFi сети. Если оставить пустыми, то устройство переключается в режим точки доступа, подключившись к которой вы сможете настроить WiFi через нее.
Настройка различных параметров режима работы:
int Internet_Enabled = 1; // Установите 0 для отключения всех сетевых возможностей- wifi, time, http, ftp, telegram
int DeepSleepPir = 0; // установите 1 для ухода в глубокий сон до срабатывания датчика движения
int record_on_reboot = 1; // Включение записи при перезагрузке
int PIRpin = 13; // Пин к которому подключен датчик движения
int PIRenabled = 0; // 1 Включение датчика движения при загрузке. Работает только при отключенной записи видео
Сброс настроек хранящихся в EEPROM. Просто измените данный параметр на любой другой, чтобы при повторной прошивке очистить все настройки устройства:
int MagicNumber = 011;
Интервал между захватом кадров в режиме трансляции в мс:
int stream_interval = 333; //333 мс или 3 кадра в секунду
Настройки записи видео:
int framesize = 8; // Размер кадра 13 UXGA, 11 HD, 9 SVGA, 8 VGA, 6 CIF
int repeat_config = 100; // максимальное количество записей
int xspeed = 1; // Модификатор скорости воспроизведения трансляции - 1 - в реальном времени.
int gray = 0; // запись в оттенках серого
int quality = 12; // Качество записи 10..50 Где - 10 высокое качество и большие файлы, 50 плохое качество, но маленькие файлы
int capture_interval = 100; // пауза в мс между захватом кадров
volatile int total_frames_config = 18000; // количество кадров в одном файле total_frames x capture_interval
Настройка Telegram бота:
RTC_DATA_ATTR int EnableBOT = 0;
#define BOTtoken "1234567890:ABCDEFGHIGKLMNOQPRSTUVWXWYZ" // токен бота
#define BOTme "1234567890" //ваш ID
Здесь необходимо указать ваш ID и токен бота. Создание бота и получение ID подробно рассматривались в статье Управление ESP8266 через Telegram бота.
После завершения редактирования конфига, установите параметры ядра как на рисунке ниже и прошейте ваш модуль ESP32-CAM любым удобным способом:
Обзор веб интерфейса
Для подключения к веб интерфейсу ESP32-CAM вам нужно узнать его IP адрес. Это можно сделать, например, в мониторе серийного порта Arduino IDE, подключив ESP32-CAM к компьютеру по USB через FTDI программатор:
Либо зайдите в панель управления вашего роутера и посмотрите какой IP адрес он присвоил устройству:
Далее просто введите IP адрес устройства в адресную строку вашего браузера. Откроется окно веб интерфейса:
В нем вы можете увидеть краткую информацию об устройстве, режиме его работы, подключенной SD карте, изображение полученное с сенсора камеры и несколько ссылок для переключения режимов и управления камерой.
Для остановки записи и настройки ее параметров, воспользуйтесь ссылкой http://ipadress/stop. Должно открыться новое окно:
В нем вы можете просто вернуться на главный экран без старта записи. Либо запустить запись с предварительно заданными параметрами нажав на любую из ссылок с описанием конфигурации. Также можно запустить запись задав параметры вручную, скопировав в адресную строку браузера следующий текст и отредактировав параметры запуска:
После того как вы остановили запись и вернулись в главное меню, вы можете активировать запись по датчику движения, нажав на ссылку Включить PIR. В этом случае запись видео будет включаться автоматически при обнаружении высокого уровня сигнала на пине к которому подключен датчик движения. После достижения максимальной длительности видео, камера сохранит видео на SD карту и уйдет в спящий режим до тех пор пока снова не сработает датчик движения.
Если вы включите Telegram бота, то при включении питания камеры или обнаружении движения в Telegram боту будет отправлено сообщение:
Для управления содержимым SD карты перейдите по адресу http://ipadress:8080/. Откроется окно менеджера файлов:
С его помощью вы можете удалять и переименовывать файлы на SD карте или скачать себе на компьютер.
Полезные ссылки
Несколько полезных ссылок:
Скачать архив проекта с русифицированным веб интерфейсом можно по ссылке.
https://github.com/jameszah/ESP32-CAM-Video-Recorder - github автора прошивки.
https://github.com/jameszah/ESP32-CAM-Video-Recorder-junior - облегченная версия прошивки. Урезан функционал, но сильно повышено быстродействие.
Заключение
В заключение хочется сказать, что ESP32-CAM в качестве видеорегистратора является удобным и эффективным решением для наблюдения за окружающей средой и безопасности дома. С его помощью можно быстро создать простую, но функциональную систему видеонаблюдения, которая отвечает вашим потребностям.
Материал также доступен на моем сайте https://projectalt.ru и в группе ВК.