Cam модуль arduino

ESP32-CAM Video Streaming Server Подключение I2C и SPI дисплеев

ESP32-CAM Video Streaming Server

Пример использования находится тут.

Подробные настройки есть в статье.

В моем случае я использовал модуль AI-THINKER поэтому раскомментировал
#define CAMERA_MODEL_AI_THINKER

У меня не заработала функиональность распознования лиц. Коментарий в статье был полезен.

It seems that face recognition is no longer working (at least with the example program) when using the 1.02 ESP core. Rolling back to the 1.01 core and using the example program belonging to that core, will ‘fix’ it

Откатившись на предыдущую версию библиотеки 1.01 все заработало.

У меня есть пару диспллев I2C 128×64 и TFT SPI 128×128

Cтатья OV7670 with FIFO как подключить камеру к дисплею если у вас не CAM модуль. Support OV2640 and OV7670 cameras

На момент написания статьи у меня заработало следующее

ESP32 camera + Wifi Server + I2C Display (AdaFruit)
ESP32 camera + SPI Display 1.44″ TFT 128×128 v1.1 (AdaFruit)
ESP32 camera + SPI Display 1.8″ TFT 128*160 (Espressif библиотека)

WiFi драйвер конфликтует с SPI шиной. Возможное решение использовать другую библиотеку. Проблема возникала на моменте инициализации WiFi модуля.

Основная проблема, что модуль ESP32-CAM имеет ограниченное число свободных ног. Часть портов используется для камеры, часть параллельно с sd-card. sd-card разьем установлена на плате. Еще один вывод (IO4) это светодиодный фонарь.

I2C Display B/W не представляет особого интереса для реального использования с изображением полученным с камеры. TFT цветной и с большим разрешением. На нем уже можно рассмотреть лицо. На таком дисплее или чуть с большим разрешением можно сделать Дверной Глазок

Скажу сразу, что библиотека от AdaFruit не самая быстрая. Мне удалось выводить на экран пару кадров в секунду. Перспективнее использовать библиотеки которые работают на низком уровне. Но мне не удалось завести ESP32_TFT_library с моим дисплеем 1.44″ 128×128 SPI V1.1. Возможно не поддерживается ILI9163. Я взял 1.8″ 128*160 SPI TFT и мне удалось выжать около 12 FPS! Ссылка.

Есть еще пару библиотек которые работают быстрее. Но некоторые не портированы для esp-32 (ссылка):

4.98 sec Adafruit_ST7735
1.71 sec ST7735X_kbv
1.30 sec PDQ_ST7735

Видео выглядит впечатляюще:

При использовании двух портов один из хардварных портов HSPI или VSPI на микроконтроллере и дисплея c драйвером ILI9341 можно получить 30 кадров в секунду (ссылка).

Но как я говорил ранее в модуле ESP32-CAM свободный только один SPI. Он выведен на следующие PINS:

IO2 — DC(A0)
IO14 — CLK
IO15 — CS
IO13 — MOSI (SDA)
IO12 — MISO (Вход. Не используется)

IO0 — BCKL (Подсветка. Не используется)
IO16 — RST

Первую библитотеку, которую я попробовал это AdaFruit SSD1306

I2C 128×64 Blue OLED Display

При работе в esp32 используется Software I2C эмуляция. Задействованы IO14 и IO15. Можно использовать почти любые свободные порты, используется не H/W шина.

Как подключать Monochrome 0.96″ i2c OLED display. Надо обратить внимание на адрес дисплея на шине I2С. В данном случае 0x3С

SPI Display 1.8″ TFT 128*160 Espressif библиотека

IO2 — A0
IO14 — SCK
IO15 — CS
IO13 — SDA
IO16 — RESET


На плате также расположен SD-card reader

Устанавливаем окружение и среду разработки от Espressif. Подробная инструкция как это сделать.

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

#. $HOME/esp/esp-idf/export.sh
#idf.py menuconfig

Разрешаем доступ для USB порта для прошивки и мониторинга:

#sudo chmod 777 /dev/ttyUSB0

Собираем и заливаем:

#make -j4 && make flash

12FPS достигается за счет пакетной записи с помощью метода send_data. Запись идет не попиксельно, а целой линией равной ширине экрана:

FRAME_WIDTH — это ширина кадра 320 пикселей для QVGA

На самом деле мы видим на дисплее окно 128*160 от полного кадра

Log для конфигурации с одним буфером видеокамеры (config.fb_count=1)
Capture camera time: 32 ms
Send buffer time: 47 ms
Capture frame ok.

Результат
1000 / (32 + 47) = 12.65 FPS

Capture camera time: 39 ms

Send buffer time: 63 ms

Capture frame ok.
Capture camera time: 0 ms

Send buffer time: 59 ms

Capture frame ok.
Capture camera time: 0 ms

Send buffer time: 34 ms

Capture frame ok.
Capture camera time: 40 ms

Send buffer time: 64 ms

Capture frame ok.
Capture camera time: 0 ms

Send buffer time: 59 ms

Capture frame ok.
Capture camera time: 0 ms

Send buffer time: 34 ms

Capture frame ok.
Capture camera time: 40 ms

Send buffer time: 63 ms

Capture frame ok.
Capture camera time: 0 ms

Send buffer time: 60 ms

Capture frame ok.
Capture camera time: 0 ms

Send buffer time: 34 ms

Capture frame ok.
Capture camera time: 39 ms

Send buffer time: 63 ms

Capture frame ok.
Capture camera time: 0 ms

Send buffer time: 60 ms

Capture frame ok.
Capture camera time: 1 ms

Send buffer time: 34 ms

Capture frame ok.
Capture camera time: 40 ms

Send buffer time: 63 ms

Capture frame ok.
Capture camera time: 0 ms

Send buffer time: 60 ms

Capture frame ok.
Capture camera time: 0 ms

Send buffer time: 34 ms

Capture frame ok.
Capture camera time: 40 ms

Send buffer time: 63 ms

Capture frame ok.
Capture camera time: 0 ms

Send buffer time: 59 ms

Capture frame ok.
Capture camera time: 0 ms

Send buffer time: 35 ms

Capture frame ok.

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

Несколько раз я поймал в логах «Brownout detector was triggered» поэтому отключил detector. Потому что сначала я питал подсветку дисплей от вывода 3.3V ESP32-CAM

Заключение

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

Источник

ESP32-CAM ov2640, потоковое видео в среде Arduino IDE.

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

Примечание: в этой статье я использую пример из библиотеки arduino-esp32, но не рассматриваю как его изменить.

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

Основные характеристики ESP32-CAM:

Беспроводной модуль — ESP32-S WiFi 802.11 b/g/n + модуль Bluetooth;

Внешнее хранилище — слот для карт micro- SD ёмкостью до 4 ГБ;

Поддержка камер OV2640 (продаётся с платой) или OV7670;

Формат изображения — JPEG (только OV2640), BMP, оттенки серого;

Контакты – 16 с интерфейсами UART, SPI, I2C, PWM

Напряжение питания — 5 В;

Потребляемая мощность:

  • при выключенной вспышке — 180 мА;
  • при включенной вспышке — 310 мА;
  • глубокий сон — 6 мА;
  • модем-сон — 20 мА;
  • лёгкий сон — 6,7 мА.

Размеры — 40,5 х 27 х 4,5 мм

Температурный диапазон:

  • рабочий: 20 – 85 ℃;
  • хранение: -40 — 90 ℃ при 90% относительной влажности.

Карты памяти на 4 Гб не было под рукой, поэтому проверить не получилось. Ставил на 16 Гб. Не сохраняет.

На следующем рисунке показаны выводы ESP32-CAM.

Есть три вывода GND и два вывода для питания: 3.3 V, либо 5V.

GPIO 1 и GPIO 3 — это последовательные контакты. Вам нужны эти контакты, чтобы загрузить код на вашу плату. Кроме того, GPIO 0 играет важную роль, поскольку он определяет, находится ли ESP32 в режиме программирования или нет. Когда GPIO 0 подключен к GND, ESP32 находится в режиме программирования.

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

Приступим к установке, настройке необходимого ПО и прошивке ESP32. Разделим вс ё на несколько этапов:

1. Установка дополнения ESP32
В этом примере я использую Arduino IDE для программирования платы ESP32-CAM. Установите Arduino IDE, и настройте работу с ESP32. Если этого у вас не сделано, воспользуетесь следующей инструкцией:

2. Пример Кода CameraWebServer
В среде Arduino IDE выберите пример для работы с камерой для этого перейдите:

Файл > Примеры > ESP32 > Camera>CameraWebServer

Откроется пример скетча работы с камерой ESP32:

Если вы не можете найти данный пример, то можете его скачать с нашего сайта. Внизу статьи есть ссылка для скачивания материала. Внимание! Для того, чтобы скачать файлы с сайта вам нужно зарегистрироваться.

После загрузки распакуйте папку и откройте файл скетча для esp32 cam ov2640: CameraWebServer.ino.

Перед загрузкой прошивки в модуль ESP32 CAM необходимо указать ваши данные для подключения к Wi-Fi сети.

Затем убедитесь, что вы выбрали правильный модуль камеры. В данном случае используйте модель AI-THINKER Model. Для этого закомментируйте все другие модели и раскомментируйте указанную ниже:

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

3. Прошивка ESP32-CAM

Для прошивки я использую самый недорогой TTL программатор. И всё прошивается и работает отлично.

Подключаю всё вот по такой схеме:

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

Чтобы загрузить код, выполните следующие действия:

  • Перейдите в меню Инструменты>Плата и выберите модуль ESP32 Wrover
  • Перейдите в меню Инструменты >порт и выберите COM-порт, к которому подключен ESP32
  • В меню Инструменты >Partition Scheme , выберите “Huge APP (3MB No OTA)
  • Нажмите кнопку ESP32-CAM on-board RESET
  • Затем нажмите кнопку Загрузка, чтобы загрузить код

Важно! Если вы не можете загрузить код, то еще раз проверьте, что GPIO 0 подключен к GND и, что вы выбрали правильные настройки в меню Инструменты. Вы также должны нажать кнопку сброса на борту, чтобы перезагрузить ESP32 в режиме программирования.

4. Получение IP-адреса и подключение к камере.

После загрузки кода отключите GPIO 0 от GND. Подключите питание на 5 В. На 3,3 В у меня камера не заработала.

Откройте последовательный монитор со скоростью передачи данных 115200. Нажмите кнопку ESP32-CAM on-board Reset.

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

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

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

Есть еще несколько настроек камеры, с которыми вы можете поиграть, чтобы настроить параметры изображения.

Если вы откроете монитор порта во время работы камеры, то вы получите подробную информацию о количестве кадров в секунду, о скорости обработки и пр.

Чем выше качество потокового вещания, тем меньше кадров. Комфортно работает при разрешении 600х800.

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

Подписывайтесь на наш канал на Youtube и вступайте в группы в Вконтакте и Facebook.

Всем Пока-Пока. И до встречи в следующей статье.

Понравилась статья? Поделитесь ею с друзьями:

Источник