ESP32-C3 Super Mini
Setup Guide
The ESP32-C3 Super Mini is a compact Wi-Fi + BLE 5.0 board built on a RISC-V processor — completely different architecture from the standard ESP32. It is smaller, uses USB Type-C, and trades Classic Bluetooth and dual cores for a tiny footprint and lower power draw.
Video walkthrough
Prefer to watch? These cover the same steps.
Community videos. Tishvi is not affiliated with creators.
About the ESP32-C3 Super Mini
Key specs and what makes this chip different.
The ESP32-C3 uses a RISC-V 32-bit architecture — not the Xtensa LX6 used in the standard ESP32. It is a single-core chip running at up to 160 MHz, optimised for low-power IoT applications. Despite the architectural difference, it is fully supported by the same Espressif Arduino board package and MicroPython — no special toolchain needed.
No Classic Bluetooth
No DAC output
(native USB or bridge chip)
ESP32-C3 vs ESP32 (38-pin / 30-pin)
Which board should you choose?
Both boards are supported by the same Arduino package and use the same Wi-Fi stack. The decision depends on your project requirements.
| Feature | ESP32-C3 Super Mini (this board) | ESP32 38-pin / 30-pin |
|---|---|---|
| CPU Architecture | RISC-V 32-bit (single core) | Xtensa LX6 (dual core) |
| Max Clock | 160 MHz | 240 MHz |
| Bluetooth | BLE 5.0 only | Classic BT + BLE |
| DAC output | None | 2 channels (GPIO25/26) |
| ADC channels | 6 (all input-only safe) | Up to 18 channels |
| GPIO on header | 13 pins | 26–30 usable pins |
| Board size | ~22 × 18 mm (tiny) | ~55 × 28 mm |
| USB connector | Type-C (reversible) | Micro-USB or Type-C |
| SRAM | 400 KB | 520 KB |
| Flash | 4 MB | 4 MB |
| Wi-Fi | 2.4 GHz b/g/n | 2.4 GHz b/g/n |
| Arduino IDE | ✅ Same board package | ✅ Same board package |
| MicroPython | ✅ ESP32_GENERIC_C3 firmware | ✅ ESP32_GENERIC firmware |
| Choose this if… | Space-constrained builds, BLE-only projects, low-power IoT, smaller PCB | Maximum GPIO, Classic BT, dual-core tasks, DAC output needed |
Pin Layout — Super Mini
18 pins total (9 per side). Colour-coded by function.
digitalWrite(8, LOW) turns the LED ON and HIGH turns it OFF — the opposite of the standard ESP32. The sample sketch handles this automatically.Wire.begin(6, 7);Arduino IDE Setup
Configure Arduino IDE for the ESP32-C3. One critical extra step vs the standard ESP32.
Serial.println() will produce no output in the Serial Monitor when connected via USB-C.Install/update Arduino IDE 2.x
Download from arduino.cc/en/software if not already installed.
Add ESP32 board manager URL
If you already have the ESP32 board package (from the standard ESP32 guide), skip to step 4. Otherwise go to File → Preferences and add:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Install ESP32 board package
Tools → Boards Manager → search esp32 → install "esp32 by Espressif Systems". The C3 is included in this same package — no separate download needed.
Select the correct board
Tools → Board → esp32 → "ESP32C3 Dev Module". Do not select "ESP32 Dev Module" — that is for the standard ESP32 and will not configure the C3 correctly.
Enable USB CDC On Boot — critical step
Go to Tools → USB CDC On Boot → Enabled. This routes Serial through the USB-C port. Without this, the Serial Monitor will show nothing after upload.
USB driver (if needed)
Connect the board via USB-C. Open Device Manager. Depending on your board variant, you may see either "CP210x USB to UART Bridge" (needs Silicon Labs driver) or "USB-SERIAL CH340" (needs CH340 driver). Search your browser for the relevant driver name + "download" if the device shows a warning icon.
Select port and upload speed
Tools → Port → COM x. Upload Speed: 921600.
Arduino IDE 2.x + board package
If you already have the ESP32 package installed (from the standard ESP32 guide), skip to step 2. Otherwise follow steps 1–3 from the Windows tab above, then return here.
Select board
Tools → Board → esp32 → "ESP32C3 Dev Module".
Enable USB CDC On Boot
Tools → USB CDC On Boot → Enabled. Critical for Serial output to appear in the monitor.
Find the port
After connecting USB-C, open Terminal and run:
ls /dev/cu.*
Look for /dev/cu.usbserial-xxxx, /dev/cu.SLAB_USBtoUART, or /dev/cu.wchusbserial-xxxx (CH340 variant). Select it in Tools → Port.
Upload speed
Tools → Upload Speed → 921600.
Board package + dialout group
If not already done from the standard ESP32 guide:
sudo usermod -a -G dialout $USER
Log out and back in. Then add the board manager URL and install "esp32 by Espressif Systems" (same as the standard ESP32 setup).
Select board and enable USB CDC
Tools → Board → ESP32C3 Dev Module. Then Tools → USB CDC On Boot → Enabled.
Find the port
ls /dev/ttyUSB* /dev/ttyACM*
CP210x bridge: appears as /dev/ttyUSB0. CH340 bridge: may appear as /dev/ttyUSB0. Native USB: may appear as /dev/ttyACM0.
MicroPython Setup
Flash MicroPython on the ESP32-C3 — uses a different firmware file than the standard ESP32.
The MicroPython firmware for the ESP32-C3 is a different file from the standard ESP32 firmware. The esptool commands are almost identical but the chip type and firmware filename differ.
Install Python 3 and esptool
pip install esptool
Download ESP32-C3 firmware
Go to micropython.org/download/ESP32_GENERIC_C3/. Download the latest stable .bin file. Save it locally. Do not use the regular ESP32_GENERIC firmware — it will not run on the C3.
Erase flash
python -m esptool --chip esp32c3 --port COM3 erase_flash
Replace COM3 with your actual port. Note: chip type is esp32c3, not esp32.
Flash firmware
python -m esptool --chip esp32c3 --port COM3 \ --baud 460800 write_flash -z 0x0 ESP32_GENERIC_C3-firmware.bin
Note: flash address is 0x0 for the C3 (not 0x1000 as used for the standard ESP32).
Connect with Thonny
Open Thonny (thonny.org) → Tools → Options → Interpreter → MicroPython (ESP32) → select COM port. Press Enter in the shell — you should see the MicroPython REPL prompt >>>.
esp32c3 not esp32, and (2) flash address is 0x0 not 0x1000. Using the wrong values will produce a non-booting board that needs re-flashing.Install esptool
pip3 install esptool
Download ESP32_GENERIC_C3 firmware
From micropython.org/download/ESP32_GENERIC_C3/. Latest stable .bin file.
Find port, erase, flash
# Find port (macOS) ls /dev/cu.* # Find port (Linux) ls /dev/ttyUSB* /dev/ttyACM* # Erase (replace /dev/cu.usbserial-xxxx with your port) esptool.py --chip esp32c3 --port /dev/cu.usbserial-xxxx erase_flash # Flash — note: address is 0x0 for C3 esptool.py --chip esp32c3 --port /dev/cu.usbserial-xxxx \ --baud 460800 write_flash -z 0x0 ESP32_GENERIC_C3-firmware.bin
Thonny IDE
Download from thonny.org or pip3 install thonny. Set interpreter to MicroPython (ESP32) and your port.
First Sketch
Chip info + WiFi scan + LED blink — confirms IDE, WiFi, and GPIO all work.
#include <WiFi.h> const int LED_PIN = 8; // GPIO 8 = built-in LED const bool LED_ACTIVE_HIGH = false; // Most boards: active-LOW void ledOn() { digitalWrite(LED_PIN, LED_ACTIVE_HIGH ? HIGH : LOW); } void ledOff() { digitalWrite(LED_PIN, LED_ACTIVE_HIGH ? LOW : HIGH); } void setup() { Serial.begin(115200); delay(1000); // Allow USB CDC to enumerate pinMode(LED_PIN, OUTPUT); ledOff(); Serial.println("\n=== Tishvi ESP32-C3 Super Mini ==="); Serial.printf("Chip : %s (RISC-V, %d core)\n", ESP.getChipModel(), ESP.getChipCores()); Serial.printf("CPU : %d MHz\n", ESP.getCpuFreqMHz()); Serial.printf("Flash: %d MB\n", ESP.getFlashChipSize() / 1048576); Serial.printf("MAC : %s\n\n", WiFi.macAddress().c_str()); WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); Serial.println("Scanning WiFi (2.4 GHz)..."); int n = WiFi.scanNetworks(); Serial.printf("%d network(s) found\n", n); for (int i = 0; i < n; i++) Serial.printf(" %2d. %-28s %4d dBm\n", i+1, WiFi.SSID(i).c_str(), WiFi.RSSI(i)); Serial.println("\nBlink: GPIO 8 (active-LOW)"); } void loop() { ledOn(); delay(500); ledOff(); delay(500); }
Quick MicroPython test (paste in Thonny REPL):
from machine import Pin import time, network led = Pin(8, Pin.OUT, value=1) # value=1 = OFF (active-LOW) wlan = network.WLAN(network.STA_IF) wlan.active(True) print(wlan.scan()) while True: led.value(0); time.sleep(0.5) # LED ON led.value(1); time.sleep(0.5) # LED OFF
Do's & Don'ts
Rules and safety notes specific to the ESP32-C3.
✅ Do's
- Set USB CDC On Boot → Enabled in Arduino IDE before every sketch upload
- Use 3.3V logic signals on all GPIO pins
- Add
delay(1000)at the start ofsetup()— lets USB CDC enumerate before Serial output starts - Use GPIO8 for the built-in LED, remembering it is active-LOW on most boards
- Call
Wire.begin(6, 7)explicitly for I2C — default is GPIO6/GPIO7 - Use firmware ESP32_GENERIC_C3 for MicroPython (not the standard ESP32 firmware)
- Use flash address
0x0(not0x1000) when flashing MicroPython - Hold BOOT + tap RST if upload gets stuck in "Connecting..."
- Open Serial Monitor at 115200 baud
- Keep GPIO9 unconnected or as input only — it's the BOOT strapping pin
🚫 Don'ts
- Connect 5V signals to GPIO pins — max 3.3V
- Expect Classic Bluetooth to work — this chip has BLE only
- Try to use DAC output — the C3 has no DAC; use PWM instead
- Use the standard ESP32_GENERIC MicroPython firmware — it will not boot on the C3
- Use flash address
0x1000for MicroPython — C3 uses0x0 - Forget to enable USB CDC On Boot — Serial will be silent
- Select "ESP32 Dev Module" in Arduino IDE — must use "ESP32C3 Dev Module"
- Draw more than 40 mA total from all GPIO pins combined
- Drive GPIO9 LOW at power-on — it forces boot mode
- Block the PCB antenna area on the module during WiFi testing
Troubleshooting
Common problems — most relate to the USB CDC Serial setup.
Serial Monitor shows nothing after upload
The most common C3 issue. Go to Tools → USB CDC On Boot → Enabled, re-upload the sketch, then open Serial Monitor at 115200 baud. Also make sure your sketch includes delay(1000) after Serial.begin() to allow the USB CDC connection to settle before the first print.
No COM port appears when board is connected
The board may need a USB bridge driver. Depending on the chip used, you need either the Silicon Labs CP210x driver (search "CP210x USB driver") or the CH340 driver (search "CH340 driver download"). Look at Device Manager — the listed chip name tells you which driver to install.
Upload stuck at "Connecting........"
Manually enter download mode: hold the BOOT button, tap the RST button once, then release BOOT. The upload should proceed. This is commonly needed on first upload. Subsequent uploads may work automatically once the sketch is running.
Built-in LED does not blink / stays on permanently
The LED on most Super Mini boards is active-LOW. If the LED is always ON, your sketch is sending HIGH when it should send LOW for ON. In the sample sketch, change LED_ACTIVE_HIGH to true if the LED behaviour is inverted.
WiFi scan returns 0 networks
Ensure WiFi.mode(WIFI_STA) is called before scanning. The C3 only supports 2.4 GHz — if your router is 5 GHz-only, no networks will appear. Also verify the PCB antenna (the serpentine copper trace on the module) is not obstructed.
"Board 'esp32c3' not found" compile error
The ESP32 board package may not be installed or is outdated. Go to Tools → Boards Manager, search esp32, and install or update "esp32 by Espressif Systems". ESP32-C3 support requires version 2.0.0 or later of the package.
MicroPython: board does not boot after flashing
Check that you used --chip esp32c3 and flash address 0x0 (not 0x1000). Also confirm you downloaded the ESP32_GENERIC_C3 firmware file and not the regular ESP32 file. Re-erase and reflash if the board does not show the REPL prompt in Thonny.
I2C device not found / wrong address
The C3's default I2C pins are GPIO6 (SDA) and GPIO7 (SCL) — not A4/A5 (Arduino UNO) or GPIO21/22 (standard ESP32). Explicitly call Wire.begin(6, 7) in your sketch. Run an I2C scanner to confirm your device's address.
Board reboots continuously (boot loop)
Open Serial Monitor at 115200 baud — the crash reason is printed just before the reset. Common causes: a GPIO connected to 5V, accessing a peripheral before initialising it, or using too much stack in a recursive function. Also check that nothing is pulling GPIO9 (BOOT) LOW at power-on.
Download Sample Sketch
Ready-to-upload .ino for the ESP32-C3 Super Mini.
The full sketch includes chip info printout, WiFi scan, and LED blink with active-LOW handling. Requires ESP32 board package v2.0.0+ and USB CDC On Boot → Enabled in Arduino IDE settings.
Next Steps
Where to go after your ESP32-C3 is running.
Standard ESP32 (38/30-Pin)
Need Classic Bluetooth, DAC output, dual core, or more GPIO pins? The full-size ESP32 is the right choice.
Add a 1.3" OLED Display
Connect the Tishvi 1.3" OLED over I2C to the C3. Use GPIO6 (SDA) and GPIO7 (SCL), and call Wire.begin(6,7).
0.96" OLED Display
The SSD1306 0.96" display also works via I2C on the C3 — same wire connections, same library, different Wire.begin() call.