Подключение и настройка ESP32-CAM
Веб-сервер потокового видео ESP32-CAM. Интеграция с Home Assistant

Распиновка ESP32-CAM AI-Thinker

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

Основные характеристики 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% относительной влажности.
Схема подключения модуля к компьютеру для программирования через USB-to-UART TTL конвертер

Для большинства случаев питание 5v на модуль необходимо подавать отдельно, не забывая при этом, что земля у всей связки должна быть общей
Для подключения к Arduino необходимо интегрировать поддержку нашего модуля ESP32. Идем в настройки (File - Preferences) и в нижней части окна настроек в Additional Boards Manager URLs добавляем строку:
https://dl.espressif.com/dl/package_esp32_index.json
Теперь в Boards Manager (Tools - Board - Boards Manager) нужно найти и установить поддержку esp32

Подключение карты MicroSD
Следующие контакты используются для взаимодействия с картой памяти microSD, когда она установлена в соответствующий разъем на плате.
MicroSD card ESP32
CLK GPIO 14
CMD GPIO 15
DATA0 GPIO 2
DATA1 / flashlight GPIO 4
DATA2 GPIO 12
DATA3 GPIO 13
Если вы не используете карту microSD, вы можете использовать эти контакты как обычные входы / выходы. Вы можете посмотреть руководство по распиновке ESP32, чтобы увидеть особенности этих контактов.
Все эти GPIO являются RTC и поддерживают ADC: GPIO 2, 4, 12, 13, 14 и 15.
Фонарик (GPIO 4)

Фонарик — этот светодиод внутренне подключен к GPIO 4.
Этот GPIO также подключен к слоту для карты microSD, поэтому у вас могут возникнуть проблемы при попытке использовать оба устройства одновременно — фонарик загорится при использовании карты microSD.
Примечание: один из наших читателей поделился, что у вас не будет этой проблемы, если вы инициализируете карту microSD следующим образом, потому что карта microSD не будет использовать эту линию данных.*
SD_MMC.begin("/sdcard", true)
* после проверки было обнаружено, что это работает, и что светодиод не дает такого эффекта вспышки. Однако светодиод продолжает гореть с низкой яркостью – возможно при проверке был упущен какой-то момент.
GPIO 33 - встроенный красный светодиод
Рядом с кнопкой RST есть встроенный красный светодиод. Этот светодиод внутренне подключен к GPIO 33. Вы можете использовать этот светодиод, чтобы указать, что что-то происходит. Например, если Wi-Fi подключен, светодиод горит красным или наоборот.

Этот светодиод работает с перевернутой логикой, поэтому вы отправляете LOW сигнал на включение и HIGH сигнал, чтобы выключить его.
Вы можете поэкспериментировать, загрузив следующий фрагмент кода, и посмотреть, светится ли этот светодиод.
void setup() {
pinMode(33, OUTPUT);
}
void loop() {
digitalWrite(33, LOW);
delay(500);
digitalWrite(33, HIGH);
delay(500);
}
Подключениe камеры
Соединения между камерой и ESP32-CAM AI-Thinker показаны в следующей таблице.
OV2640 CAMERA ESP32 Variable name in code
D0 GPIO 5 Y2_GPIO_NUM
D1 GPIO 18 Y3_GPIO_NUM
D2 GPIO 19 Y4_GPIO_NUM
D3 GPIO 21 Y5_GPIO_NUM
D4 GPIO 36 Y6_GPIO_NUM
D5 GPIO 39 Y7_GPIO_NUM
D6 GPIO 34 Y8_GPIO_NUM
D7 GPIO 35 Y9_GPIO_NUM
XCLK GPIO 0 XCLK_GPIO_NUM
PCLK GPIO 22 PCLK_GPIO_NUM
VSYNC GPIO 25 VSYNC_GPIO_NUM
HREF GPIO 23 HREF_GPIO_NUM
SDA GPIO 26 SIOD_GPIO_NUM
SCL GPIO 27 SIOC_GPIO_NUM
POWER PIN GPIO 32 PWDN_GPIO_NUM
Определение контактов для ESP32-CAM AI-Thinker в среде Arduino IDE должно быть следующим:
#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