← До всіх проєктів
Основи Початковий

Розпіновка ESP32 DevKit: які GPIO можна використовувати, а які — краще ні

38 виводів, але вільних для будь-чого — лише близько п'ятнадцяти. Шпаргалка з поясненнями: піни флеш-пам'яті, лише-вхідні GPIO34–39, strapping-піни, через які плата не прошивається, ADC2 і Wi-Fi, струми і виводи для пробудження з deep sleep.

Складність
Початковий
Час
20 min
Категорія
Основи
Оновлено

Коротка відповідь

Для кнопок, світлодіодів, реле й датчиків без вагань беріть GPIO4, 13, 14, 16–19, 21–23, 25–27, 32, 33. Для аналогових входів — GPIO32–39 (ADC1). Усе інше має свої застереження, про які нижче.

Шпаргалка

GPIO Що важливо знати Висновок
0 strapping: LOW при старті — режим прошивки; кнопка BOOT обережно
1, 3 UART0 TX/RX — туди йде Serial і прошивка не чіпати
2 strapping, вбудований світлодіод; має бути LOW/вільним при прошивці обережно
4 ADC2, touch T0 ✔
5 strapping (HIGH при старті), SPI SS ✔ з застереженням
6–11 флеш-пам'ять модуля — використання «вбиває» плату ✘ ніколи
12 strapping: HIGH при старті перемикає флеш на 1.8 В — плата не завантажується обережно
13, 14 ADC2, touch ✔
15 strapping (HIGH при старті), виводить лог завантаження ✔ з застереженням
16, 17 UART2 за замовчуванням (на WROVER — PSRAM!) ✔ на WROOM
18, 19, 23 SPI SCK, MISO, MOSI ✔
21, 22 I2C SDA, SCL ✔
25, 26 DAC1, DAC2, ADC2 ✔
27 ADC2, touch ✔
32, 33 ADC1, touch, кварц RTC ✔
34, 35, 36, 39 лише вхід, без підтяжок, ADC1 лише для входів

Strapping-піни

У момент ввімкнення ESP32 зчитує рівні на GPIO0, 2, 5, 12 і 15, щоб вирішити, як завантажуватися. Звідси типові загадки:

  • Плата не прошивається, поки підключений модуль. Модуль тягне GPIO2 або GPIO12 куди не слід. Особливо небезпечний GPIO12: HIGH при старті вмикає живлення флешу 1.8 В, і плата циклічно перезавантажується з flash read err.
  • Реле клацає при ввімкненні. На GPIO0, 2, 5 і 15 при старті з'являються імпульси або ШІМ — не вішайте на них виконавчі пристрої, які не повинні спрацьовувати самі.

GPIO34–39: лише вхід

Ці виводи не можуть бути виходами, і в них немає внутрішніх підтяжок — INPUT_PULLUP мовчки не працює. Кнопку на них під'єднують із зовнішнім резистором 10 кОм. Зате це найкращі аналогові входи: ADC1 працює і з увімкненим Wi-Fi.

ADC2 і Wi-Fi

АЦП має два блоки. ADC2 (GPIO0, 2, 4, 12–15, 25–27) використовується радіомодулем, тож коли Wi-Fi увімкнено, analogRead() на цих виводах повертає помилку або 0. Для датчиків у Wi-Fi-проєкті — лише ADC1: GPIO32–39.

Струм

Рекомендований струм одного виводу — до 20 мА, абсолютний максимум — 40 мА. Світлодіод без резистора або реле без транзистора виводять GPIO з ладу. Сумарно з усіх виводів — не більше ~100 мА; для потужних навантажень — транзистор або MOSFET.

Deep sleep

Прокидатися від виводу (ext0/ext1) ESP32 уміє лише на RTC GPIO: 0, 2, 4, 12–15, 25–27, 32–39. Кнопка пробудження на GPIO16 чи 22 не спрацює.

Спробуйте в симуляторі

Симулятор перевіряє ці правила: pinMode(6, OUTPUT) «вбиває» плату з поясненням, pinMode(34, OUTPUT) дає помилку, а analogRead() на ADC2 з Wi-Fi повертає 0 і попереджає. Відкрийте будь-який приклад, перенесіть провід на «заборонений» вивід і подивіться на вкладку «Проблеми».