esp32 камера примеры Фотографии сохранение на SD карту

esp32 камера примеры Фотографии сохранение на SD карту

Приветствую все моих подписчиков и гостей канала.
Сегодня я продолжу рассказывать как можно ещё использовать камеру на плате ESP32 Немного истории как появилось это видео. Один мой постоянный подписчик попросил для своей работы сделать циклически повторяющийся через определённое время процесс фотографирования и сохранения фотографий на карту памяти для дальнейшего использования. Названия файлов - фотографий должны сохраняться в формате дата и время. Я пообещал сделать, думая что может быть проще. Подцепил модуль времени к плате и  готово. Как же я ошибался.
На плате ESP32 Cam нет доступа к шине I2C на который подключаются часы. Точнее есть, но он не выведен на отдельные контакты как на всех платах ESP, и для его использования надо его найти и припаяться, что не так просто и это не устраивало подписчика. В конце я дам видео на гитхаб, где показано как вышли из этого затруднения наши иностранные партнёры.

Немного подумав решили убрать часы вообще, тем самым уменьшив размер и удешевив изделие.
Так как в том месте где будет установлена камера есть постоянный доступ к интернету было решено использовать возможность работы с NTP сервером точного времени и получать дату и время оттуда. И вот что получилось.

Давайте посмотрим как это всё работает. Как работает камера и все её настройки я в этом видео объяснять не буду, так как думаю подробно рассказал в предыдущем видео. Фотографирование происходит каждые 10 секунд. Время можно изменить в переменной PAUSA в скетче.
Чтобы сразу видеть результат я буду показывать фото которое получилось и монитор порта, где будет запись непрерывного процесса.  Сразу хочу извиниться за качество фотографий, так как я вообще не хотел показывать это видео, но потом подумал что это может кому-то ещё пригодиться. Так что если кому-то понадобится, то пишите в комментариях.
А вот так выглядят файлы с фотографиями сохранёнными на карте. Формат имени файлов – это день, месяц, год. Часы, минуты, и секунды. Вы можете перетасовать эти данные как вам удобно. Это можно сделать в скетче. Позже покажу как.

В начале скетч соединяется в вашей WIFI сетью и выходит в интернет для получения даты и времени. Затем из этих данных составляет имя файла. Раз в определённое время делает фотографию и в качестве имени подставляет данные времени и записывает всё это на карту памяти. Слэш в начале пути указывает на то, что файлы должны загружаться в корневую директорию карты. Вы можете сделать так, что файлы будут записываться в определённую папку.

Использование NTP сервера имеет определённые проблема. Вам нужен постоянный доступ в интернет, но это можно обойти и если найдётся много желающих чтобы я сделал такой урок, то я его сделаю. А пока на словах. При первом включении скетч получает текущие время и дату,  затем запускается внутренний отсчёт времени используя функцию millis() или используя внутренний контроллер RTC позволяющий сделать таймер. Таймер отсчитывает секунды и когда, например прошло 10 минут, то снова соединиться с интернетом и запросить новое время. Обнулить таймер и снова запустить его с нуля. И так каждые 10 минут. Если фотография была сделана в этот промежуток времени, то время берётся из таймера.

Если вам не важно когда была сделана фотография, то вы можете использовать способ который я применил в прошлом видео. Там все фотографии при сохранении прибавляли к своему имени по единице. Для того чтобы не было проблем после отключения питания, я сохранял номер в энергонезависимую память. И при включении считывал последний номер.
Ну, думаю как работает этот пример понятно, и можно переходить к разбору скетча. Знаю, что вам это не нравится, но куда деваться.


Будем считать, что вы уже видели первое видео и вид камеры вас не пугает.
Здесь два блока библиотек. Первый для работы с NTP  сервером и WIFi, второй для ESP и Sd модуля. Вам надо будет установить библиотеку NTPClient. Можете скачать из менеджера библиотек или взять архив с сайта. Скетч и библиотеки можно как всегда найти на моём сайте. Ссылка в описании.
Здесь указано к каким пинам контроллера подключена камера AI-THINKER. Если у вас другая камера а не OV 2640, то вам надо указать здесь в соответствии со своей камерой.
Напишите пароль и название вашей WIFI сети иначе вы не сможете к ней подключиться и не получите данные о времени. И не только. В скетче прописано условие, что пока вы не подключитесь к сети, скетч дальше не пойдёт.

Это переменные в которые будут сохраняться текущие даты и время. Потом из них мы составим цепочку для названия файла фотографии.
А это пауза которая будет между фотографиями. Время указано в миллисекундах. 10.000 миллисекунд = 10 секунд. Вы можете установить своё время.
Здесь задан сервер точного времени, часовой пояс в секундах и время синхронизации с сервером. Если вам что-то не понятно про NTP то посмотрите это видео, там всё подробно рассказано.

Теперь пошли проверки.
Про этот момент я уже рассказывал. Этот цикл будет исполняться бесконечно пока ESP не подключится к wifi. В мониторе порта в это время будут рисоваться точки.
Следующая проверка – это проверка камеры. Запускается функция инициализации камеры и если всё хорошо, то вы увидите ОК, в противном случае выведется фраза ошибка инициализации камеры и номер ошибки.
Ну и наконец проверка модуля SD карты. Всё тоже самое что и с камерой. Запускается функция инициализации модуля и если что-то пошло не так, то будет написано Модуль SD Card не работает или SD карта не найдена, если вы вдруг забыли вставить карту.

Рассмотрим цикл loop.
Здесь всё просто и я постарался всё прокомментировать. Обновляем время полученное с NTP сервера и разбираем его на составляющие. Так как нам надо из них собрать название файла. Для этого в строковую переменную Date мы сохраняем все данные и разделяем их точкой. Если честно, то я не знал как лучше сохранять название. Может быть вообще без точек, одним чистом. Но как получилось, так получилось.
Здесь в переменную path сохраняем путь и название файла, которое состоит из даты и времени и расширение файла jpg.
Теперь запускаем функцию сохранения файла и передаём в неё полученные значения. После сохранения ждём установленное время сохранённое в переменной Pause и снова запускаем цикл loop.

Здесь задаём параметры работы камеры. Формат разрешения и качество съёмки. Я это объяснял в прошлом видео.
Про эту функцию я рассказывал чуть раньше. Там мы её вызывали, а здесь она нам возвращает ответ. Если всё плохо, то выведется это сообщение.
Это дополнительные настройки камеры. Сейчас они не используются, но вы можете расскомментировать какие-нибудь из них и посмотреть что будет. Например вставив сюда вместо 0 1 вы получите изображение негатив, а вставив 2 получите чёрно-белое изображение и так далее.
Проверка модуля SD Card. Про неё я тоже уже говорил. Если модуль определился правильно и карта найдена, то всё хорошо и скетч будет работать дальше. В противном случает будет выведен текст ошибки.

Это стандартный процесс записи на SD карту. Сначала мы открываем файл. Если такого файла не существует, то он будет создан. Сюда передаётся название нашего файла, и его содержимое и если всё хорошо, то записываем его на карту. Закрываем файл и мы снова готовы к работе.
А теперь как и обещал даю ссылку на вариант как народ вышел из положения и всё же достучался до I2C на этой плате. Возможно что и я тоже когда-нибудь попробую так сделать. А пока я заканчиваю это видео, но скоро будет ещё одно видео про ESP камеру и оно надеюсь будет полезнее этого. В одном видео нельзя всё рассказать, поэтому я в каждом видео рассказываю что-то новое из того что знаю сам, или недавно узнал. Так что смотрите все мои видео, и тогда у вас сложится полная картинка как работать с этой камерой.


Примеры использование модуля ESP32-CAM
esp 32 cam. Плата ESP с камерой ov2640 Установка ESP32, подключение.
esp32 камера примеры Фотографии сохранение на SD карту
ESP32-CAM датчик движения HC-SR501 Телеграм
отправить фотографию в Телеграм
ESP32-Cam Как сделать стоп кадр из видео, сохранить его на SD карту, просмотреть и удалить не нужное.
Используем ESP32-CAM. 5 Проектов и неограниченные возможности