esp 32 cam. Плата ESP с камерой ov2640 Установка ESP32, подключение.

 Плата ESP с камерой ov2640 Установка ESP32, подключение.

Приветствую друзья.
Сегодня будем учиться работать с камерой OV2640 подключенной к плате ESP32-CAM.Это как бы 2 в 1. На камеру можно записывать видео, снимать стримы и транслировать их в WEB, делать фотографии. Камерой может управлять какой-нибудь датчик, например датчик движения, и тогда получится фото ловушка или контроль за помещением, или ещё что-нибудь.
Модуль ESP32-CAM  выглядит вот так. 
Он не поставляется с разъемом USB, поэтому вам понадобится программатор FTDI для загрузки кода Загрузка производится как и везде через UART, а  контакты U0R и U0T – это RX и TX соответственно.
Я купил себе вот такую модель, а так как мне для примеров понадобится сотни раз её прошивать, я взял себе модуль с дополнительной платой, с установленным на ней программатор. Это избавит меня от дополнительных проводов и постоянного подключения и отключения GPIO0, так как при загрузке его надо подключить к GND, а затем не забыть отключить. Вам может такая плата и не понадобится, так как вы скорее всего будете использовать готовый скетч, и вам придётся всего разок-другой прошить плату. Мне же придётся делать это сотни раз. На плате выведена кнопка ресет, вот её мы и будем использовать для фотографирования.

Это будет серия уроков про эту камеру.
1. Мы познакомимся с камерой и научимся её настраивать и делать снимки.
2. Сделаем фото ловушку и видео ловушку. Подключим к камере датчик движения и будем записывать всех кто движется. Сначала я хотел установить камеру напротив двери и когда дверь будет открываться, то делать снимок входящего, но у меня возникли вопросы как и когда делать снимок. Я могу установить задержку между движением и снимком, но как узнать время этой задержки, чтобы сфотографировать нарушителя. Так что жду ваших советов. А пока остановился на записи 10-15 секунд видео, чтобы уж наверняка.
3. Отправка фото с нарушителя в бот телеграмм.
Жду ваших советов, что ещё можно сделать.

Теперь поговорим про сам модуль камеры. Вот так выглядит плата спереди и сзади.
Кроме платы ESP32 и камеры у него есть ещё и слот для microSD карты, что позволяет сохранять фото и видео на карту, а так же на плате есть блютуз, его мы тоже изучим, но в следующих уроках.
Характеристики

  • Процессор: 32-х битный, частота 160-240 МГц;
  •  Объём RAM: 520 КБ
  • Объём Flash-памяти: 448 КБ
  • Питание: 2.2 - 3.6В;
  • Внешняя Flash-память: 4 МБ;
  • (520 КБ SRAM + 4 МБ PSRAM + слот для SD-карты)
  • Поддержка Wi-Fi: 802.11 b/g/n/d/e/i/k/r (802.11n до 150 Мбит/с);
  • Поддержка Bluetooth: 4.2 BR/EDR и Low Energy
  • Поддерживает загрузку изображений через Wi-Fi.
  • прошивку с возможностью обновления по OTA
  • 9 Выводов GPIO;
  • Встроенный светодиод подсветки;
  • Интерфейсы: UART, SPI, I2C, PWM;
  • Поддержка microSD карт до 4 Гб;
  • Энергопотребление:
  • При включённом светодиоде 310 мА
  • При передаче Wi-Fi 160-260 мА
  • Режим "мягкого" сна до 6.7 мА
  • Имеет несколько режимов сна
  • Камера:
  • Поддерживает камеры OV2640, которые можно приобрести в комплекте или приобрести отдельно. Эти типы камер имеют:
  • 2 МП на вашем сенсоре
  • Размер массива UXGA 1622 × 1200 пикселей
  • Формат вывода YUV422, YUV420, RGB565, RGB555 и 8-битное сжатие данных.
  • Вы можете передавать изображение от 15 до 60 кадров в секунду.


Как я уже говорил, плату нельзя напрямую подключить к USB компьютера, а надо использовать программатор, или купить такой комплект как у меня. И не забудьте, что у программаторов есть два напряжения, и вам обязательно надо камеру соответственно напряжению на программаторе.
Посмотрите как его можно подключить. Подключается как всегда крест накрест. RX-TX и наоборот TX- RX.
    GPIO1 — U0TXD — подключается к Rx UART.
    GPIO3 — U0RXD — подключается к Tx UART.

А так расположены GPIO выходы на плате. Плата как и все ESP работает от 3.3 вольт. Но так как на плате есть регулятор напряжения, то плату можно подключить и к 5 вольтам.
GPIO 1 и GPIO 3 являются последовательными выводами, они нужны для того чтобы загрузить код плату.
GPIO 0 нужен для загрузки скетча в плату. Если он притянут к земле, то плата находится в режиме загрузки.
GPIO 4 соединён с встроенным в плату светодиодом - фотовспышкой.

Теперь давайте подключим ESP32 и настроим её для работы с Ардуино IDE.
Для начала вам надо установить плату в Arduino IDE. Для этого надо перейти в настройки и в самом низу добавить ссылку для Менеджера плат. Ссылка будет в архиве на моём сайте вместе со скетчем.  Если вы уже работал с платами ESP8266, то у вас там уже есть одна ссылка. Для того чтобы добавить ещё одну надо скопировать её и между ними поставить запятую. В общем они должны быть разделены запятыми.
Теперь идём в инструменты и в разделе Платы выбираем пункт Менеджер плат. У вас появится новое окно в котором надо написать ESP32. Эти действия ничем не отличаются от установки библиотек. Появляется пакет с данными о платах которые есть в этом пакете. Нажимаем Установка и ждём когда платы установятся в Ардуино. Этот процесс оказался не таким быстрым как установка библиотек, а может у меня интернет тупил. В общем пришлось немного подождать.
После установки снова идём в раздел платы и находим там раздел ESP ARDUINO. Заходим туда и ищем вашу плату. У меня плата называется AI THINKER ESP32-CAM. Выбираем её смотрим что бы ещё поменять.
Частота 240 Мгц. Моя плата её поддерживает, поэтому так и оставляем. Частота flash тоже оставляем самую лучшую. Я знаю, что моя плата подключена к порту №6,значит всё правильно и можно идти двльше.

Теперь для проверки загрузим пример WEB сервера. Для этого идём в Примеры и ищем пункт ESP32. Выбираем камера, а там всего 1 пример, вот его и загрузим.
Сначала вам надо расскомментировать свою камеру. У меня это Камера модели AI THINKER.        
Здесь как всегда при работе с платами ESP надо ввести название своей сети и пароль. Мы это делали много раз, поэтому у вас не должно быть с этим проблем.
Теперь загружаем скетч и после загрузки открываем монитор порта и нажимаем на камере ресет. В самом конце вы увидите по какому IP адресу у вас находится камера. По этому локальному адресу вы и сможете зайти на сервер,  посмотреть и настроить свою камеру.

Сначала просто посмотрим что нам показывает камера. Нажимаем Начать стримить. Сейчас зима и уже вечер, поэтому на улице достаточно темно и съёмка ведётся через стекло, поэтому качество съёмки может быть не очень. Я буду просто изменять разные эффекты, и будем смотреть что изменяется. Вы это можете сделать сами. Я просто щёлкая по кнопкам и двигая ползунки наснимал целых 8 минут. Знаю, что никто столько смотреть не будет, поэтому я где то ускорю, где то обрежу. Поэтому если картинка будет прыгать, то камера не виновата.
Сейчас я пробовал настройки качества, яркости, и насыщенности. Кстати, чем меньше значения качества, тем картинка лучше. Не знаю о чём они думали, но это так. Но с ESP32 может быть проблема. Если установите самое лучшее качество, например 2 или 5, а это можно сделать программно из скетча, а на улице будет достаточно темно, то камера начнёт давать сбои, и может вообще перестать показывать, а весь экран будет в полосах и картинки вообще не будет.
Это мы посмотрели возможные эффекты заложенные на сервере.
А ещё здесь есть возможность делать фотографии, правда без сохранения на карту, но это мы научимся делать в этом видео.
Все эти настройки можно делать не только здесь, но и программно, в своём скетче. Как, это делать я покажу дальше.
Так же здесь есть функция распознавания лиц. Чтобы она заработала, вам надо сначала зарегистрировать своё лицо и камера будет находить вас на видео. Правда в последних версия эта функция перестала работать, возможно её скоро починят, а может и уже починили. Но на момент выпуска видео она не работала.
В интернете есть видео про подключение этой камеры к системе Умный дом на базе home-assistant или OpenHAB, а так же работе с mqtt.
Ладно, думаю что вам уже надоел вид из моего окна. Вы увидели качество работы камеры, мне кажется что это вполне достойно. Я сравнивал с видео на телефоне, обычным глазом разницы я не увидел. Это при расстоянии примерно метров 100-120 до ближайшего строения. Давайте перейдём теперь к скетчу работы с фотографиями записанными на карту при нажатии на кнопку.

Алгоритм работы примера такой.
При подачи питания на модуль, он просыпается и камера срабатывает.  Происходит съёмка первого кадра и фотография сохраняется на SD карту. Затем модуль уходит в спячку. Это сделано для экономии заряда батареи. Разбудить его можно нажав на кнопку ресет. Этой же кнопкой производится  и фотографирование.
Фотография имеет название PICTURE а дальше идёт её порядковый номер. С каждой фотографией номер увеличивается. Так же этот номер сохраняется в энергонезависимую память EEPROM. Это сделано для того чтобы знать сколько фотографий на карте. По умолчанию, в скетче прописано использовать 1 байт памяти. Это даёт нам возможность сохранять номера фотографий до 256. Вы можете изменить  это в скетче и поставить 2 байта или больше, тогда число будет больше.
Не забудьте, что для работы вам нужна sd карта отформатированная в FAT32. В документации  к ESP32 сказано что карта должна быть до 4 гб, но я пробовал 16 гигов, и она тоже замечательно работала.
Скетч разработан для работы с платой ESP32 CAM и камерой OV2640, но подойдёт и другая камера, из списка закомментированных в скетче.
Все фотографии сохраняются в корневую директорию sd карты, но вы можете изменить это и создать на карте папку для хранения фотографий.
Так же в скетче прописаны ряд возможных ошибок и если они произойдут, то вам будет выведено вообщение в монитор порта.
Да, забыл сказать в самом начале. При фотографировании загорается встроенный светодиод, который выполняет две роли. Первая – это подсветка, а вторая- оповещение о том, что съёмка произошла. Светодиод горит 2 секунды. Можно изменить в скетче. Например убрать его, для тайной съёмки.
Вот так за разговорами, я сделали 11 фотографий. Теперь надо вытащить карту и вставить её в компьютер. Сейчас я это проделаю и мы посмотрим что у нас сохранилось на карте.

Мы видим, что у нас сохранилось 10 файлов. Первого нет. Это файл который сработал при подачи питание на модуль. Я показал несколько фотографий, потому что больше выводить смысла нет. Так как они практически все с одного места у окна. Но по ним и так понятно качество работы камеры.

В архиве я положил файл очистки EEPROM памяти. Для очистки вам надо просто загрузить его в ESP32 и он очистить всю память. По окончании загорится светодиод на 2 секунды. Затем погаснет и у вас будет абсолютно чистая память.
На этом я думаю, что первое видео про использовании камеры можно закончить. Я правда озвучил не всё что хотел. И показал не всё что сделал. Например я ещё сделал пример автоматической съёмки через определённый промежуток времени, но видео и так получилось большое, поэтому покажу его в следующем примере. А когда он будет, будет зависеть только от вас и вашей активности.