ESP32-S3 Dev Board
The ESP32-S3 is the microcontroller that runs the firmware and drives all peripherals. Set it up first — before connecting any other component.
The final build uses the ESP32-S3-WROOM-2 module (N32R16 variant: 32 MB flash / 16 MB PSRAM), soldered to a carrier board or custom perfboard. For breadboard prototyping, use any ESP32-S3 DevKitC-1 with ≥16 MB flash and ≥8 MB PSRAM — it provides USB, a regulator, and pin headers without soldering.
Which Board to Buy for Prototyping
Recommended: ESP32-S3 DevKitC-1 (any variant with ≥16 MB flash, ≥8 MB PSRAM)
- Common part numbers: N16R8 (16 MB / 8 MB), N32R8 (32 MB / 8 MB) — all work
- PSRAM is required: the GxEPD2 e-ink library buffers the entire 400×300 frame in RAM (~15 KB for 1bpp), and the audio DMA buffers add more. Variants without PSRAM (N8R2) may run out of heap under load.
- Espressif makes the reference board; clones are available but may have different USB chipsets that require different drivers
For the final build: ESP32-S3-WROOM-2 (N32R16)
- 32 MB flash gives room for the 4 MB LittleFS audio partition alongside the firmware
- 16 MB PSRAM — well above the minimum needed
- Requires soldering to a carrier board; not breadboard-friendly
Alternative: Classic ESP32 DevKit V1
- Less RAM (520 KB SRAM, no PSRAM on most variants)
- Works if you use partial-window display updates to reduce frame buffer size
- GPIO 34–39 are input-only on this chip (no internal pull-ups) — check the pin table if using these
Physical Layout
The DevKitC-1 has two rows of pin headers along its long edges. The USB-C connector is at one end. The EN (reset) and BOOT buttons are on the short edges.
| Button | Function |
|---|---|
| EN | Reset — restarts the firmware |
| BOOT | Hold down while pressing EN to enter download mode for flashing |
Most of the time you do not need to press BOOT manually — the ESP-IDF toolchain (idf.py flash)
toggles the DTR/RTS lines on the serial port to trigger this automatically.
Step 1: Install ESP-IDF
Before connecting any hardware, install the toolchain on your computer. This is covered in full in the Dev Environment doc. Install it now and confirm it works before starting the wiring.
Step 2: Flash the Blink Example
- Connect the DevKitC-1 to your computer via USB-C
- The board should appear as a serial port (
/dev/ttyUSB0on Linux,COM3etc. on Windows) - Flash the blink example:
cd $IDF_PATH/examples/get-started/blink
idf.py set-target esp32s3
idf.py flash monitor
- The onboard LED should blink. The serial monitor should print:
I (xxx) main: Turning on LED
I (xxx) main: Turning off LED
If this works, your toolchain is set up correctly and the board is functional.
Step 3: Place the Board on the Breadboard
The DevKitC-1 is designed to straddle the centre gap of a 830-point breadboard, with pin headers in columns A–E and F–J respectively. This leaves a few tie points on each side for connecting wires.
If your breadboard is too narrow, the headers will be over the power rails. In that case, use two breadboards side by side, or use short male-to-female jumper wires to access the pins.
Confirming the Serial Port
On Linux/macOS:
ls /dev/tty*
# Look for /dev/ttyUSB0 or /dev/ttyACM0
On Windows: check Device Manager under "Ports (COM & LPT)".
If the port does not appear, you may need to install the USB-to-UART driver:
- CP2102 chipset: Silicon Labs CP210x driver
- CH340 chipset: CH340 driver (common on AliExpress boards)
- Native USB (ESP32-S3 DevKitC-1): no driver needed on Linux/macOS; WinUSB on Windows