The ESP32-S3-DevKitC-1 is Espressif's entry-level ESP32-S3 board: Wi-Fi, Bluetooth Low Energy, and almost every GPIO broken out to two long rows of header pins, one down each side. It plugs into a breadboard or takes jumper wires, and you program it over USB.

The brains of the board sit in the module: a smooth, flat rectangle about the size of a postage stamp, soldered onto the end of the board opposite the USB ports. It has a small bite out of one corner: hold the board chips up with the USB ports toward you, and the bite is at the module's far right corner. That's the ESP32-S3-WROOM-1, and inside it are the ESP32-S3 chip itself, its flash and PSRAM memory, and the antenna. The antenna is the far end of the module, a sort of rectangle that hangs past the end of the board.

The other end of the board is the end you plug in. It has two USB-C ports side by side along the edge, and just behind them, two small push buttons, Boot and Reset. Espressif's own board uses micro-USB, but mine have USB-C.

These are my notes on it, written so you can wire one up without looking at it, because I can't.

Buying one⌗

I got a pack of 3 ESP32-S3 boards on Amazon. Spares are handy, because sooner or later one of them meets 5 V on the wrong pin.

The module has a code printed on it that tells you how much memory you've got. N is flash and R is PSRAM, in megabytes, so N8R8 means 8 MB of flash and 8 MB of PSRAM.

There are two revisions of the board on the market, v1.0 and v1.1. The only difference is which GPIO drives the RGB LED: GPIO48 on v1.0 and GPIO38 on v1.1. If a sighted friend tells you your blink code does nothing, try the other one. (Mine always does nothing, as far as I can tell.)

Pin order⌗

Hold the board chips up, with the two USB ports toward you and the module, with its antenna, away from you. There's a header down each side, 22 pins each. Pin 1 of each is at the far end, by the module, so these tables read from the far end toward you.

Left header (J1)⌗

#PinWhat it isNotes
13V33.3 V power
23V33.3 V power
3RSTReset (EN)Same as the Reset button
44GPIO4ADC1, touch
55GPIO5ADC1, touch
66GPIO6ADC1, touch
77GPIO7ADC1, touch
815GPIO15ADC2; 32 kHz crystal input
916GPIO16ADC2; 32 kHz crystal input
1017GPIO17ADC2; UART1 TX
1118GPIO18ADC2; UART1 RX
128GPIO8ADC1, touch
133GPIO3ADC1, touch; strapping pin
1446GPIO46Strapping pin
159GPIO9ADC1, touch
1610GPIO10ADC1, touch
1711GPIO11ADC2, touch
1812GPIO12ADC2, touch
1913GPIO13ADC2, touch
2014GPIO14ADC2, touch
215V5 V power
22GGround

Right header (J3)⌗

#PinWhat it isNotes
1GGround
2TXGPIO43UART0 TX, wired to the USB-to-UART port
3RXGPIO44UART0 RX, wired to the USB-to-UART port
41GPIO1ADC1, touch
52GPIO2ADC1, touch
642GPIO42JTAG (MTMS)
741GPIO41JTAG (MTDI)
840GPIO40JTAG (MTDO)
939GPIO39JTAG (MTCK)
1038GPIO38RGB LED on v1.1
1137GPIO37Taken by octal PSRAM, see below
1236GPIO36Taken by octal PSRAM, see below
1335GPIO35Taken by octal PSRAM, see below
140GPIO0Boot button; strapping pin
1545GPIO45Strapping pin
1648GPIO48RGB LED on v1.0
1747GPIO47
1821GPIO21
1920GPIO20USB D+, wired to the native USB port
2019GPIO19USB D−, wired to the native USB port
21GGround
22GGround

USB ports and buttons⌗

With the ports toward you, the left one is the USB-to-UART port and the right one is the ESP32-S3's native USB port. Either one powers the board and can flash it, but Espressif's guide uses the USB-to-UART port by default, since support for the native port isn't fully implemented in their software.

The buttons sit just behind the ports: Boot on the left, Reset on the right.

  • Reset restarts the board.
  • Boot puts it into firmware download mode: hold Boot, press and release Reset, then let go of Boot. You only need this if flashing won't start on its own.

Some cables only charge and have no data lines. If the computer doesn't see the board, try another cable before you blame the board.

Power⌗

There are three ways to power the board, and you should only use one at a time:

  1. Either USB port, or both. This is the default and the one Espressif recommends.
  2. The 5V and G pins.
  3. The 3V3 and G pins.

Pins to stay away from⌗

  • GPIO35, 36 and 37 are used internally to talk to the flash and PSRAM on boards with octal PSRAM. That's every R8 or larger module, which is most of them. Don't use them.
  • GPIO0, 3, 45 and 46 are strapping pins. The chip reads them at power-up to decide how to boot. Use them only if nothing you wire up pulls them high or low at boot, or you may get a board that won't start.
  • GPIO43 and 44 (TX and RX) carry the serial monitor. GPIO19 and 20 carry the native USB port.

Everything else is fair game. The ESP32-S3 can route I2S, UART, SPI and most other signals to any GPIO, and "ADC" or "touch" in the tables is just an extra thing that pin can do, not a restriction. If you're hooking up the MAX98357A amp, GPIO4, 5 and 6 work well for its three I2S pins. They're pins 4, 5 and 6 on the left header, three in a row just past RST.

Sources⌗

The pin tables, notes and both diagrams are adapted from Espressif's ESP32-S3-DevKitC-1 user guides, © Espressif Systems, licensed under CC BY-SA 4.0. I reorganized and rewrote the text; the diagrams are unchanged. This post is shared under the same license.