ESP32 для начинающих, описание пинов и онлайн-учебник

14 ноября 2026

Плата ESP32 DevKit с разъёмом USB Type-C на модуле ESP-WROOM-32

Учебник по ESP32 DevKit для начинающих — 13 уроков

ESP32 DevKit с Type-C — самая популярная плата семейства ESP32 в современном исполнении: два ядра до 240 МГц, Wi-Fi, Bluetooth и 25 доступных GPIO по цене обычной Arduino. В этой статье — учебник для начинающих из 13 уроков с готовыми скетчами, а затем описание платы: распиновка на 30 выводов, назначение каждого вывода и подводные камни, из-за которых проект может не запуститься. 

Что за плата

Плата построена на модуле ESP-WROOM-32: в нём микроконтроллер ESP32, 4 МБ флеш-памяти, кварц и антенна. На плате разъём USB Type-C с преобразователем CH340C для прошивки и монитора порта, стабилизатор 3,3 В, кнопки EN (сброс) и BOOT (GPIO0), светодиод питания PWR и светодиод D2 на GPIO2.

Type-C удобнее старого micro-USB: кабель вставляется любой стороной, а такие кабели сегодня есть у всех — от зарядки телефона. Если у вас уже есть проекты под старую плату, ничего переделывать не придётся: у версии с micro-USB и CP2102 та же распиновка, отличаются только разъём и драйвер USB.

ПараметрЗначение
Процессор2 ядра Xtensa LX6, до 240 МГц
Память520 КБ SRAM, 4 МБ флеш-памяти
Wi-Fi802.11 b/g/n, 2,4 ГГц
BluetoothBluetooth 4.2: классический (SPP, A2DP) и BLE
GPIO на гребёнке25, из них 4 — только вход
АЦП12 бит, 15 каналов на гребёнке
ЦАП2 канала, 8 бит (GPIO25, GPIO26)
Сенсорные входы9 (Touch0, Touch2–9)
Интерфейсы3 × UART, 2 × I2C, 2 × SPI для периферии, 2 × I2S, ШИМ на любом выходе
Питание5 В через USB или вывод VIN; логика 3,3 В

Распиновка ESP32 DevKit на 30 выводов

Плата на 30 выводов — два ряда по 15. Подписи на плате (D23, D22…) совпадают с номером GPIO, а номер в Arduino IDE равен номеру GPIO: pinMode(23, OUTPUT) — это GPIO23. В таблице выводы идут по порядку от антенны к разъёму USB.

Распиновка ESP32 DevKit ESP-WROOM-32 на 30 выводов

ВыводТипФункцииПримечание
Ряд с EN — от антенны к USB
ENВход сбросаКнопка ENLOW — сброс, HIGH — работа
GPIO36 (VP)Только входАЦП ADC1_CH0 (SENSOR_VP)Нет внутренней подтяжки — для кнопки нужен внешний резистор
GPIO39 (VN)Только входАЦП ADC1_CH3 (SENSOR_VN)Нет внутренней подтяжки
GPIO34Только входАЦП ADC1_CH6Нет внутренней подтяжки
GPIO35Только входАЦП ADC1_CH7Нет внутренней подтяжки
GPIO32Вход/выходАЦП ADC1_CH4, сенсор Touch9, ШИМ
GPIO33Вход/выходАЦП ADC1_CH5, сенсор Touch8, ШИМ
GPIO25Вход/выходЦАП DAC1, АЦП ADC2_CH8, ШИМ
GPIO26Вход/выходЦАП DAC2, АЦП ADC2_CH9, ШИМ
GPIO27Вход/выходАЦП ADC2_CH7, сенсор Touch7, ШИМ
GPIO14Вход/выходАЦП ADC2_CH6, сенсор Touch6, HSPI SCK, ШИМПри загрузке кратковременно выдаёт ШИМ-сигнал
GPIO12Вход/выходАЦП ADC2_CH5, сенсор Touch5, HSPI MISO, ШИМВывод обвязки: при включении должен быть LOW, иначе плата может не запуститься
GPIO13Вход/выходАЦП ADC2_CH4, сенсор Touch4, HSPI MOSI, ШИМ
GNDОбщий (GND)—
VINПитание, вход 5 В—Вместо USB можно подать 5 В
Ряд с D23 — от антенны к USB
GPIO23Вход/выходVSPI MOSI, ШИМ
GPIO22Вход/выходI2C SCL (по умолчанию в Arduino), ШИМ
GPIO1 (TX0)Вход/выходUART0 TX (Serial)Подключён к USB-UART: через него прошивка и монитор порта. Лучше не занимать
GPIO3 (RX0)Вход/выходUART0 RX (Serial)Подключён к USB-UART: через него прошивка и монитор порта. Лучше не занимать
GPIO21Вход/выходI2C SDA (по умолчанию в Arduino), ШИМ
GPIO19Вход/выходVSPI MISO, ШИМ
GPIO18Вход/выходVSPI SCK, ШИМ
GPIO5Вход/выходVSPI SS, ШИМВывод обвязки: при включении должен быть HIGH. При загрузке выдаёт ШИМ-сигнал
GPIO17Вход/выходUART2 TX, ШИМ
GPIO16Вход/выходUART2 RX, ШИМ
GPIO4Вход/выходАЦП ADC2_CH0, сенсор Touch0, ШИМ
GPIO2Вход/выходАЦП ADC2_CH2, сенсор Touch2, ШИМВывод обвязки: при прошивке должен быть LOW или не подключён
GPIO15Вход/выходАЦП ADC2_CH3, сенсор Touch3, HSPI SS, ШИМВывод обвязки: LOW при включении отключает загрузочные сообщения в UART. При загрузке выдаёт ШИМ-сигнал
GNDОбщий (GND)—
3V3Питание, выход 3,3 В—Суммарный ток внешних устройств — не больше 100 мА

«Вход/выход» — вывод можно настроить как цифровой вход (с внутренней подтяжкой к питанию или к земле) или как цифровой выход. ШИМ можно вывести на любой вывод, работающий на выход.

Выводы только на вход

GPIO34, 35, 36 (VP) и 39 (VN) работают только как входы: управлять с них светодиодом или реле не получится. Внутренней подтяжки у них тоже нет, поэтому кнопку на такой вывод подключайте с внешним резистором 10 кОм к 3,3 В или к земле. Зато это отличные аналоговые входы: все четыре относятся к АЦП1 и работают вместе с Wi-Fi.

Какие выводы лучше не занимать

ВыводПочему
GPIO1 (TX0), GPIO3 (RX0)Подключены к USB-UART: через них идёт прошивка и монитор порта. Если занять их своей схемой, плата может перестать прошиваться
GPIO6–11Заняты встроенной флеш-памятью. На плате на 30 выводов они не выведены, а на версии на 38 выводов выведены — но подключать к ним ничего нельзя
GPIO0, 2, 5, 12, 15Выводы обвязки — использовать можно, но с оглядкой (см. ниже)

Выводы обвязки (strapping pins)

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

ВыводЧто задаётКакой уровень нужен при включении
GPIO0Режим запускаHIGH — запуск программы (есть подтяжка), LOW — режим прошивки. Подключён к кнопке BOOT
GPIO2Режим прошивкиLOW или не подключён — иначе плата не войдёт в режим прошивки. На нём светодиод платы
GPIO12Напряжение флеш-памятиLOW. При HIGH флеш-память получит 1,8 В вместо 3,3 В, и плата не запустится. Самый коварный вывод: не вешайте на него подтяжку к питанию
GPIO15Вывод загрузочных сообщенийПри LOW плата не печатает служебный лог при включении. На работу не влияет
GPIO5Тайминг интерфейса SDIOHIGH (есть подтяжка). На обычную работу не влияет

После запуска это обычные GPIO. Без опаски к ним можно подключать то, что при включении не тянет вывод в «запрещённый» уровень: светодиоды через резистор, транзисторы для реле, входы датчиков.

Интерфейсы и выводы по умолчанию

Почти любой интерфейс ESP32 можно назначить на любые свободные выводы. Если выводы в программе не указаны, Arduino использует такие:

ИнтерфейсВыводы по умолчанию
I2CSDA — GPIO21, SCL — GPIO22
SPI (VSPI)MOSI — GPIO23, MISO — GPIO19, SCK — GPIO18, SS — GPIO5
SPI (HSPI)MOSI — GPIO13, MISO — GPIO12, SCK — GPIO14, SS — GPIO15
UART0 (Serial)TX — GPIO1, RX — GPIO3 (занят USB)
UART2 (Serial2)TX — GPIO17, RX — GPIO16
ЦАПGPIO25, GPIO26

Пример запуска I2C на других выводах:

Wire.begin(32, 33); // SDA = GPIO32, SCL = GPIO33

АЦП ЦАП и сенсорные входы

У ESP32 два 12-битных АЦП. АЦП1 — GPIO32–39, АЦП2 — GPIO0, 2, 4, 12–15 и 25–27. АЦП2 не работает, пока включён Wi-Fi, поэтому в проектах с Wi-Fi подключайте аналоговые датчики к GPIO32–39. Измеряемое напряжение — не выше 3,3 В. Учтите, что АЦП ESP32 нелинеен у краёв диапазона: при настройке по умолчанию точнее всего он измеряет примерно от 0,15 до 2,45 В, выше показания заметно искажаются, а около 3,1 В АЦП упирается в максимум. Для точных измерений ставьте делитель так, чтобы сигнал оставался в этом диапазоне.

Два 8-битных ЦАП на GPIO25 и GPIO26 выдают настоящее аналоговое напряжение — например, для простого звука или управления яркостью без ШИМ. У ESP32-S3 и ESP32-C3 ЦАП нет.

Сенсорные (ёмкостные) входы: Touch0 — GPIO4, Touch2 — GPIO2, Touch3 — GPIO15, Touch4 — GPIO13, Touch5 — GPIO12, Touch6 — GPIO14, Touch7 — GPIO27, Touch8 — GPIO33, Touch9 — GPIO32. К ним можно подключить металлическую площадку и сделать кнопку без механики:

void setup() { Serial.begin(115200); }
void loop() {
  Serial.println(touchRead(4)); // Touch0 = GPIO4: чем меньше число, тем ближе палец
  delay(200);
}

Встроенный светодиод

Светодиод D2 на плате подключён к GPIO2. Проверка платы — классический Blink:

void setup() { pinMode(2, OUTPUT); }
void loop() {
  digitalWrite(2, HIGH); delay(500);
  digitalWrite(2, LOW);  delay(500);
}

Настройки Arduino IDE

ПараметрЗначение
ПлатаESP32 Dev Module
Flash Size4MB (32Mb)
Upload Speed921600, если прошивка сбоит — 115200
Драйвер USBCH340 — для версии с Type-C, CP2102 — для старой версии с micro-USB. В Linux и свежих Windows обычно ставится сам. Если Windows не видит плату, скачайте драйвер CH340

Если при прошивке висит надпись «Connecting…» — зажмите кнопку BOOT, пока не начнётся загрузка, затем отпустите.

Чем классическая ESP32 отличается от S3 и C3

Новые ESP32-S3 и ESP32-C3 во многом удобнее, но у классической ESP32 есть то, чего у них нет:

  • Классический Bluetooth. Только классическая ESP32 умеет Bluetooth SPP (беспроводной COM-порт, связь с приложениями на телефоне) и A2DP — то есть может работать как Bluetooth-колонка или передавать звук на наушники. S3 и C3 поддерживают только Bluetooth LE.
  • Два ЦАП для аналогового выхода.
  • Огромное количество примеров и библиотек — большинство проектов в интернете написаны именно под ESP32 DevKit.

Если нужен Bluetooth-звук, связь по Bluetooth с телефоном через последовательный порт или просто проверенная плата «под любой урок» — берите классическую ESP32.

Питание

Плату можно питать от USB или подать 5 В на вывод VIN. Вывод 3V3 — выход стабилизатора платы, который питает и сам модуль ESP32. Суммарный ток всех устройств на выводе 3V3 не должен превышать 100 мА. Этого хватит для маломощных датчиков и небольшого дисплея. Датчики газа серии MQ, сервоприводы, светодиодные ленты и реле питайте от отдельного источника 5 В. Если на 3,3 В нужно больше тока, поставьте отдельный понижающий преобразователь, например Mini360 или LM2596: он почти не греется, в отличие от линейного стабилизатора на плате.

Все GPIO работают с логикой 3,3 В: подавать на них 5 В нельзя. Для датчиков с выходом 5 В нужен преобразователь уровней или резистивный делитель.

Учебник по ESP32 DevKit: 13 уроков

Распиновка — это справочник, а научиться работать с платой проще на практике. Все уроки рассчитаны на эту плату и проверены на ядре ESP32 для Arduino версии 3.x:

  1. Подготовка Arduino IDE и драйвер — ядро ESP32, драйвер CH340, что делать с «Connecting…».
  2. Мигаем светодиодом — встроенный светодиод на GPIO2 и внешний через резистор.
  3. Монитор порта — сообщения на компьютер и команды плате.
  4. Кнопки и подтяжка — кнопка BOOT, дребезг и выводы только на вход.
  5. Сенсорная кнопка — touchRead() и выключатель без механики.
  6. Потенциометр и АЦП — почему с Wi-Fi работают только GPIO32–39.
  7. ШИМ: плавная яркость — ledcAttach() в ядре 3.x.
  8. ЦАП: плата говорит «Дуино» — воспроизводим записанный голос через GPIO25.
  9. Сканер Wi-Fi — сети вокруг и уровень сигнала.
  10. Веб-сервер — включаем светодиод с телефона.
  11. Часы из интернета — точное время по NTP и часовой пояс.
  12. Bluetooth: связь с телефоном — классический Bluetooth SPP, которого нет у S3 и C3.
  13. Глубокий сон — пробуждение по таймеру и от касания.

В каждом уроке — готовый скетч с кнопкой «Копировать», объяснение и схема платы с выделенными выводами. Для большинства уроков хватит самой платы, для остальных — светодиода, кнопки и потенциометра.

Открыть учебник по ESP32 DevKit