Справочник
Распиновка ESP32 DevKit на 30 выводов, характеристики, выводы обвязки и частые проблемы.
Характеристики
| Модуль | ESP-WROOM-32: ESP32, 4 МБ флеш, кварц, антенна |
| Процессор | 2 ядра Xtensa LX6, до 240 МГц |
| Память | 520 КБ SRAM, 4 МБ флеш |
| Wi-Fi | 802.11 b/g/n, только 2,4 ГГц |
| Bluetooth | 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, ШИМ на любом выходе |
| USB | Type-C, преобразователь CH340C |
| Питание | 5 В через USB или вывод VIN; логика 3,3 В |
| Где купить | ESP32 DevKit Type-C CH340 — в магазине duino.ru |
Подписи на плате (D23, D22…) совпадают с номером GPIO, и в Arduino IDE пишется тот же номер: pinMode(23, OUTPUT) — это GPIO23.
Распиновка
| Вывод | Тип | Функции | Примечание |
|---|---|---|---|
| Ряд с EN — от антенны к USB | |||
EN | Вход сброса | Кнопка EN | LOW — сброс, HIGH — работа |
GPIO36 (VP) | Только вход | АЦП ADC1_CH0 | Нет внутренней подтяжки |
GPIO39 (VN) | Только вход | АЦП ADC1_CH3 | Нет внутренней подтяжки |
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 | Земля | ||
VIN | Питание, вход 5 В | Вместо USB можно подать 5 В | |
| Ряд с D23 — от антенны к USB | |||
GPIO23 | Вход/выход | VSPI MOSI | |
GPIO22 | Вход/выход | I2C SCL по умолчанию | |
GPIO1 (TX0) | Вход/выход | UART0 TX (Serial) | Подключён к CH340, лучше не занимать |
GPIO3 (RX0) | Вход/выход | UART0 RX (Serial) | Подключён к CH340, лучше не занимать |
GPIO21 | Вход/выход | I2C SDA по умолчанию | |
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 или не подключён. Светодиод D2 |
GPIO15 | Вход/выход | АЦП ADC2_CH3, Touch3, HSPI SS | Обвязка: LOW отключает загрузочный лог |
GND | Земля | ||
3V3 | Питание, выход 3,3 В | Внешним устройствам — не больше 100 мА | |
ШИМ можно вывести на любой вывод, работающий на выход. Выводы GPIO6–11 заняты флеш-памятью и на плату на 30 выводов не выведены.
Выводы обвязки (strapping pins)
В момент включения ESP32 читает уровни на пяти выводах и по ним выбирает режим работы. Если подключённая схема задаст неправильный уровень, плата не запустит программу или не прошьётся. После запуска это обычные GPIO.
| Вывод | Что задаёт | Какой уровень нужен при включении |
|---|---|---|
GPIO0 | Режим запуска | HIGH — запуск программы (есть подтяжка), LOW — режим прошивки. Подключён к кнопке BOOT |
GPIO2 | Режим прошивки | LOW или не подключён — иначе плата не войдёт в режим прошивки. На нём светодиод D2 |
GPIO12 | Напряжение флеш-памяти | LOW. При HIGH флеш получит 1,8 В вместо 3,3 В, и плата не запустится. Не вешайте на него подтяжку к питанию |
GPIO15 | Загрузочные сообщения | При LOW плата не печатает служебный лог при включении. На работу не влияет |
GPIO5 | Тайминг интерфейса SDIO | HIGH (есть подтяжка). На обычную работу не влияет |
Интерфейсы по умолчанию
| Интерфейс | Выводы |
|---|---|
| I2C | SDA — 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 |
| АЦП1 (работает с Wi-Fi) | GPIO32–39 |
Почти любой интерфейс можно назначить на другие выводы, например Wire.begin(32, 33) — I2C на GPIO32 (SDA) и GPIO33 (SCL).
Питание
Плату питают от USB или подают 5 В на VIN. Вывод 3V3 — выход стабилизатора платы, который питает и саму ESP32: внешним устройствам с него — не больше 100 мА. Сервоприводы, светодиодные ленты, реле и датчики газа MQ питайте от отдельного источника 5 В. Все GPIO работают с логикой 3,3 В: подавать на них 5 В нельзя.
Частые проблемы
| Проблема | Решение |
|---|---|
| Компьютер не видит плату | Другой кабель (нужен с передачей данных), драйвер CH340 в Windows, sudo apt remove brltty в Ubuntu |
Висит Connecting.... | Зажать BOOT до начала загрузки. Отключить схему от GPIO0, 2, 12 |
| Плата не запускается со схемой, а без неё работает | Проверьте выводы обвязки, особенно GPIO12 — при включении на нём должен быть LOW |
analogRead() перестал работать после добавления Wi-Fi | Перенесите датчик на GPIO32–39 (АЦП1) |
| Кнопка на GPIO34–39 срабатывает сама | У этих выводов нет внутренней подтяжки — нужен внешний резистор 10 кОм |
Ошибка ledcSetup was not declared | В ядре 3.x используйте ledcAttach(pin, freq, bits) и ledcWrite(pin, duty) |
| Плата перезагружается при включении Wi-Fi | Не хватает тока: другой кабель или порт USB, конденсатор 100–470 мкФ между 3V3 и GND (100, 220 и 470 мкФ есть в наборе конденсаторов) |
| «Sketch too big» | Инструменты → Partition Scheme → Huge APP (3MB No OTA) |