Детальный обзор ESP32-CAM
В этом обзоре мы подробно рассмотрим аппаратное обеспечение ESP32-CAM, разберем его схему и назначение всех GPIO пинов.
Детальный обзор ESP32-CAM
08.05.2024 в 00:10   2235 1
Версия для печати

Детальный обзор ESP32-CAM

logo

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

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

В этом обзоре мы подробно рассмотрим аппаратное обеспечение ESP32-CAM, разберем его схему и назначение всех GPIO пинов.

Спецификация

Для начала, коротко пробежимся по основным техническим возможностям устройства:

  • 10 GPIO
  • Самый маленький модуль Wi-Fi BT SoC стандарта 802.11b / g / n
  • 32-разрядный процессор с низким энергопотреблением
  • Тактовая частота до 160 МГц, суммарная вычислительная мощность до 600 DMIPS
  • Встроенная память 520 КБ SRAM, внешняя память 4 МП
  • Поддерживает UART / SPI / I2C /PWM / АЦП /ЦАП
  • Поддержка камер OV2640 и OV7670
  • Встроенная светодиодная подсветка
  • Поддержка передачи изображений по Wi-Fi
  • Поддержка TF-карты
  • Поддерживает несколько режимов сна
  • Встроенный Lwip и FreeRTOS
  • Поддерживает режим работы STA / AP / STA + AP
  • Поддержка технологии Smart Config / AirKiss
  • Поддержка локального и удаленного обновления прошивки  (FOTA)

ESP32-CAM AI-Thinker – одна из самых популярных плат для разработки ESP32 с камерой - она обладает множеством полезных функций и стоит около 400 рублей!

Она оснащена чипом ESP32-S и поставляется с “обычной” 2-мегапиксельной камерой OV2640. Эта плата имеет 4 МБ PSRAM, которая используется для буферизации изображений с камеры в потоковое видео или для других задач и позволяет использовать более высокое качество в ваших снимках без сбоев ESP32.

Она поддерживает карту microSD и имеет 10 доступных GPIO и разъемов питания. Однако можно использовать далеко не все, поскольку некоторые из них используются либо камерой, либо картой microSD. 

Плата ESP32-CAM поставляется со встроенной антенной, а также с разъемом IPEX, позволяющим альтернативно использовать внешнюю антенну для улучшения диапазона связи Wi-Fi.

Плата оснащена встроенной кнопкой сброса для перезапуска платы и ярким светодиодом, который работает как вспышка. Вспышка может быть полезна для освещения области перед потоковой передачей видео или съемкой. Тем не менее, фотовспышка разделяет GPIO с одним из GPIO карты microSD. Это означает, что при использовании функций, связанных с картой microSD, светодиод будет время от времени загораться, даже если вы этого не хотите.

Одним из основных недостатков ESP32-CAM является то, что он не имеет интерфейса USB-to-UART. Это означает, что вы не можете подключить ESP32-CAM непосредственно к компьютеру с помощью USB-кабеля. Вам необходимо использовать программатор FTDI. 

Список камер поддерживаемых модулем ESP32-CAM

Модуль ESP32-CAM официально поддерживает следующие камеры:

Датчик Разрешение Размер объектива
OV2640 2 МП, 1600 x 1200 1/4″
OV3640 3 МП, 2048 x 1536 1/4″
OV3660 3 МП, 2048 x 1536 1/5″
OV5640 5 МП, 2592 x 1944 1/4″
OV7670 0,3МП, 640 x 480 1/6″
OV7725 0,3МП, 640 x 480 1/4″
NT99141 1 МП, 1280 x 720 1/4″
GC032A 0,3МП, 640 x 480 1/10″
GC0308 0,3МП, 640 x 480 1/6.5″
GC2145 2 МП, 1600 x 1200 1/5″

Устройство и принципиальная схема

AI-Thinker ESP32-CAM представляет собой DIP печатную плату с размерами 27*40.5*4.5. Общий вид и расположение ее компонентов представлены на картинке ниже.

Рассмотрим основные компоненты платы более подробно:

  • ESP32-S: так называемый "мозг" платы. Содержит два высокопроизводительных 32-разрядных процессора LX6 с 7-ступенчатой конвейерной архитектурой и используется для всей обработки и функционирования.
  • IPEX разъем антенны - служит для подключения внешней антенны при необходимости увеличить зону уверенной передачи данных
  • Танталовый конденсатор: Танталовый конденсатор в основном используется в модулях небольшого размера. Они долговечны и обеспечивают фильтрацию источника питания.
  • Стабилизатор напряжения:  поддерживает на выходе стабильное напряжение до 3,3 вольт независимо от скачков входного напряжения.
  • Кнопка сброса: при нажатии кнопки сброса перезапускается код, выполняемый на модуле.
  • PSRAM: В модуль встроена маломощная память с псевдослучайным доступом объемом 4 МБ для быстрой обработки инструкций. Это помогает камере работать плавно.
  • Разъем TF карты: позволяет подключить micro-SD карту для хранения данных. Вся передача происходит через последовательный периферийный интерфейс.
  • Разъем FPC: служит для установки различный модулей камеры.
  • Светодиод вспышки - сверхяркий светодиод, который можно использовать как дополнительную подсветку для модуля камеры

Принципиальная схема

Для понимания всей логики работы модуля следует изучить его принципиальную схему. Она представлена на рисунке ниже. Для увеличения кликните по картинке.

приниципиальная схема

Распиновка модуля

На схеме ниже показана распиновка модуля AI-Thinker ESP32-CAM

pinout

ESP32-S имеет в общей сложности 34 контакта, но из-за того, что часть контактов задействована для работы с камерой для использования доступны лишь 16.

Контакты питания

Модуль имеет три контакта GND и два плюсовых контакта питания на 5 В и 3,3 В. Эти контакты можно использовать для питания платы Но от 3,3 В модуль работает не очень стабильно, так что лучше все же подавать на него 5В если вы хотите избежать частых зависаний и неожиданных перезагрузок.

power

Питание внешних устройств

Также на плате ESP32-CAM имеется пин, обозначенный как VCC, для питания маломощных внешних устройств с максимальным током потребления не более 40 мА. Например, каких-либо датчиков, сенсоров и т.п. Не следует использовать этот вывод для питания ESP32-CAM! Он может выдавать напряжение как 3.3В, так и 5В. Оно выставляется соответствующей перемычкой на плате.

перемычка питания

По умолчанию напряжение на пине VCC 3.3В. Для напряжения 5В вам нужно выпаять резистор 1 сопротивлением 0 Ом обозначенный на плате 3.3V и впаять его на контакты 5V.

Контакты GND

Контакты GND используются для замыкания электрической цепи и обеспечения общего логического опорного уровня во всей цепи. Всегда проверяйте, что все GND (Arduino, периферийных устройств и компонентов) подключены друг к другу и имеют общее заземление.

Выбор типа антенны

Модуль ESP32-CAM для приема/передачи данных по WiFi и Bluetooth имеет встроенную антенну мощностью 4db. Если же зоны ее покрытия недостаточно, то есть возможность подключить внешнюю через стандартный IPEX разъем. Выбор типа используемой антенны осуществляется с помощью перемычки на плате возле разъема.

antenna
По умолчанию она установлена в верхнее положение для использование внутренней антенны. Для использования внешней, перемычку следует выпаять и переместить в нижнее положение.


Контакты UART

Последовательная связь используется для обмена данными между платой Arduino и другим последовательным устройством, таким как компьютеры, дисплеи, датчики и многое другое.
Почти все выводы GPIO ESP32-CAM являются универсальными выводами. GPIO1 и GPIO3 имеют альтернативные функции для последовательной передачи и приема данных для порта UART соответственно. Плата AI-Thinker не поставляется со встроенным программатором. Таким образом, эти выводы UART используются для программирования и обмена данными с ПК для загрузки кода.

Название пина Функция
GPIO1 U0TXD (контакт передачи UART)
GPIO3 UORXD (контакт приема UART)

Вы можете использовать кабель FTDI для прошивки скетча на ESP32-CAM с помощью выводов UART.

Контакт GPIO0 - выбор режима работы

Этот контакт служит для перехода ESP32-CAM в режим загрузки прошивки. Данный контакт подключен к подтягивающему резистору на 10 кОм . Если соединить GPIO0 с GND, ESP32-CAM переходит в режим прошивки, и вы можете загрузить в него вашу программу. После прошивки вы должны отсоединить GPIO0 от GND, для перехода ESP32-CAM в рабочий режим.

Подведем итог:

  • GPIO0 подключен к GND: ESP32-CAM в режиме прошивки
  • GPIO0 не подключен к GND:  ESP32-CAM в обычном режиме выполнения программы

Подключение карты microSD

Для использования встроенного в плату  разъема для SD-карты используются следующие  контакты GPIO. 
 
microSD ESP32
CLK GPIO 14
CMD GPIO 15
DATA0 GPIO 2
DATA 1 / Вспышка GPIO 4
DATA2 GPIO 12
DATA3 GPIO 13

Также их можно использовать и как обычные контакты ввода-вывода, если SD-карта не используется.

Вспышка (GPIO 4)

ESP32-CAM имеет очень яркий встроенный светодиод, который может работать как вспышка при съемке фотографий. Этот светодиод внутренне подключен к GPIO 4.

Этот GPIO также подключен к разъему для карт microSD, поэтому у вас могут возникнуть проблемы при попытке использовать оба устройства одновременно – при использовании карты microSD загорается фонарик.

Чтобы этого избежать следует в вашей программе инициализировать SD карту следующим образом:

SD_MMC.begin("/sdcard", true)

Аналоговые пины

ESP32-CAM имеет 7 входных каналов АЦП 12 бит.

adc pins

Аналого-цифровое преобразование

АЦП - это электронная схема, используемая для преобразования аналоговых сигналов в цифровые сигналы. Это цифровое представление аналоговых сигналов позволяет процессору (который является цифровым устройством) измерять аналоговый сигнал и использовать его в своей работе. Контакты ESP32 ADC1_X и ADC2_X способны считывать аналоговые напряжения. АЦП преобразует напряжение в биты, понятные микропроцессору.
 

  • ADC2_CH0 (GPIO 4)
  • ADC2_CH1 (GPIO 0)
  • ADC2_CH2 (GPIO 2)
  • ADC2_CH3 (GPIO 15)
  • ADC2_CH4 (GPIO 13)
  • ADC2_CH5 (GPIO 12)
  • ADC2_CH6 (GPIO 14)

Примечание: контакты ADC2 не могут использоваться при передаче данных по Wi-Fi.

Входные каналы АЦП имеют разрешение 12 бит. Это означает, что вы можете получать аналоговые показания в диапазоне от 0 до 4095, где 0 соответствует 0 В, а 4095 - 3,3 В. У вас также есть возможность установить разрешение ваших каналов в коде, а также диапазон АЦП.

Выводы ESP32 ADC не имеют линейного поведения. Вероятно, вы не сможете различить напряжение от 0 до 0,1 В или от 3,2 до 3,3 В. Это необходимо учитывать при использовании выводов АЦП.

Цифровые пины

Все пины ESP32-CAM можно использовать для цифрового ввода/вывода.

Примечание: Каждый вывод может отдавать потребителю силу тока до 40 мА максимально. Но рекомендуется не более 20 мА. Абсолютный максимальный ток, подаваемый (или принимаемый) от всех контактов вместе, составляет 200 мА.
digital
 

Цифровой - это способ представления напряжения. Если напряжение на контакте есть, то соответствующий бит принимает значение 1, если нет, то 0. Эти контакты на ESP32-CAM предназначены для настройки в качестве входов или выходов в соответствии с потребностями пользователя. Цифровые контакты либо включены, либо выключены. При включении они находятся в состоянии ВЫСОКОГО напряжения 3,3 В, а при выключении - в состоянии НИЗКОГО напряжения 0 В. Когда цифровые контакты настроены как выходные, они устанавливаются на 0 или 3,3 вольта.

Для преобразования напряжения 0-3,3  цифровое представление (0 или 1) существует 2 пороговых значения: ниже 0,8 В – считается равным 0. Выше 2 В – считается равным 1. При подключении компонента к цифровому выводу убедитесь, что логические уровни совпадают. Если напряжение находится между пороговыми значениями, возвращаемое значение будет неопределенным.

Контакты SPI

Контакты SPI – SS / SCK / MISO / MOSI - это специальные контакты для связи с SPI. Последовательный периферийный интерфейс (SPI) - это последовательный протокол передачи данных, используемый микроконтроллерами для связи с одним или несколькими внешними устройствами по шинному соединению. SPI также может использоваться для подключения 2 микроконтроллеров. На шине SPI всегда есть одно устройство, которое обозначается как ведущее устройство, а все остальные - как подчиненные. В большинстве случаев микроконтроллер является основным устройством. Вывод SS (Slave Select) определяет, с каким устройством в данный момент взаимодействует ведущее устройство. Контакты SS / SCK / MISO / MOSI - это специальные контакты для связи SPI. Устройства с поддержкой SPI всегда имеют следующие контакты:

MISO (Master In Slave Out) – линия для отправки данных на ведущее устройство
MOSI (ведущий выход, подчиненный вход) – ведущая линия для отправки данных на периферийные устройства
SCK (Serial Clock) – тактовый сигнал, генерируемый ведущим устройством для синхронизации передачи данных.
Вывод SS (Slave Select) определяет, какое устройство является ведущим.

По умолчанию сопоставление выводов для SPI:

SPI MOSI MISO CLK CS
HSPI GPIO 13 GPIO 12 GPIO 14 GPIO 15

spi

Внешние прерывания

Внешнее прерывание - это системное прерывание, возникающее при наличии внешних событий. События могут исходить от пользователя или других аппаратных устройств в сети. Обычно эти прерывания в ESP32-CAM используются для считывания частоты прямоугольной волны, генерируемой кодерами, или для пробуждения процессора при внешнем событии. на ESP32-CAM все GPIO могут быть настроены как прерывания.
 

Сенсорные GPIO

ESP32-CAM имеет 7 внутренних емкостных сенсорных датчиков. Они могут ощущать изменения во всем, что содержит электрический заряд, например, в коже человека. Таким образом, они могут обнаруживать изменения, возникающие при касании GPIO пальцем. Эти контакты можно легко интегрировать в емкостные панели и заменить механические кнопки. Емкостные сенсорные контакты также можно использовать для пробуждения ESP32-CAM от глубокого сна.

Внутренние сенсорные датчики подключены к этим GPIO.

  • T0 (GPIO 4)
  • T1 (GPIO 0)
  • T2 (GPIO 2)
  • T3 (GPIO 15)
  • T4 (GPIO 13)
  • T5 (GPIO 12)
  • T6 (GPIO 14)
sensor pin
 

RTC GPIO

На ESP32-CAM есть поддержка RTC GPIO. GPIO, подключенные к подсистеме RTC с низким энергопотреблением, могут использоваться, когда ESP32-CAM находится в режиме глубокого сна. Эти графические процессоры RTC можно использовать для вывода ESP32-CAM из глубокого спящего режима при работе сопроцессора Ultra Low Power (ULP). В качестве внешнего источника пробуждения можно использовать следующие GPIO.

  • RTC_GPIO0 (GPIO36)
  • RTC_GPIO3 (GPIO39)
  • RTC_GPIO4 (GPIO34)
  • RTC_GPIO12 (GPIO2)
  • RTC_GPIO13 (GPIO15)
  • RTC_GPIO14 (GPIO13)
  • RTC_GPIO15 (GPIO12)
  • RTC_GPIO16 (GPIO14)
rtc

Системные контакты

Микросхема ESP32-CAM имеет следующие системные контакты:

  • GPIO 0
  • GPIO 2
  • GPIO 4
  • GPIO 5 (должен быть высоким во время загрузки)
  • GPIO 12 (должен быть низким во время загрузки)
  • GPIO 15 (должен быть высоким во время загрузки)
system pins

Они используются для перевода ESP32-CAM в режим загрузки или перепрошивки. На большинстве плат для разработки со встроенным USB / Serial вам не нужно беспокоиться о состоянии этих контактов. Плата переводит контакты в правильное состояние для перепрошивки или режима загрузки.

Однако, если у вас есть периферийные устройства, подключенные к этим выводам, у вас могут возникнуть проблемы при попытке загрузить новый код, прошить ESP32-CAM новой прошивкой или перезагрузить плату. Если у вас есть некоторые периферийные устройства, подключенные к системным пинам, и у вас возникают проблемы с загрузкой кода или перепрошивкой ESP32, это может быть связано с тем, что эти периферийные устройства не позволяют ESP32-CAM перейти в правильный режим. После сброса, перепрошивки или загрузки эти контакты работают должным образом.

Высокий уровень сигнала при загрузке

Некоторые GPIO меняют свое состояние на ВЫСОКОЕ или выводят ШИМ-сигналы при загрузке или сбросе. Это означает, что если у вас есть выходы, подключенные к этим GPIO, вы можете получить неожиданные результаты при сбросе или загрузке ESP32-CAM.

  • GPIO 1
  • GPIO 3
  • GPIO 14
  • GPIO 15

Контакты камеры

Следующие контакты используются для соединения между камерой и ESP32-CAM. Использование их в других целях может привести к непредсказуемым последствиям.
КАМЕРА OV2640 ESP32 Имя переменной в коде
D0 GPIO5 Y2_GPIO_NUM
D1 GPIO18 Y3_GPIO_NUM
D2 GPIO19 Y4_GPIO_NUM
D3 GPIO21 Y5_GPIO_NUM
D4 GPIO36 Y6_GPIO_NUM
D5 GPIO39 Y7_GPIO_NUM
D6 GPIO34 Y8_GPIO_NUM
D7 GPIO35 Y9_GPIO_NUM
XCLK GPIO0 XCLK_GPIO_NUM
PCLK GPIO22 PCLK_GPIO_NUM
VSYNC GPIO25 VSYNC_GPIO_NUM
HREF GPIO23 HREF_GPIO_NUM
SDA GPIO 26 SIOD_GPIO_NUM
SCL GPIO 27 SIOC_GPIO_NUM
ВЫВОД ПИТАНИЯ GPIO 32 PWDN_GPIO_NUM

В Arduino IDE определение выводов ESP32 CAM будет выглядеть следующим образом:

#define PWDN_GPIO_NUM 32
#define RESET_GPIO_NUM -1
#define XCLK_GPIO_NUM 0
#define SIOD_GPIO_NUM 26
#define SIOC_GPIO_NUM 27
#define Y9_GPIO_NUM 35
#define Y8_GPIO_NUM 34
#define Y7_GPIO_NUM 39
#define Y6_GPIO_NUM 36
#define Y5_GPIO_NUM 21
#define Y4_GPIO_NUM 19
#define Y3_GPIO_NUM 18
#define Y2_GPIO_NUM 5
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 23
#define PCLK_GPIO_NUM 22

Итоги

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

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

В целом, ESP32-CAM - это прекрасный выбор для тех, кто ищет универсальный и надежный модуль для своих проектов, связанных с видеонаблюдением и IoT.

Материал также доступен на моем канале: Яндекс Дзен и в группе ВК
Категория: Обзоры модулей | Добавил: :, (16.03.2023)
Просмотров: 2235 | Комментарии: 1 | Теги: ESP32-CAM, ESP32 | Рейтинг: 0.0/0
Поделиться:
Всего комментариев: 1
avatar
0
iivlev • 14:33, 19.04.2024
На этом модуле у меня построено видеонаблюдение на даче. Работает уже 5 лет. Я доволен как получилось. 
Вначале была задача - построить видеонаблюдение на даче где почти нет интернета. Настраивал все с полгода - итог: 
Куплен самый дешевый vps.на нем установлен Blynk. Все камеры управляются и настраиваются через него. Камеры работают в режиме  - делается снимок через определенное время (например через 2 сек.) и этот снимок отправляется на сервер vps. там стоит web сервер и я вижу эти картинки на страничке вживую. Нормально камеры могут работать только в режиме 600х800 и меньше. при увеличении разрешения камеры начинают глючить. Камеры иногда зависают - чтобы я не делал, все равно это случается. Поэтому пришлось ставить в код принудительную перезагрузку камер через определенное время. У камер есть еще один глюк зимой  - в сильный мороз у них иногда вдруг начинает светить светодиод, лечится только перезагрузкой. Камеры боятся переполюсовки по питанию - просто сгорают.  Но в общем я камерами доволен сейчас стоят 8 штук, работают без перерыва больше 5 лет.  Зимой при температуре ниже 40 камеры начинают пропадать из сети, но когда теплеет сами включаются. то же самое и когда сильная жара... но в целом я камерами доволен.
avatar