ESP32-S3 N16R8 распиновка и описание выводов GPIO

ESP32-S3 N16R8 — одна из самых мощных плат семейства ESP32: два ядра до 240 МГц, 16 МБ флеш-памяти, 8 МБ PSRAM, Wi-Fi, Bluetooth 5 и родной USB. В этой статье — подробная распиновка платы, назначение каждого вывода и то, на что нужно обратить внимание, чтобы проект заработал с первого раза.
Что за плата
Плата повторяет официальную ESP32-S3-DevKitC-1 и построена на модуле ESP32-S3-WROOM-1-N16R8. Буквы в названии означают объём памяти: N16 — 16 МБ флеш-памяти, R8 — 8 МБ PSRAM. На плате:
- два разъёма USB Type-C — через преобразователь USB-UART и родной USB микроконтроллера;
- кнопки BOOT (GPIO0) и RST;
- адресный RGB-светодиод WS2812 на GPIO48;
- стабилизатор 3,3 В и два ряда по 22 вывода.
Распиновка ESP32-S3 N16R8
Ниже все 44 вывода по порядку от антенны к разъёмам USB. Подписи на плате совпадают с номером GPIO, а номер в Arduino IDE равен номеру GPIO: pinMode(4, OUTPUT) — это GPIO4.
| Вывод | Тип | Функции | Примечание |
|---|---|---|---|
| Ряд с 3V3 — от антенны к USB | |||
| 3V3 | Питание, выход 3,3 В | — | Питание датчиков |
| 3V3 | Питание, выход 3,3 В | — | Питание датчиков |
| RST | Сброс (EN) | Кнопка RST | LOW — сброс, HIGH — работа |
| GPIO4 | Вход/выход | АЦП ADC1_CH3, Touch4, ШИМ | |
| GPIO5 | Вход/выход | АЦП ADC1_CH4, Touch5, ШИМ | |
| GPIO6 | Вход/выход | АЦП ADC1_CH5, Touch6, ШИМ | |
| GPIO7 | Вход/выход | АЦП ADC1_CH6, Touch7, ШИМ | |
| GPIO15 | Вход/выход | АЦП ADC2_CH4, ШИМ | |
| GPIO16 | Вход/выход | АЦП ADC2_CH5, ШИМ | |
| GPIO17 | Вход/выход | АЦП ADC2_CH6, ШИМ | |
| GPIO18 | Вход/выход | АЦП ADC2_CH7, ШИМ | |
| GPIO8 | Вход/выход | АЦП ADC1_CH7, Touch8, I2C SDA (Arduino), ШИМ | |
| GPIO3 | Вход/выход | АЦП ADC1_CH2, Touch3, ШИМ | Вывод обвязки (выбор источника JTAG). Лучше не тянуть к земле при включении |
| GPIO46 | Вход/выход | ШИМ | Вывод обвязки: при включении должен быть LOW или не подключён |
| GPIO9 | Вход/выход | АЦП ADC1_CH8, Touch9, I2C SCL (Arduino), ШИМ | |
| GPIO10 | Вход/выход | АЦП ADC1_CH9, Touch10, SPI SS (Arduino), ШИМ | |
| GPIO11 | Вход/выход | АЦП ADC2_CH0, Touch11, SPI MOSI (Arduino), ШИМ | |
| GPIO12 | Вход/выход | АЦП ADC2_CH1, Touch12, SPI SCK (Arduino), ШИМ | |
| GPIO13 | Вход/выход | АЦП ADC2_CH2, Touch13, SPI MISO (Arduino), ШИМ | |
| GPIO14 | Вход/выход | АЦП ADC2_CH3, Touch14, ШИМ | |
| 5V | Питание 5 В | — | При питании от USB — выход 5 В; можно подать 5 В на этот вывод вместо USB |
| G | Общий (GND) | — | |
| Ряд с TX/RX — от антенны к USB | |||
| G | Общий (GND) | — | |
| GPIO43 (TX) | Вход/выход | UART0 TX, ШИМ | Подключён к USB-UART (второй разъём Type-C): прошивка и монитор порта |
| GPIO44 (RX) | Вход/выход | UART0 RX, ШИМ | Подключён к USB-UART (второй разъём Type-C): прошивка и монитор порта |
| GPIO1 | Вход/выход | АЦП ADC1_CH0, Touch1, ШИМ | |
| GPIO2 | Вход/выход | АЦП ADC1_CH1, Touch2, ШИМ | |
| GPIO42 | Вход/выход | JTAG MTMS, ШИМ | |
| GPIO41 | Вход/выход | JTAG MTDI, ШИМ | |
| GPIO40 | Вход/выход | JTAG MTDO, ШИМ | |
| GPIO39 | Вход/выход | JTAG MTCK, ШИМ | |
| GPIO38 | Вход/выход | ШИМ | |
| GPIO37 | Не использовать | Октальная PSRAM | У версии N16R8 занят памятью PSRAM — подключение приведёт к сбоям |
| GPIO36 | Не использовать | Октальная PSRAM | У версии N16R8 занят памятью PSRAM — подключение приведёт к сбоям |
| GPIO35 | Не использовать | Октальная PSRAM | У версии N16R8 занят памятью PSRAM — подключение приведёт к сбоям |
| GPIO0 | Вход/выход | ШИМ | Кнопка BOOT. LOW при включении — режим прошивки |
| GPIO45 | Вход/выход | ШИМ | Вывод обвязки: при включении должен быть LOW (питание флеш-памяти 3,3 В) |
| GPIO48 | Вход/выход | RGB-светодиод WS2812, ШИМ | Встроенный адресный светодиод. Можно использовать как выход, светодиод будет мигать |
| GPIO47 | Вход/выход | ШИМ | |
| GPIO21 | Вход/выход | ШИМ | |
| GPIO20 | Вход/выход | АЦП ADC2_CH9, USB D+, ШИМ | Занят разъёмом USB (OTG). Использовать, только если этот разъём не нужен |
| GPIO19 | Вход/выход | АЦП ADC2_CH8, USB D−, ШИМ | Занят разъёмом USB (OTG). Использовать, только если этот разъём не нужен |
| G | Общий (GND) | — | |
| G | Общий (GND) | — | |
«Вход/выход» значит, что вывод работает и как цифровой вход (с внутренней подтяжкой к питанию или к земле), и как цифровой выход. У ESP32-S3 все GPIO двунаправленные — выводов «только вход», как GPIO34–39 у обычного ESP32, здесь нет. ШИМ можно вывести на любой GPIO.
Какие выводы нельзя или нежелательно использовать
| Выводы | Почему |
|---|---|
| GPIO35, 36, 37 | Заняты октальной PSRAM у версий N16R8 и других с буквой R8. Подключение к ним приводит к сбоям и перезагрузкам |
| GPIO26–32, 33, 34 | Заняты флеш-памятью и PSRAM внутри модуля, на гребёнку не выведены |
| GPIO19, 20 | Линии родного USB (D− и D+). Свободны, только если разъём USB OTG не используется |
| GPIO43, 44 | UART0, подключён к преобразователю USB-UART. Через него идёт прошивка и монитор порта |
| GPIO0, 3, 45, 46 | Выводы обвязки — определяют режим запуска. Использовать можно, но с оглядкой (см. ниже) |
| GPIO48 | RGB-светодиод на плате. Как выход использовать можно, светодиод будет реагировать |
Выводы обвязки (strapping pins)
В момент включения или сброса ESP32-S3 читает уровни на четырёх выводах и по ним выбирает режим работы. Если подключённая к ним схема задаст неправильный уровень, плата не запустит программу или не прошьётся.
| Вывод | Что задаёт | Какой уровень нужен при включении |
|---|---|---|
| GPIO0 | Режим запуска | HIGH — запуск программы (есть подтяжка на плате), LOW — режим прошивки. Подключён к кнопке BOOT |
| GPIO46 | Режим прошивки | LOW или не подключён (внутренняя подтяжка к земле) |
| GPIO45 | Напряжение питания флеш-памяти | LOW или не подключён. При HIGH флеш-память получит 1,8 В вместо 3,3 В, и плата не запустится |
| GPIO3 | Источник сигналов JTAG | Обычно не влияет. Не подтягивайте к земле без необходимости |
После запуска все эти выводы работают как обычные GPIO. Безопасно подключать к ним то, что при включении не тянет вывод в «запрещённый» уровень: например, светодиоды через резистор, выходы на реле через транзистор.
Два разъёма USB: в чём разница
- USB-UART (часто подписан «COM» или «UART») — работает через преобразователь, подключённый к GPIO43/44. Подходит для прошивки и монитора порта в любом случае, даже если программа зависла.
- USB OTG (подписан «USB») — родной USB микроконтроллера на GPIO19/20. Через него тоже можно прошивать, а ещё плата может работать как USB-клавиатура, мышь, MIDI-устройство или флешка. Встроенный отладчик JTAG тоже работает через этот разъём.
Настройки Arduino IDE для ESP32-S3 N16R8
| Параметр | Значение |
|---|---|
| Плата | ESP32S3 Dev Module |
| Flash Size | 16MB (128Mb) |
| PSRAM | OPI PSRAM — без этого 8 МБ PSRAM не будут доступны |
| Partition Scheme | любая схема на 16 МБ, например «16M Flash (3MB APP/9.9MB FATFS)» |
| USB CDC On Boot | Enabled — если монитор порта нужен через разъём USB OTG; Disabled — если через USB-UART |
| Upload Mode | UART0 / Hardware CDC — подходит для обоих разъёмов |
Если плата не прошивается, зажмите BOOT, нажмите и отпустите RST, затем отпустите BOOT — плата перейдёт в режим прошивки.
Интерфейсы и выводы по умолчанию
Почти любой интерфейс ESP32-S3 можно назначить на любые свободные GPIO. Если выводы не указаны в программе, Arduino использует такие:
| Интерфейс | Выводы по умолчанию |
|---|---|
| I2C | SDA — GPIO8, SCL — GPIO9 |
| SPI | MOSI — GPIO11, MISO — GPIO13, SCK — GPIO12, SS — GPIO10 |
| UART0 (Serial) | TX — GPIO43, RX — GPIO44 |
| USB | D− — GPIO19, D+ — GPIO20 |
Пример запуска I2C на других выводах:
Wire.begin(17, 18); // SDA = GPIO17, SCL = GPIO18
АЦП и сенсорные входы
У ESP32-S3 два 12-битных АЦП на 20 каналов. ADC1 — GPIO1–10, ADC2 — GPIO11–20. ADC2 не работает, пока включён Wi-Fi, поэтому для аналоговых датчиков в проектах с Wi-Fi используйте GPIO1–10. Измеряемое напряжение — не выше 3,3 В; для измерения большего напряжения нужен резистивный делитель.
Сенсорные (емкостные) входы Touch1–Touch14 находятся на GPIO1–14 — к ним можно подключить металлическую площадку и сделать сенсорную кнопку без механики.
Встроенный RGB-светодиод
Светодиод WS2812 подключён к GPIO48. Проще всего управлять им библиотекой Adafruit NeoPixel:
#include <Adafruit_NeoPixel.h>
Adafruit_NeoPixel led(1, 48, NEO_GRB + NEO_KHZ800);
void setup() {
led.begin();
led.setBrightness(30);
}
void loop() {
led.setPixelColor(0, led.Color(255, 0, 0)); led.show(); delay(500); // красный
led.setPixelColor(0, led.Color(0, 255, 0)); led.show(); delay(500); // зелёный
led.setPixelColor(0, led.Color(0, 0, 255)); led.show(); delay(500); // синий
}
Питание
Плату можно питать от любого из разъёмов USB или подать 5 В на вывод 5V. Вывод 3V3 — выход стабилизатора платы, от него можно питать датчики. Все GPIO работают с логикой 3,3 В: подавать на них 5 В нельзя — для датчиков с выходом 5 В нужен преобразователь уровней или делитель.
Купить плату можно в нашем магазине: ESP32-S3 N16R8 с двумя Type-C.
0 комментариев