ESP32-C3 SuperMini: Pinout, Pitfalls and the First Sketch
A fingernail-sized board for the price of two coffees: Wi-Fi, Bluetooth 5 and USB-C. But Serial stays silent, the LED works backwards and the ADC sees only 2.5 V. We go through the pinout, the strapping pins and the Arduino IDE settings so the SuperMini works the first time.
About the board
The ESP32-C3 is a single-core 160 MHz RISC-V with Wi-Fi 4 and Bluetooth 5 LE. The SuperMini board is 22.5 × 18 mm with USB-C, a 3.3 V regulator, BOOT and RESET buttons and an LED. It is cheaper than a classic ESP32 DevKit and draws less, but it has its own quirks. The C3 has no Classic Bluetooth (A2DP, SPP) — BLE only.
Pinout
| Left row | Right row | ||
|---|---|---|---|
| 5V | 5 V in/out from USB | GPIO5 | ADC2, SPI MISO |
| GND | ground | GPIO6 | SPI MOSI |
| 3V3 | regulator output | GPIO7 | SPI SS |
| GPIO4 | ADC1, SPI SCK | GPIO8 | I2C SDA, LED, strapping |
| GPIO3 | ADC1 | GPIO9 | I2C SCL, BOOT button, strapping |
| GPIO2 | ADC1, strapping | GPIO10 | |
| GPIO1 | ADC1 | GPIO20 | UART0 RX |
| GPIO0 | ADC1 | GPIO21 | UART0 TX |
That is 13 GPIOs. Each one supports PWM (LEDC, 6 channels), interrupts and INPUT_PULLUP/INPUT_PULLDOWN. There is no touch and no DAC. GPIO11–17 belong to the flash, and GPIO18/19 are the USB lines: use them and Serial disappears.
Four pitfalls
- Serial stays silent. On the C3 the USB is inside the chip itself. In the Arduino IDE enable Tools → USB CDC On Boot → Enabled, otherwise
Serial.print()goes to GPIO21 instead of USB. - The LED on GPIO8 lights on LOW. It sits between 3.3 V and the pin, so
digitalWrite(8, HIGH)switches it off. GPIO8 is also the default SDA, so with an I2C module attached the LED flickers with the traffic. - Strapping pins 2, 8, 9. At power-up GPIO9 selects the boot mode (LOW means flashing), and GPIO2 and GPIO8 must be HIGH. Do not hang buttons to GND or loads that pull low on them.
- The ADC tops out at 2.5 V. With maximum attenuation the C3 ADC measures only about 0–2.5 V, not 3.1 V like a classic ESP32. A potentiometer across 3.3 V hits 4095 three quarters of the way round — use a divider. GPIO5 belongs to ADC2, which is unreliable with Wi-Fi, so use GPIO0–4 for analog inputs.
Arduino IDE setup
- Install esp32 by Espressif 3.x in the Boards Manager.
- Board: ESP32C3 Dev Module (or "Nologo ESP32C3 Super Mini" if it is listed).
- USB CDC On Boot: Enabled, Flash Mode: DIO.
- If uploading does not start: hold BOOT, press and release RESET, release BOOT — the board is now in the bootloader.
The first sketch
// ESP32-C3 SuperMini: blink the on-board LED (active LOW)
const int LED = 8;
void setup() {
Serial.begin(115200); // needs USB CDC On Boot: Enabled
pinMode(LED, OUTPUT);
}
void loop() {
digitalWrite(LED, LOW); // on
Serial.println("LED on");
delay(500);
digitalWrite(LED, HIGH); // off
Serial.println("LED off");
delay(500);
}
Try it in the simulator
The simulator knows the SuperMini: pick ESP32-C3 SuperMini in the list next to the examples, and any example opens with its pins moved. For example Blink, potentiometer and PWM (watch the ADC hit its 2.5 V ceiling), or the AHT20 + BMP280 weather station on I2C 8/9.
Good to know
- The antenna. On cheap SuperMinis the ceramic antenna is poorly matched, and the Wi-Fi range is noticeably shorter than a DevKit's. Keep it away from metal and wires;
WiFi.setTxPower(WIFI_POWER_8_5dBm)helps. - Deep sleep. The C3 can wake from a pin only on GPIO0–5 (
esp_deep_sleep_enable_gpio_wakeup); there is noext0/ext1as on the classic ESP32. - Battery power. Feed 3.3 V into the 3V3 pin, or 3.7–5 V into 5V. The on-board regulator has little headroom: 350 mA Wi-Fi bursts from a weak source reset the board.