ESP32-C3 SuperMini Development Board – Arduino Setup, Pinout, WiFi & Troubleshooting
The ESP32-C3 SuperMini is a compact ESP32-C3 development board with a 32-bit RISC-V processor, 2.4GHz WiFi, Bluetooth Low Energy, USB-C programming and a small 22.52 × 18mm footprint.
This guide covers Arduino IDE setup, the board pinout, power connections, the onboard LED, WiFi testing, I2C wiring, ADC considerations and common upload or boot problems.
ESP32-C3 SuperMini Overview
Use the Espressif ESP32 board package in Arduino IDE and select the generic ESP32C3 Dev Module profile. Code and libraries written only for the older ESP8266 platform are not automatically compatible.
The board exposes GPIO0 to GPIO10 plus GPIO20 and GPIO21 on its two rows of pads. GPIO18 and GPIO19 are used internally by the ESP32-C3 native USB interface and are not brought out on this SuperMini layout.
Do not apply 5V signals directly to an ESP32-C3 GPIO pin. Check the voltage level of sensors, displays and serial adapters before connecting them.
Powering the Board
For normal development, power and program the board through its USB-C connector using a data-capable USB cable.
| Connection | Use | Important Notes |
|---|---|---|
| USB-C | Power, programming and serial monitor | Use a USB cable that supports data, not a charge-only cable. |
| 5V | External board power input | Use a regulated 5V supply for standalone operation and disconnect USB first. |
| GND | Ground | Connect to the ground of external sensors, supplies and interfaces. |
| 3V3 | 3.3V board rail | Normally used to power small 3.3V peripherals. Do not apply 5V to this pin. |
This SuperMini design does not provide a guaranteed automatic power-source selection system. Use either USB power or an external supply, not both at the same time.
WiFi transmission can cause short current peaks, so use a stable supply and keep power wiring reasonably short. Do not assume the 3.3V pin can power motors, relays or other high-current loads.
Pinout & GPIO Functions
| Board Label | ESP32-C3 Function | Notes |
|---|---|---|
| 5V | 5V power rail | USB 5V / external regulated 5V input |
| G / GND | Ground | Common ground |
| 3.3 / 3V3 | 3.3V rail | Regulated logic supply |
| 0 | GPIO0 / ADC1_CH0 | General GPIO, ADC capable |
| 1 | GPIO1 / ADC1_CH1 | General GPIO, ADC capable |
| 2 | GPIO2 / ADC1_CH2 | ADC capable; strapping pin — use with boot-time care |
| 3 | GPIO3 / ADC1_CH3 | General GPIO, ADC capable |
| 4 | GPIO4 / ADC1_CH4 | ADC capable; JTAG MTMS; supplier diagram labels SPI SCK |
| 5 | GPIO5 / ADC2_CH0 | ADC capable; JTAG MTDI; supplier diagram labels SPI MISO |
| 6 | GPIO6 | JTAG MTCK; supplier diagram labels SPI MOSI |
| 7 | GPIO7 | JTAG MTDO; supplier diagram labels SPI SS |
| 8 | GPIO8 | Onboard blue LED, active-low; strapping pin |
| 9 | GPIO9 | BOOT button; strapping pin |
| 10 | GPIO10 | General GPIO |
| 20 | GPIO20 / U0RXD | UART0 receive |
| 21 | GPIO21 / U0TXD | UART0 transmit |
The ESP32-C3 GPIO matrix allows peripheral signals to be routed to different GPIOs. The supplied pin diagram shows GPIO8/GPIO9 as SDA/SCL and GPIO4–GPIO7 as an SPI mapping, but these are not permanently fixed connections.
These are ESP32-C3 strapping pins. GPIO8 also drives the onboard LED and GPIO9 is connected to the BOOT button. External circuits that force these pins to the wrong level during reset can stop the board booting normally.
BOOT and RESET Buttons
The RESET button restarts the ESP32-C3. The BOOT button is connected to GPIO9 and is used to force the chip into its ROM download mode when automatic USB uploading does not work.
To enter download mode manually:
- Press and hold BOOT.
- Press and release RESET.
- Release BOOT.
- Select the newly detected port in Arduino IDE and upload again.
Arduino IDE Setup
No additional library is required for the basic LED, WiFi or I2C examples in this guide. These features are included with the Espressif Arduino-ESP32 core.
1. Install ESP32 Support
Install a current Arduino IDE, then open the IDE preferences and add the following stable Espressif Boards Manager URL:
https://espressif.github.io/arduino-esp32/package_esp32_index.json
Open Tools > Board > Boards Manager, search for esp32, then install esp32 by Espressif Systems.
2. Select the Board
Select:
- Tools > Board > ESP32 Arduino > ESP32C3 Dev Module
- USB CDC On Boot > Enabled
- Tools > Port and choose the port belonging to the ESP32-C3
The SuperMini is a compact third-party ESP32-C3 board rather than an official Espressif development-board model. The generic ESP32C3 Dev Module target provides the appropriate Arduino build target for this board.
3. Connect a Data-Capable USB Cable
Some USB-C cables provide power only. A board that lights its power LED but never appears as a USB device may simply be connected with a charge-only cable.
Basic Test – Onboard LED
The supplied board has a blue user LED connected to GPIO8. It is active-low, which means writing LOW turns the LED on and writing HIGH turns it off.
const int LED_PIN = 8;
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
// GPIO8 LED is active-low.
digitalWrite(LED_PIN, HIGH);
delay(1000);
Serial.println("ESP32-C3 SuperMini LED test started");
}
void loop() {
digitalWrite(LED_PIN, LOW);
Serial.println("LED ON");
delay(1000);
digitalWrite(LED_PIN, HIGH);
Serial.println("LED OFF");
delay(1000);
}
Expected Result
After uploading, the blue onboard LED should turn on for one second and off for one second repeatedly. Open Serial Monitor at 115200 baud to see matching LED ON and LED OFF messages.
If the upload succeeds but the program does not start, press the RESET button once.
WiFi Proof-of-Operation Test
The following sketch scans for nearby 2.4GHz WiFi networks. It does not connect to a network or require a WiFi password.
#include <WiFi.h>
void setup() {
Serial.begin(115200);
delay(1000);
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
Serial.println("ESP32-C3 WiFi scanner");
}
void loop() {
Serial.println();
Serial.println("Scanning for WiFi networks...");
int networkCount = WiFi.scanNetworks();
if (networkCount == 0) {
Serial.println("No networks found.");
} else {
Serial.printf("%d network(s) found:\n", networkCount);
for (int i = 0; i < networkCount; i++) {
Serial.printf(
"%2d: %-32s RSSI %d dBm\n",
i + 1,
WiFi.SSID(i).c_str(),
WiFi.RSSI(i)
);
}
}
WiFi.scanDelete();
delay(5000);
}
Expected Result
Serial Monitor should display nearby 2.4GHz WiFi network names and their received signal strengths. Seeing one or more expected local networks confirms that the ESP32-C3 radio and Arduino WiFi support are operating.
The board does not provide 5GHz WiFi. A router configured only for a 5GHz network will not appear in this scan.
Using I2C Devices
The ESP32-C3 can route I2C through its GPIO matrix. Although the supplied pin diagram labels GPIO8 as SDA and GPIO9 as SCL, those two pins also have important board functions. For new projects, explicitly assigning other GPIOs avoids conflicts with the onboard LED and BOOT circuitry.
The following example uses GPIO0 for SDA and GPIO1 for SCL.
| I2C Module | ESP32-C3 SuperMini | Function |
|---|---|---|
| VCC | 3V3 | 3.3V power when the module supports 3.3V operation |
| GND | GND | Common ground |
| SDA | GPIO0 | I2C data |
| SCL | GPIO1 | I2C clock |
I2C breakout boards often include pull-up resistors from SDA and SCL to their VCC pin. Make sure the bus is pulled up to 3.3V, not 5V, before connecting it to the ESP32-C3.
#include <Wire.h>
const int SDA_PIN = 0;
const int SCL_PIN = 1;
void setup() {
Serial.begin(115200);
delay(1000);
Wire.begin(SDA_PIN, SCL_PIN);
Serial.println("ESP32-C3 I2C scanner");
Serial.println("SDA = GPIO0, SCL = GPIO1");
}
void loop() {
byte deviceCount = 0;
Serial.println();
Serial.println("Scanning I2C bus...");
for (byte address = 1; address < 127; address++) {
Wire.beginTransmission(address);
byte error = Wire.endTransmission();
if (error == 0) {
Serial.printf("Device found at 0x%02X\n", address);
deviceCount++;
}
}
if (deviceCount == 0) {
Serial.println("No I2C devices found.");
} else {
Serial.printf("%u device(s) found.\n", deviceCount);
}
delay(5000);
}
Expected Result
With a correctly connected I2C device, Serial Monitor should report one or more hexadecimal addresses such as 0x3C, 0x40 or another address appropriate to the connected device.
Analog Input / ADC Notes
The ESP32-C3 provides six ADC-capable GPIOs on this board:
- GPIO0 – ADC1 channel 0
- GPIO1 – ADC1 channel 1
- GPIO2 – ADC1 channel 2
- GPIO3 – ADC1 channel 3
- GPIO4 – ADC1 channel 4
- GPIO5 – ADC2 channel 0
Arduino-ESP32 uses 12-bit ADC readings by default, giving raw values from 0 to 4095. For voltage measurements, analogReadMilliVolts() can provide a calibrated millivolt result.
On ESP32-C3, the measurable ADC range depends on attenuation settings. With the commonly used 11dB attenuation setting, the current Arduino-ESP32 documentation specifies an approximate measurable range up to 2.5V. Use a suitable voltage divider when measuring higher voltages and never exceed the GPIO electrical limits.
WiFi Antenna Considerations
Keep the antenna end of the board away from metal enclosures, large ground planes, batteries and dense wiring where practical. Antenna placement can make a significant difference to WiFi and Bluetooth range.
Some supplier material shows an external coaxial cable being soldered directly to the RF antenna area. This is an RF modification rather than a normal GPIO connection and is not recommended as a beginner procedure. Incorrect coax connection, shielding or impedance can reduce wireless performance instead of improving it. Use the fitted antenna unless you have confirmed the exact PCB revision and RF feed arrangement.
Troubleshooting
No USB or COM port appears
- Try a known data-capable USB-C cable. A charge-only cable can power the board without creating a USB connection.
- Try another USB port and reconnect the board.
- Hold BOOT, press and release RESET, then release BOOT to enter download mode manually.
- Check that the Espressif ESP32 board package is installed in Arduino IDE.
- Select the new USB serial port after entering download mode.
Upload fails or waits for the board
- Confirm ESP32C3 Dev Module is selected rather than an ESP32, ESP32-S2 or ESP8266 target.
- Check the selected port.
- Use the manual BOOT/RESET download-mode sequence immediately before uploading.
- Disconnect external circuits from GPIO2, GPIO8 and GPIO9 while diagnosing boot problems.
- After the first successful upload, press RESET once if the new program does not start automatically.
Serial Monitor is blank
- Set USB CDC On Boot to Enabled in the Arduino IDE Tools menu.
- Use the same baud rate as the sketch. The examples in this guide use 115200 baud.
- Check that Serial Monitor is connected to the board's current USB port.
- Press RESET after opening Serial Monitor if required.
Onboard LED appears backwards or does not blink
- The supplied board's GPIO8 LED is active-low: LOW turns it on and HIGH turns it off.
- Confirm the sketch uses GPIO8.
- Do not attach another circuit that strongly drives GPIO8 while testing the onboard LED.
- If your board has visibly different components or an RGB LED instead of the simple blue LED, it may be a different SuperMini revision.
Board will not boot after connecting a sensor
- Temporarily disconnect the sensor and reset the board.
- Check whether the sensor is forcing GPIO2, GPIO8 or GPIO9 to an unsuitable level during reset.
- For simple peripherals, consider GPIO0, GPIO1, GPIO3 or GPIO10 where practical.
- Check that no peripheral is feeding 5V into a GPIO pin.
I2C scanner finds no devices
- Check 3.3V, GND, SDA and SCL wiring.
- Confirm the sketch pin numbers match the physical wiring.
- Check whether the breakout board includes I2C pull-up resistors.
- Make sure SDA and SCL are not being pulled up to 5V.
- Try reducing wiring length and test one I2C device at a time.
WiFi range is poor
- Keep the antenna end of the PCB clear of metal objects and large batteries.
- Test the board away from a metal enclosure or crowded breadboard wiring.
- Use a stable power supply, particularly during WiFi transmission.
- Do not perform the direct-solder external antenna modification unless the exact RF layout has been verified.
This guide applies to the supplied ESP32-C3 SuperMini layout with two rows of eight pads, GPIO8 onboard LED, GPIO9 BOOT button and ESP32-C3FN4/4MB configuration. ESP32-C3 SuperMini boards are produced by multiple manufacturers and visually similar revisions can use different LEDs, antennas, regulators or fitted components. Compare the markings and layout of your board before applying power. GPIO pins use 3.3V logic and must not be driven directly from 5V signals.