Быстрый старт с ESP32 и камерой OV2640. Модуль ESP32-CAM.

Попался мне под руку модуль ESP32-CAM, включающий в себя, собственно, ESP32, а также камеру OV2640. Модуль является довольно-таки популярным решением, так что не обойдем стороной нюансы и вопросы, связанные с его использованием. А в этой статье организуем быстрый старт с ESP32-CAM! И, конечно, старт с этой платой нельзя считать полноценным без того, чтобы задействовать основные функции – а именно Wi-Fi подключение и получение видео-потока с камеры.

Начнем с более подробного рассмотрения платы:

Модуль ESP32-CAM.

На плате присутствуют:

  • Беспроводной модуль ESP32-S с интегрированным Wi-Fi и Bluetooth контроллерами.
  • Камера OV2640 – идет отдельно, но на плате предусмотрен разъем для ее подключения.
  • Разъем для карт памяти micro-SD.
  • Светодиод, который, если придерживаться логических соображений, видимо призван играть роль вспышки.

И, поскольку, ESP32 не просто реализует связь по беспроводным интерфейсам, но и является полноценным контроллером сам по себе, то на плате его сигналы выведены на штыревые разъемы для дальнейшего использования. ESP32 имеет:

  • Двухъядерный (или одноядерный) 32-разрядный процессор, с тактовой частотой 160 или 240 МГц.
  • Wi-Fi: 802.11 b / g / N
  • Bluetooth: v4.2 BR/EDR and BLE
  • Большое количество периферийных модулей, в том числе:
    • SPI x 4
    • ADC
    • DAC x 2
    • UART x 3
    • CAN
    • I2C x 2
  • 520 КБ SRAM

И это еще далеко не полный список…

Прошивается ESP32 по UART, поэтому я взял для этих целей USB-UART переходник на базе PL2303:

USB-UART на базе PL2303.

Для подключения используются выводы:

  • GPIO1 – U0TXD – подключается к Rx UART.
  • GPIO3 – U0RXD – подключается к Tx UART.

Кроме того, для программирования модуля необходимо подтянуть вывод GPIO0 к земле. Соответственно, по окончанию прошивки подтяжку надо убрать. И вот так в итоге выглядит полное подключение:

Схема подключения ESP32-CAM.

Причем при подключении питания через вход 3.3В наблюдалось большое количество разнообразных проблем – прошивалось через раз, работать модуль отказывался в принципе и т. д. И эти проблемы разом устранились при подаче 5В питания через соответствующий вход (как на схеме выше).

Но при этом напряжение логических уровней на входах – строго 3.3 В! Сигналы 5 В могут повредить контроллер.

На этом с физическим подключением заканчиваем!

Итак, для быстрого запуска ESP32-CAM используем существующие примеры и библиотеки для Arduino IDE. И, поскольку я Arduino IDE никогда не пользовался, да и не собирался, то переходим к Шагу 0.

Шаг 0.

Установка Arduino IDE. С этим все просто – скачиваем с официального сайта, устанавливаем и запускаем.

Шаг 1.

Теперь в свежеустановленную IDE необходимо интегрировать поддержку нашего модуля ESP32. Идем в настройки (File – Preferences) и в нижней части окна настроек в Additional Boards Manager URLs добавляем строку:

https://dl.espressif.com/dl/package_esp32_index.json

В итоге получаем следующее:

ESP32 в Arduino IDE.

Небольшое дополнение – если у вас в этой строке уже сохранена какая-либо ссылка (или ссылки), то можно без проблем добавить еще одну, разделять их следует просто запятой:

https://dl.espressif.com/dl/package_esp32_index.json, https://link2.com/dl/file2.json, https://link3.com/dl/file3.json

На этом закрываем окно настроек и переходим к Шагу 2.

Шаг 2.

Переходим в Boards Manager: Tools – Board – Boards Manager:

Boards Manager Arduino IDE.

В открывшемся окне в поиске вводим “esp32”, получаем один вариант и нажимаем на Install:

Библиотеки для ESP32.

Ожидаем завершения операции и переходим к следующему этапу.

Шаг 3.

Открываем в Arduino IDE пример для работы с камерой. Для этого следуем в File – Examples – ESP32 – Camera – CameraWebServer:

Camera Web Server пример.

Получаем готовый проект с инициализацией в функции setup() и основным циклом программы в функции loop().

Шаг 4.

Теперь необходимо немного изменить код для того, чтобы плата и камера успешно заработали. Первым делом выбираем модель камеры. Осуществляется это комментированием ненужного и раскомментированием нужного 🙂

// Select camera model
//#define CAMERA_MODEL_WROVER_KIT
//#define CAMERA_MODEL_ESP_EYE
//#define CAMERA_MODEL_M5STACK_PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE
#define CAMERA_MODEL_AI_THINKER

Второе изменение заключается в установке имени сети и пароля для подключения по Wi-Fi. К примеру:

const char* ssid = "home";
const char* password = "pass1234";

На этом с кодом заканчиваем и переходим к прошивке.

Шаг 5.

Подключение мы уже осуществили, так что на этом этапе чисто программные моменты. В меню Tools нам нужно задать актуальные параметры для программирования платы – выбрать плату, номер COM-порта и т. д. Вот список настроек для моей платы:

Настройки для ESP32-CAM.

Шаг 6.

Прошиваем плату, для этого нажимаем кнопку upload, не забыв предварительно подтянуть пин GPIO0 к земле:

Arduino IDE upload.

Завершающая часть успешного лога прошивки выглядит примерно так:

Compressed 3072 bytes to 119...
Wrote 3072 bytes (119 compressed) at 0x00008000 in 0.0 seconds (effective 1068.5 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Шаг 7.

Отключаем подтяжку GPIO0 и запускаем Serial Monitor (Tools – Serial monitor):

Arduino IDE Serial Monitor.

Теперь можем перезапустить плату кнопкой Reset и на экране появятся строки, сигнализирующие об успешном подключении к сети Wi-Fi:

WiFi connected
Starting web server on port: '80'
Starting stream server on port: '81'
Camera Ready! Use 'http://192.168.0.104' to connect

Шаг 8.

Собственно, остается только перейти в браузере по указанному ip-адресу, чтобы наглядно увидеть результат работы программы. Далее находим внизу кнопку Start Stream и получаем изображение с OV2640:

Пример Web Server.
Видео-поток с камеры OV2640.

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

Включаем Face Detection и Face Recognition и далее кнопкой Enroll Face можно зарегистрировать человека. И впоследствии камера определит, находится ли в кадре зарегистрированное лицо или некое другое. В общем, все это можно попробовать, а наша сегодняшняя задача на этом выполнена, до скорых встреч и спасибо за внимание!

Поделиться!

Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments

Присоединяйтесь!

Profile Profile Profile Profile Profile
Vkontakte
Twitter

Язык сайта

Октябрь 2020
Пн Вт Ср Чт Пт Сб Вс
 1234
567891011
12131415161718
19202122232425
262728293031  

© 2013-2020 MicroTechnics.ru