ESP32-CAM AI-Thinker: распиновка и руководство по GPIO

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

Схема распиновки

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

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

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

На следующем рисунке показана принципиальная схема ESP32-CAM.

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

Источник изображения

Вы можете скачать PDF-файл с лучшим разрешением в этом GitHub-репозитории.

Выводы питания

ESP32-CAM имеет три вывода GND (отмечены чёрным цветом) и два вывода питания (отмечены красным цветом): 3.3V и 5V.

Вы можете питать ESP32-CAM через выводы 3.3V или 5V. Однако многие пользователи сообщали об ошибках при питании ESP32-CAM от 3.3V, поэтому мы всегда рекомендуем питать ESP32-CAM через вывод 5V.

Выходной вывод питания

Также имеется вывод, обозначенный на плате как VCC (отмечен жёлтым прямоугольником). Вы не должны использовать этот вывод для питания ESP32-CAM. Это выходной вывод питания. Он может выдавать либо 5V, либо 3.3V.

В нашем случае ESP32-CAM выдаёт 3.3V независимо от того, питается ли плата от 5V или 3.3V. Рядом с выводом VCC расположены две контактные площадки. Одна обозначена как 3.3V, другая — как 5V.

ESP32-CAM VCC выводы питания

Если присмотреться, вы увидите перемычку на контактных площадках 3.3V. Если вы хотите получить 5V на выводе VCC, вам нужно отпаять это соединение и запаять контактные площадки 5V.

Последовательные выводы (Serial)

GPIO 1 и GPIO 3 — это последовательные выводы (TX и RX соответственно). Поскольку ESP32-CAM не имеет встроенного программатора, вам нужно использовать эти выводы для связи с платой и загрузки кода.

Лучший способ загрузки кода на ESP32-CAM — использование FTDI-программатора.

Узнайте, как загрузить код на ESP32-CAM AI-Thinker.

Вы можете использовать GPIO 1 и GPIO 3 для подключения других периферийных устройств, таких как выходы или датчики, после загрузки кода. Однако вы не сможете открыть Serial Monitor, чтобы проверить, всё ли в порядке с вашей установкой.

GPIO 0

GPIO 0 определяет, находится ли ESP32 в режиме прошивки или нет. Этот GPIO внутренне подключён к подтягивающему резистору 10 кОм.

Когда GPIO 0 подключён к GND, ESP32 переходит в режим прошивки, и вы можете загрузить код на плату.

  • GPIO 0 подключён к GND — ESP32-CAM в режиме прошивки

Чтобы ESP32 работал в «обычном» режиме, просто отключите GPIO 0 от GND.

GPIO 16

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

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

Следующие выводы используются для взаимодействия с картой microSD во время её работы.

MicroSD карта

ESP32

CLK

GPIO 14

CMD

GPIO 15

DATA0

GPIO 2

DATA1 / вспышка

GPIO 4

DATA2

GPIO 12

DATA3

GPIO 13

Если вы не используете карту microSD, вы можете использовать эти выводы как обычные входы/выходы. Вы можете ознакомиться с руководством по распиновке ESP32, чтобы узнать о возможностях этих выводов.

Чтобы освободить несколько GPIO, вы можете настроить карту microSD на работу в 1-битном режиме. В этом случае вы освободите GPIO 12 и 13.

Все эти GPIO являются RTC и поддерживают АЦП: GPIO 2, 4, 12, 13, 14 и 15.

Вспышка (GPIO 4)

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

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

Примечание: один из наших читателей поделился тем, что если вы инициализируете карту microSD следующим образом, у вас не будет этой проблемы, потому что карта microSD не будет использовать эту линию данных.*

SD_MMC.begin("/sdcard", true)

* мы обнаружили, что это работает и светодиод не даёт эффекта вспышки. Однако светодиод остаётся включённым с низкой яркостью — мы не уверены, что мы что-то упускаем.

GPIO 33 — встроенный красный светодиод

ESP32-CAM AI-Thinker встроенный красный светодиод

Рядом с кнопкой RST расположен встроенный красный светодиод. Этот светодиод внутренне подключён к GPIO 33. Вы можете использовать этот светодиод для индикации того, что что-то происходит. Например, включить красный светодиод при подключении к Wi-Fi.

Этот светодиод работает с инвертированной логикой: вы отправляете сигнал LOW, чтобы включить его, и HIGH, чтобы выключить.

Вы можете поэкспериментировать, загрузив следующий фрагмент кода, и посмотреть, загорится ли светодиод.

void setup() {
  pinMode(33, OUTPUT);
}

void loop() {
  digitalWrite(33, LOW);
}

Подключения камеры

Соединения между камерой и ESP32-CAM AI-Thinker показаны в следующей таблице.

Камера OV2640

ESP32

Имя переменной в коде

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

Заключение

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

У нас есть несколько проектов с ESP32-CAM, которые могут вам понравиться: