Детальный обзор ESP32-CAM
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
ESP32-S имеет в общей сложности 34 контакта, но из-за того, что часть контактов задействована для работы с камерой для использования доступны лишь 16.
Контакты питания
Модуль имеет три контакта GND и два плюсовых контакта питания на 5 В и 3,3 В. Эти контакты можно использовать для питания платы Но от 3,3 В модуль работает не очень стабильно, так что лучше все же подавать на него 5В если вы хотите избежать частых зависаний и неожиданных перезагрузок.
Питание внешних устройств
Также на плате 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 разъем. Выбор типа используемой антенны осуществляется с помощью перемычки на плате возле разъема.
По умолчанию она установлена в верхнее положение для использование внутренней антенны. Для использования внешней, перемычку следует выпаять и переместить в нижнее положение.
Контакты 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 бит.
Аналого-цифровое преобразование
АЦП - это электронная схема, используемая для преобразования аналоговых сигналов в цифровые сигналы. Это цифровое представление аналоговых сигналов позволяет процессору (который является цифровым устройством) измерять аналоговый сигнал и использовать его в своей работе. Контакты 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 мА.
Цифровой - это способ представления напряжения. Если напряжение на контакте есть, то соответствующий бит принимает значение 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 |
Внешние прерывания
Внешнее прерывание - это системное прерывание, возникающее при наличии внешних событий. События могут исходить от пользователя или других аппаратных устройств в сети. Обычно эти прерывания в 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)
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)
Системные контакты
Микросхема ESP32-CAM имеет следующие системные контакты:
- GPIO 0
- GPIO 2
- GPIO 4
- GPIO 5 (должен быть высоким во время загрузки)
- GPIO 12 (должен быть низким во время загрузки)
- GPIO 15 (должен быть высоким во время загрузки)
Они используются для перевода 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.