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