← До всіх проєктів
Основи Середній

ESP32-S3 DevKitC-1: два USB, PSRAM, RGB-світлодіод і виводи, яких краще не чіпати

Найпотужніший із сучасних ESP32: два ядра по 240 МГц, до 8 МБ PSRAM, нативний USB і 14 сенсорних входів. Розбираємося, у який USB-порт вставляти кабель, чому GPIO35–37 зайняті, як увімкнути RGB-світлодіод і чим touch на S3 відрізняється від класичного ESP32.

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

Про плату

ESP32-S3 — двоядерний Xtensa LX7 на 240 МГц з Wi-Fi 4, Bluetooth 5 LE, векторними інструкціями для нейромереж і нативним USB. Плата ESP32-S3-DevKitC-1 має 44 виводи, два порти USB-C і RGB-світлодіод WS2812. Це найкращий вибір для камер, дисплеїв з LVGL, розпізнавання голосу і USB-пристроїв: клавіатур, MIDI-контролерів, флешок.

Який USB-порт

На платі два роз'єми:

  • UART — через перетворювач CP2102N/CH343. Працює завжди, навіть з «поламаною» прошивкою, і сам перезавантажує плату для прошивки.
  • USB — нативний USB самого чипа (GPIO19/20). Потрібен для USB HID (USB.h, USBHIDKeyboard), MIDI, MSC. Щоб бачити тут Serial, увімкніть Tools → USB CDC On Boot → Enabled.

Для першого знайомства користуйтеся UART-портом.

Модулі й PSRAM

Маркування модуля підказує пам'ять: N8R8 — 8 МБ флеш і 8 МБ PSRAM, N16R8 — 16 і 8, N8 — без PSRAM. У модулях з octal PSRAM (R8) виводи GPIO35, 36 і 37 зайняті пам'яттю — не використовуйте їх, навіть якщо вони виведені на гребінку. GPIO26–32 зайняті флешем завжди. В Arduino IDE для PSRAM вкажіть Tools → PSRAM → OPI PSRAM.

Розпіновка коротко

Що Виводи
ADC1 GPIO1–10
ADC2 (не працює з Wi-Fi) GPIO11–20
Touch GPIO1–14 (T1–T14)
I2C за замовчуванням SDA 8, SCL 9
SPI за замовчуванням SCK 12, MISO 13, MOSI 11, SS 10
UART0 TX 43, RX 44
RGB-світлодіод GPIO48 (на ревізії v1.1 — GPIO38)
Strapping GPIO0 (BOOT), 3, 45, 46
USB GPIO19 (D−), GPIO20 (D+)
Зайняті GPIO26–32 (флеш), 35–37 (octal PSRAM)

Безпечні для будь-чого: GPIO4–7, 15–18, 21, 38–42, 47.

RGB-світлодіод

Вбудований світлодіод — адресний WS2812, тож digitalWrite() на GPIO48 нічого не дасть... майже. Ядро arduino-esp32 3.x визначає RGB_BUILTIN і перехоплює digitalWrite(RGB_BUILTIN, HIGH), вмикаючи білий колір. Для кольору є rgbLedWrite():

// ESP32-S3: вбудований RGB-світлодіод без жодних бібліотек
void setup() {
  Serial.begin(115200);
}

void loop() {
  rgbLedWrite(RGB_BUILTIN, 40, 0, 0);   // червоний (0–255 на канал; 40 — вже яскраво)
  delay(500);
  rgbLedWrite(RGB_BUILTIN, 0, 40, 0);   // зелений
  delay(500);
  rgbLedWrite(RGB_BUILTIN, 0, 0, 40);   // синій
  delay(500);
  digitalWrite(RGB_BUILTIN, LOW);       // вимкнути
  delay(500);
}

Touch на S3 працює навпаки

У класичного ESP32 touchRead() зменшується під пальцем (з ~70 до ~20). У S3 значення великі — десятки тисяч — і під час дотику зростають. Скетч, написаний для ESP32 з умовою touchRead(T0) < 30, на S3 ніколи не спрацює. Робіть калібрування при старті і порівнюйте з базовим рівнем: touchRead(pin) > baseline * 1.3. І зверніть увагу, що T0 на S3 немає, а номер touch-каналу збігається з номером GPIO.

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

Оберіть плату ESP32-S3 DevKitC-1 у списку поруч із прикладами. Спробуйте сенсорний диммер — він адаптований під зростаючі значення touch і RGB-світлодіод — або веб-сервер.

Корисно знати

  • Струм. Під час роботи Wi-Fi S3 бере піки до 500 мА. Живлення від слабкого USB-хаба — часта причина перезавантажень з Brownout detector was triggered.
  • Камера. Плати з роз'ємом камери (ESP32-S3-EYE, XIAO ESP32S3 Sense) використовують ті самі модулі; для камери обов'язкова PSRAM.
  • Швидкість. Векторні інструкції S3 прискорюють ESP-NN і TensorFlow Lite Micro у кілька разів порівняно з класичним ESP32.