ESP32-S3-DevKitC-1 Pinout & GPIO Reference (Safe Pins, USB, ADC, Touch, I²C, SPI)

The ESP32-S3-DevKitC-1 is Espressif’s entry-level development board for the ESP32-S3-WROOM-1 / 1U / 2 modules – a Wi-Fi + Bluetooth LE SoC with dual-core CPU, vector instructions for AI, and plenty of GPIOs. Espressif Docs+1

This guide focuses on pinout and GPIO selection for the DevKitC-1, so you can safely connect sensors, relays, USB, displays etc. without running into weird boot issues.

Scope: This article targets the official ESP32-S3-DevKitC-1 board as documented by Espressif (J1/J3 pin headers). Espressif Docs


1. Board overview

On ESP32-S3-DevKitC-1, Espressif breaks out all available GPIOs except the internal flash bus to two 22-pin headers: J1 and J3.Espressif Docs

Key onboard components: Espressif Docs+1

  • ESP32-S3-WROOM-1 / 1U / 2 module (Wi-Fi + BT LE, 8–32 MB flash, optional PSRAM)
  • 5 V → 3.3 V LDO regulator
  • USB-to-UART port (Micro-USB) – power + serial + flashing
  • Native ESP32-S3 USB port – USB 1.1 OTG (device/host + JTAG)
  • BOOT button – enter download mode (when combined with RESET)
  • RESET (EN) button – resets the chip
  • Addressable RGB LED on GPIO48
  • 3.3 V power LED

For some board variants with Octal SPI flash/PSRAM, GPIO35, GPIO36 and GPIO37 are internally used for flash/PSRAM and not available externally, even though they appear in generic pin maps. Espressif Docs+1


2. Power supply options

The DevKitC-1 supports three mutually exclusive power inputs: Espressif Docs

  1. USB-to-UART port (Micro-USB) – default/recommended
  2. ESP32-S3 USB port (native USB)
  3. Header pins
    • 5V + GND – feed 5 V to onboard LDO
    • 3V3 + GND – feed regulated 3.3 V directly

Practical rules:

  • For development: just use the USB-to-UART port; it powers and exposes serial.
  • If using the 5V pin, supply a stable 5 V (e.g. DC/DC buck from 12 V).
  • If using 3V3, your external regulator must handle Wi-Fi peaks.

Logic level on GPIOs is always 3.3 V – do not feed 5 V into any GPIO.


3. ESP32-S3 GPIO basics

The ESP32-S3 SoC exposes 45 GPIOs (GPIO0–21 and GPIO26–48; 22–25 don’t exist). documentation.espressif.com+1

On the DevKitC-1: Espressif Docs

  • Most GPIOs are brought out on J1/J3
  • GPIO43 (TX) and GPIO44 (RX) are wired to the USB-to-UART bridge
  • GPIO48 drives the on-board RGB LED
  • For some module variants, GPIO35–37 are reserved for internal Octal flash/PSRAM (not for external use)

GPIOs are multiplexed: any given pin can often be digital I/O, ADC, touch, I²C, SPI, UART, PWM, etc., routed through the IO matrix. documentation.espressif.com


4. Strapping pins – pins that affect boot

ESP32-S3 has four strapping pins that are sampled at reset to decide boot mode, flash voltage and JTAG source:

  • GPIO0 – boot mode (firmware from flash vs download mode)
  • GPIO46 – boot mode + ROM message printing
  • GPIO45VDD_SPI voltage (3.3 V vs 1.8 V for flash/PSRAM)
  • GPIO3 – JTAG signal source selection

What this means in practice:

  • If you pull these pins strongly HIGH/LOW at reset, you can:
    • Force download mode instead of normal boot (GPIO0/46)
    • Misconfigure flash voltage (GPIO45) and potentially break boot
    • Confuse JTAG configuration (GPIO3)

Recommendation:
For mainstream projects, avoid using GPIO0, GPIO3, GPIO45, GPIO46 except as very carefully-designed inputs/jumpers.


5. “Safe” everyday GPIOs on DevKitC-1

From the official header tables (J1/J3) and GPIO restrictions, we can define a safe default set of pins for digital I/O, PWM etc. Espressif Docs

5.1 Good general-purpose GPIOs

These are usually free of boot/flash quirks and available on the DevKitC-1:

  • GPIO1, 2, 4, 5, 6, 7, 8, 9, 10
  • GPIO11, 12, 13, 14, 15, 16, 17, 18
  • GPIO19, 20, 21
  • GPIO38, 39, 40, 41, 42
  • GPIO33, 34
  • GPIO43, 44 (though used by UART0)
  • GPIO47, 48 (48 is tied to RGB LED) Espressif Docs

Notes:

  • On some ESP32-S3-WROOM-1/2 variants with Octal memory, GPIO35–37 are used internally → don’t rely on them unless you check your exact module code. Espressif Docs+1
  • GPIO43/44 are shared with USB-to-UART bridge; you can still use them, but heavy external loading will affect flashing/Serial.

5.2 Pins to treat with caution

  • Strapping pinsGPIO0, 3, 45, 46 (boot/JTAG/VDD_SPI)
  • Internally used flash/PSRAM pinsGPIO35–37 on Octal variants
  • USB D± pinsGPIO19 (USB_D-), GPIO20 (USB_D+) when using native USB Espressif Docs+1

6. ADC pins (analog inputs)

ESP32-S3 includes two 12-bit SAR ADCs with 20 channels: documentation.espressif.com

  • ADC1 (10 channels): GPIO1–10
  • ADC2 (10 channels): GPIO11–20

Key points:

  • Resolution: 12 bits (0–4095) by default
  • Usable voltage range depends on attenuation; typical range up to about 2.5–3.0 V for the default 11 dB setting – keep input ≤ 3.3 V.
  • Some Arduino/ESP-IDF stacks still treat ADC2 as shared with Wi-Fi, so for maximum robustness in Wi-Fi-heavy projects it’s safest to prefer ADC1 (GPIO1–10).

6.1 Recommended ADC pins on DevKitC-1

Best choices (ADC1, Wi-Fi-friendly):

  • GPIO1 → ADC1_CH0
  • GPIO2 → ADC1_CH1
  • GPIO3 → ADC1_CH2 (strapping – avoid unless you know what you’re doing)
  • GPIO4–10 → ADC1_CH3–9 Espressif Docs

ADC2 (11–20) are usable, but:

  • They may conflict with Wi-Fi in certain frameworks
  • GPIO19 and GPIO20 double as USB D-/D+ – don’t use as ADC if native USB is active Espressif Docs+1

7. Touch sensor pins

ESP32-S3 has multiple capacitive touch pads (TOUCH1–TOUCH14) mapped to GPIOs 1–14 (plus 3,4,… etc – see IO list). Espressif Docs+1

On the DevKitC-1, common touch-capable GPIOs include: Espressif Docs

  • GPIO1–10 (TOUCH1–TOUCH10)
  • GPIO3 (TOUCH3)
  • GPIO4–8, 9, 10 (TOUCH4–10)
  • GPIO11–14 (TOUCH11–14)

Good practical choices (avoid strapping pins):

  • GPIO4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14

Use touchRead(pin) (Arduino) or the ESP-IDF touch driver to read values and configure touch wake from deep sleep. documentation.espressif.com


8. USB pins (native USB D+ / D-)

Unlike the classic ESP32, the S3 has native USB 2.0 Full-Speed OTG. On DevKitC-1, the USB signals are mapped to: Espressif Docs

  • GPIO20 → USB_D+ (also ADC2_CH9, U1CTS, CLK_OUT1)
  • GPIO19 → USB_D- (also ADC2_CH8, U1RTS, CLK_OUT2)

They are routed to the ESP32-S3 USB port.

Practical rules:

  • If you use TinyUSB / native USB (CDC, HID, MIDI, etc.), treat GPIO19/20 as dedicated USB pins.
  • Don’t connect external circuits to these pins while using the USB connector.
  • If you’re not using native USB, they behave as normal GPIO/ADC – but be careful not to short them when a USB cable is plugged.

9. I²C pins

ESP32-S3 can route I²C signals to almost any GPIO via the IO matrix. documentation.espressif.com

For simplicity and consistency across projects, a sensible default choice on DevKitC-1 is:

FunctionRecommended GPIOReason
SDAGPIO8On J1, ADC1, touch, no special boot role
SCLGPIO9On J1, ADC1, touch, also used in examples

Example (Arduino):

#include <Wire.h>

void setup() {
  Wire.begin(8, 9);  // SDA = GPIO8, SCL = GPIO9
}

Other combinations are possible, but avoid:

  • GPIO0, 3, 45, 46 (strapping)
  • Pins used for USB (19/20) if you actually use native USB
  • GPIO35–37 on Octal memory variants

10. SPI pins

The ESP32-S3 has multiple SPI controllers. One is dedicated to the internal flash/PSRAM (using FSPI pins like GPIO35–38 on some modules); others (e.g. SPI2/3) are available for user devices. documentation.espressif.com+1

On DevKitC-1 the J3 header exposes a nice cluster of FSPI-capable pins: Espressif Docs

  • GPIO38 – FSPIWP / SUBSPIWP
  • GPIO37 – SPIDQS / FSPIQ
  • GPIO36 – SPIIO7 / FSPICLK
  • GPIO35 – SPIIO6 / FSPID

These are ideal as a high-speed SPI bus when they’re not used internally by Octal flash/PSRAM (check your module variant). Espressif Docs+1

A typical user-SPI mapping that works well on common N8R8 boards:

SignalRecommended GPIO
SCKGPIO36
MISOGPIO37
MOSIGPIO35
CSGPIO38

If you have an Octal memory variant where these pins are internal, pick another run of “safe” GPIOs (e.g. 11–14 or 4–7) and route them as SPI via the GPIO matrix.


11. UART / Serial pins

ESP32-S3 has three UART controllers. documentation.espressif.com

On DevKitC-1, the default mapping is: Espressif Docs

  • UART0 (console / flashing)
    • TX0 → GPIO43 (TX pin on J3)
    • RX0 → GPIO44 (RX pin on J3)
  • Other UARTs (UART1/2) can be mapped to any suitable GPIO via IO matrix (e.g. 16/17, 19/20, etc.)

Recommendations:

  • Leave GPIO43/44 primarily for Serial console and flashing.
  • For an extra hardware Serial (GPS, RS-485, etc.):
    • choose a pair from safe pins (e.g. GPIO17 = TX, GPIO16 = RX)
    • configure via Serial1.begin(baud, config, RX, TX) (Arduino) or UART driver in ESP-IDF.

12. Practical pin recipes for ESP32-S3-DevKitC-1

12.1 Classic Wi-Fi sensor + relay node

Ready-to-reuse pattern:

FunctionRecommended GPIOsNotes
I²C SDAGPIO8BME280, OLED, etc.
I²C SCLGPIO9
Relay outputGPIO33 or GPIO34Far from strapping / USB pins
Extra digital inputGPIO38 or GPIO39Button, reed switch
Analog sensor inputGPIO1 / 2 / 4 / 5ADC1, safe with Wi-Fi

12.2 USB gadget (HID/CDC/MIDI) with status LED & button

FunctionRecommended GPIOsNotes
USB D+ / D-GPIO20 / GPIO19Via native USB port
Status RGB LEDGPIO48On-board LED
User buttonGPIO4 or GPIO5Optional touch + digital input

13. Summary – ESP32-S3-DevKitC-1 “rules of thumb”

Compared to a classic ESP32 DevKit, the ESP32-S3-DevKitC-1 gives you Bluetooth LE + native USB + better ADC, but you must respect a few rules:

  1. Avoid strapping pins for normal I/O
    GPIO0, 3, 45, 46 (boot, VDD_SPI, ROM printing, JTAG).
  2. Treat USB pins specially
    GPIO19 (USB_D-), GPIO20 (USB_D+) – don’t share with other circuitry when using native USB. Espressif Docs+1
  3. Watch out for internal flash/PSRAM pins
    → On Octal variants, GPIO35–37 are not for external use. Espressif Docs+1
  4. Prefer ADC1 for Wi-Fi projects
    → Use GPIO1–10 for analog sensors; ADC2 (11–20) may clash with Wi-Fi in some stacks.
  5. Use a “safe” GPIO pool
    → For general I/O: 1, 2, 4–10, 11–18, 19–21, 33–34, 38–42, 43–44, 47–48 on non-Octal variants. Espressif Docs

Follow these and the S3-DevKitC-1 becomes a very predictable board for Wi-Fi sensors, USB devices, Home Assistant nodes, and general ESP32-S3 experiments – with minimal “why the hell won’t it boot?” moments.

Newsletter Updates

Enter your email address below and subscribe to our newsletter

Leave a Reply

Your email address will not be published. Required fields are marked *