ESP32-S3-Zero from Waveshare is a thumb-sized board (23.5 × 18 mm) with the ESP32-S3 chip: two cores, Wi-Fi, Bluetooth LE, 4 MB flash and 2 MB PSRAM. It has USB-C, an addressable RGB LED and castellated pads around the edge, so it can be soldered directly onto another board.
It matches the RP2040-Zero in size, but the pin layout is different. Besides the 18 pins along the sides, it also breaks out GPIO to three pads on the top and eight on the bottom.
Specifications
- ESP32-S3FH4R2: 2× Xtensa LX7 up to 240 MHz, 512 kB SRAM
- 4 MB flash and 2 MB PSRAM inside the chip package
- Wi-Fi 4 (2.4 GHz) and Bluetooth 5 (LE), ceramic antenna
- 15 GPIO along the sides (GPIO1–13, TX and RX), 3 pads on top (GPIO14–16) and 8 on the bottom
- USB-C with native USB, WS2812 RGB LED on GPIO21, BOOT (GPIO0) and RESET buttons
- 3.3 V regulator up to 800 mA, 3.7–6 V power via the 5V pin
- 23.5 × 18 mm, castellated pads on the edge; the ESP32-S3-Zero-M version has headers soldered on
In the Arduino IDE, the board is listed as Waveshare ESP32-S3-Zero, but its profile does not have default I2C and SPI pins on broken-out pins. Specify the pins in code, e.g. Wire.begin(8, 9) or SPI.begin(12, 13, 11, 10) (SCK, MISO, MOSI, SS). With the generic ESP32S3 Dev Module profile, the default I2C is on GPIO8/9 and SPI on GPIO10–13. In both cases, enable USB CDC On Boot, otherwise you won’t see the Serial output.
The GPIO14–16 pads on the top side are intended for soldering a wire or for spring-loaded pogo pins.
Pinout and pin table
Hover over a pin in the diagram or a table row; use the filter to highlight a bus. You can download the pinout as PNG or SVG.
Bottom side
| Pin | Name | Direction | UART | I2C | SPI | ADC | Touch | Note |
|---|---|---|---|---|---|---|---|---|
| 1 | GPIO43 | input/output | TX | UART0 TX – default serial port and bootloader output. Routed to the pad through a 499 Ω series resistor. | ||||
| 2 | GPIO44 | input/output | RX | UART0 RX | ||||
| 3 | GPIO13 | input/output | ADC2_CH2 | T13 | ||||
| 4 | GPIO12 | input/output | ADC2_CH1 | T12 | ||||
| 5 | GPIO11 | input/output | ADC2_CH0 | T11 | ||||
| 6 | GPIO10 | input/output | ADC1_CH9 | T10 | ||||
| 7 | GPIO9 | input/output | ADC1_CH8 | T9 | ||||
| 8 | GPIO8 | input/output | ADC1_CH7 | T8 | ||||
| 9 | GPIO7 | input/output | ADC1_CH6 | T7 | ||||
| 10 | GPIO6 | input/output | ADC1_CH5 | T6 | ||||
| 11 | GPIO5 | input/output | ADC1_CH4 | T5 | ||||
| 12 | GPIO4 | input/output | ADC1_CH3 | T4 | ||||
| 13 | GPIO3 | input/output | ADC1_CH2 | T3 | Strapping pin (JTAG source selection) – has no effect unless set in eFuse | |||
| 14 | GPIO2 | input/output | ADC1_CH1 | T2 | ||||
| 15 | GPIO1 | input/output | ADC1_CH0 | T1 | ||||
| 16 | 3V3 | output | 3.3 V output from the ME6217 regulator (max. 800 mA including the board's own consumption). | |||||
| 17 | GND | – | ||||||
| 18 | 5V | input/output | 5 V directly from the USB connector (VBUS, no diode). The board can also be powered through this pin (3.7–6 V, at least 500 mA), but do not connect a supply at the same time as USB – voltage would flow into the computer. | |||||
| pad | GPIO16 | input/output | ADC2_CH5 | |||||
| pad | GPIO15 | input/output | ADC2_CH4 | |||||
| pad | GPIO14 | input/output | ADC2_CH3 | T14 | ||||
| Bottom side | GPIO45 | input/output | Strapping pin (VDD_SPI voltage) – logic 0 at boot | |||||
| Bottom side | GPIO42 | input/output | JTAG MTMS | |||||
| Bottom side | GPIO41 | input/output | JTAG MTDI | |||||
| Bottom side | GPIO40 | input/output | JTAG MTDO | |||||
| Bottom side | GPIO39 | input/output | JTAG MTCK | |||||
| Bottom side | GPIO38 | input/output | ||||||
| Bottom side | GPIO18 | input/output | ADC2_CH7 | |||||
| Bottom side | GPIO17 | input/output | ADC2_CH6 |
Pins used on the board
These chip pins are used by parts on the board and are not broken out:
| Pin | Function on the board |
|---|---|
| GPIO0 | BOOT button |
| GPIO19 | USB D− (native USB) |
| GPIO20 | USB D+ |
| GPIO21 | RGB LED WS2812 |
What to watch out for
- The GPIO are not 5V tolerant. Use a level shifter for 5V signals.
- The 5V pin is the USB voltage directly, with no diode – do not connect a power supply at the same time as USB.
- The RGB LED is addressable (WS2812, RGB color order) –
digitalWrite(21, HIGH)won’t light it up. UsergbLedWrite()with the Waveshare ESP32-S3-Zero profile, or the NeoPixel library withNEO_RGB(otherwise red and green are swapped). - Strapping pins: GPIO3 selects the JTAG source, GPIO45 (bottom pad) must be at logic 0 at boot. The BOOT button is GPIO0.
- ADC2 (GPIO11–18) is limited while Wi-Fi is on – prefer ADC1 (GPIO1–10) for analog.
- Do not cover the ceramic antenna with another board, metal or plastic.
- If uploading fails, hold BOOT, connect USB and release the button – the board will start in download mode.
ESP32-S3 on chiptron.eu/
Projects and guides on chiptron.eu/:
- ESP32 Web Flasher – flash firmware to an ESP32-S3 from the browser with the correct offsets, plus a serial monitor
- ESP32 chip comparison – which ESP32 to choose based on peripherals and project needs
More pinouts
See all pinouts on the Pinouts page.