Learn

ESP32-C3 SuperMini pinout: every pin, the LED and the boot pins

Beginner

Or see every lesson.

  • 455parts on the bench
  • 43boards running now
  • 1.00xreal time, on every board
ESP32-C3 SuperMini: blinklive0.000 s 0.00x
Click to open it in the editor
The blue LED on GPIO 8 lights when the pin is LOW; the LED on GPIO 2 lights when it is HIGH.

The ESP32-C3 SuperMini is a board 22.5 by 18 mm with sixteen holes, a USB-C socket and an ESP32-C3, one RISC-V core at 160 MHz. Its silkscreen prints the chip’s own GPIO numbers, so there is nothing to translate: the hole marked 4 is GPIO 4 in code. This page lists every hole, the power pins, the strapping pins, the onboard LED and which pin to use for what.

The circuit above is the board in Mokxi, blinking its blue LED on GPIO 8 and an LED on GPIO 2 at the same time. They are always opposite, because the blue one is wired the other way around. Everything in the table is checked against the board model the simulator runs, and where Mokxi does less than the chip, the row says so.

Every pin on the header

With the USB socket at the top, the left row reads 5, 6, 7, 8, 9, 10, 20 and 21, and the right row reads 5V, GND, 3V3, then 4, 3, 2, 1 and 0. There is no RST hole: reset is the button. Thirteen of the sixteen holes are GPIO, and any of them can be a digital input or output, so the question on this board is less "can it" than "what else is on it".

The I2C and SPI pins in the table are the defaults: the ones Wire.begin() and SPI.begin() use when you name none. The C3 can route both buses to other pins through its GPIO matrix, and Wire.begin(sda, scl) does that.

ESP32-C3 SuperMini: the left row top to bottom, then the right, USB at the top
PinGPIOWhat it can doWatch out for
55PWM. SPI MISO (default). ADC2_CH0 on the chip (not modeled).-
66PWM. SPI MOSI (default).-
77PWM. SPI SS (default).-
88PWM. I2C SDA (default). The blue LED, lit when LOW.Strapping pin: do not hold it low at power-on.
99PWM. I2C SCL (default). The BOOT button.Strapping pin: low at reset waits for an upload.
1010PWM.A safe all-rounder.
2020PWM. UART0 RX on the chip.In Mokxi a plain pin; Serial goes to the monitor.
2121PWM. UART0 TX on the chip.In Mokxi a plain pin; Serial goes to the monitor.
5V-USB 5 V with a cable in; put 5 V here to run the board without one.Not a GPIO.
GND-Ground.-
3V3-The regulator’s 3.3 V output.Not a GPIO.
44ADC1_CH4. PWM. SPI SCK (default).-
33ADC1_CH3. PWM.-
22ADC1_CH2. PWM.Strapping pin: do not hold it low at power-on.
11ADC1_CH1. PWM.-
00ADC1_CH0. PWM.-

Power: 5V, 3V3 and GND

5V is the USB rail when a cable is plugged in, and the input when one is not: put 5 V on it to run the board from a supply. 3V3 is the onboard regulator’s output, enough for a sensor or a small display, not for a motor or a strip of LEDs. GND is ground.

The C3’s pins are 3.3 V and none is 5 V tolerant, so a 5 V module’s output needs a divider before it reaches one. Keep each pin to an LED’s worth of current, with a resistor. Mokxi does not model the regulator’s limits, so a circuit that would overload the real one still runs here.

Strapping pins: 2, 8 and 9

Espressif lists three strapping pins on the ESP32-C3: GPIO 2, 8 and 9. The chip reads them as it comes out of reset. GPIO 9 low means "wait for an upload", which is exactly what the BOOT button does: hold it, press reset, and the board is ready to flash. GPIO 2 and 8 should not be held low at power-on either.

In practice that means: no button to ground on 2, 8 or 9 that might be pressed at power-on, and no module with a strong pull-down on them. Mokxi does not model strapping and starts whatever is wired there, so a circuit that runs here can still fail to boot on a desk.

The onboard LED is active LOW

The blue LED is on GPIO 8, which is LED_BUILTIN, the same number as on Espressif’s DevKitM-1. On the SuperMini it is wired from 3.3 V through a resistor to the pin, so it lights when the pin is LOW. digitalWrite(LED_BUILTIN, HIGH) turns it off. The red LED is the power light and is not on a pin.

Because GPIO 8 is also the default SDA, the blue LED flickers whenever an I2C bus on the default pins is busy. That is normal. If it bothers you, put the bus on two other pins with Wire.begin(sda, scl).

Analog inputs, PWM and the USB

The analog inputs are GPIO 0 to 4: ADC1 channel n is GPIO n. Twelve bits, 0 to 4095. Mokxi converts in a straight line up to the 3.3 V rail at the default attenuation; a real C3 bends near the top of its range and is corrected by calibration in the chip, so trust the middle of the range more than the ends. ADC2’s one channel, on GPIO 5, is not modeled.

Any GPIO can do PWM through LEDC, which has six channels on the C3, so six pins can fade at once. analogWrite takes 0 to 255 at 1 kHz by default. The C3 has no DAC and no touch inputs.

The USB-C socket goes to the chip’s own USB on GPIO 18 and 19, which are not on the header, and the flash pins are inside the chip’s package, so nothing on the header is off limits for that reason. Mokxi does not model the USB: Serial reaches the serial monitor directly.

Questions

Which ESP32-C3 SuperMini pin should I use for a button?

Any of 0, 1, 3 to 7, 10, 20 or 21, with `INPUT_PULLUP` and the button to ground. Avoid 2, 8 and 9 for a button that might be held at power-on.

Which pins are analog on the SuperMini?

GPIO 0, 1, 2, 3 and 4, ADC1 channels 0 to 4. Keep the signal between 0 and 3.3 V.

Which pins are I2C on the ESP32-C3 SuperMini?

SDA is GPIO 8 and SCL is GPIO 9 by default. `Wire.begin(sda, scl)` moves the bus to any two other pins, which also keeps the blue LED still.

Which SuperMini pin should I use for a servo?

Any free GPIO, such as 3, 4 or 10. LEDC makes the 50 Hz signal on any pin, and six channels mean six servos at most. Power the servo from 5V, not 3V3, and join the grounds.

Why is the SuperMini LED backwards?

It is wired from 3.3 V to GPIO 8, so it lights when the pin is LOW. A sketch written for a DevKit runs, and the lamp is lit on the half of the cycle the DevKit’s is dark.

Which pins are UART on the SuperMini?

GPIO 20 is UART0 RX and 21 is UART0 TX. Keep them for a serial link to a GPS module or another board.

Build this for real

Open the editor, change a value and watch the number move with it. Nothing to install, and no account needed.