← All projects
Basics Beginner

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.

Difficulty
Beginner
Time
30 min
Category
Basics
Updated

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

  1. 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.
  2. 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.
  3. 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.
  4. 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 no ext0/ext1 as 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.