The ESP32-C3 Super Mini is my go-to microcontroller board whenever space is at a premium. Its tiny size allows it to fit into the smallest devices while still offering ten fully usable GPIOs.
It is fully compatible with all ESP32 development environments, including ESPHome. Additionally, you can directly upload open-source firmware made for the ESP32, such as WLED.
Here’s an example project using the ESP32-C3 Super Mini and an 8x8 WS2812 LED Panel to create an awesome colorful light cube—no programming required and just three short wires:
Overview
The ESP32-C3 Super Mini is energy-efficient, widely available, and highly affordable. Its computational power and 4MB flash storage are more than adequate for most DIY projects.
I’ve replaced Arduinos and ESP8266 boards with this board in most of my new projects. When I need more than 10 GPIOs or require a dual-core processor for computationally intensive tasks, I generally choose the ESP32-S2 Mini. For full backward compatibility with older firmware, I stick with the classic ESP32S.
Key Benefits of the ESP32-C3 Super Mini
- Compact: Extremely small size (22.5x18mm).
- User-Friendly: Works seamlessly with environments like platform.io and ESPHome. No need to manually enter firmware upload mode or press “boot” buttons.
- Low Power: Energy-efficient with support for Bluetooth BLE, ideal for battery-powered devices.
- Expandable: Optional battery shields add charging functionality and portable power supply.
- Affordable: Often priced under €1.50.
GPIOs
The board features a USB-C connector and 10 fully usable GPIOs. Additionally, four GPIOs support analog input:
In the pin schematic, D denotes a digital-only GPIO. Always refer to the actual GPIO number shown in the schematic to avoid confusion with legacy labeling.
Programmable Blue LED
A programmable blue LED is connected to GPIO 8 (inverted: low active). There is also a red power LED that lights up when the board is connected to 5V via its internal voltage regulator. This red LED automatically turns off if the board is powered through the 3.3V pin (e.g., from a battery), which helps conserve energy in low-power scenarios.
Performance Comparison
While the ESP32-C3 is more than twice as fast as an ESP8266, it is a single-core processor running at 160MHz. In contrast, classic ESP32S boards are dual-core and run at 240MHz, offering roughly three times the performance. However, most DIY projects don’t require such speeds, and the higher performance comes at the cost of increased power consumption.
If your project involves computationally intensive tasks or requires real-time responsiveness to multiple tasks, you might consider the classic ESP32S or the newer ESP32-S3.
The compact form factor of the ESP32-C3 Super Mini limits the number of exposed GPIOs. If you need more than 10 GPIOs, consider larger boards that expose up to 22 GPIOs.
Interfaces
Depending on the peripherals you wish to connect, you can use the two-wire serial interface (UART), I2C, and SPI.
With the ESP32-C3, you can map any GPIO to any interface. This flexibility explains why you might come across different pin schematics for this chip.
However, it’s recommended to use the default pins for a given interface for several reasons:
- Compatibility: Example code often assumes the default GPIOs. If you use different GPIOs, you will need to adjust the source code.
- Default Initialization: Many libraries provide default initializers, and using them ensures the default GPIOs are automatically chosen.
Using non-default GPIOs for an interface is technically fine, but you must ensure that your code and libraries are instructed to use those GPIOs for the specific interface.
Serial Interface
Serial Pin | ESP32-C3 SuperMini Pin |
---|---|
RX | 20 |
TX | 21 |
SPI
SPI Pin | ESP32-C3 SuperMini Pin |
---|---|
SCK | 4 |
MISO | 5 |
MOSI | 6 |
CS | 7 |
I2C
The I2C interface poses a challenge with this board. According to the documentation, I2C should either use GPIO8 (SDA) and GPIO9 (SCL), or GPIO4 (SDA) and GPIO5 (SCL). However, there are some issues with these recommendations:
- GPIO 8: This pin is hard-wired to the programmable LED.
- GPIO4/5: These pins conflict with SPI, so using both interfaces simultaneously is not possible.
Since there is no clear default for I2C and the recommendations conflict with other interfaces or features, I recommend not sticking to the defaults and instead choosing the most suitable GPIOs for I2C:
I2C Pin | ESP32-C3 SuperMini Pin |
---|---|
SDA | 1 |
SCL | 3 |
Since you’re using custom GPIOs for I2C, make sure your code is configured to use these specific GPIOs for I2C. For example, when using display drivers, ensure that these GPIOs are initialized correctly in your setup.
Caveat: Defective Board Designs
While the ESP32-C3 SuperMini is readily available from many sellers, subtle differences in board layouts have surfaced. In 2024, some board designs began to appear that may cause issues with WiFi connectivity:
The image shows the “normal” board design on the left and the “revised” layout on the right. In the new layout, the crystal has been moved closer to the ceramic WiFi antenna.
WiFi Sending Impaired
Users with the new board design report that while they can receive WiFi networks, connecting to WiFi networks is either impossible or very slow. Some users also reported that connecting to WiFi was only possible after physically touching the antenna. Others experienced connectivity issues when female pin headers were added, especially when pin 21 was wired.
All observations point to interference during WiFi transmission, most likely caused by the crystal’s relocation closer to the antenna. Once transmission power was reduced (e.g., by touching the antenna), the problem seemed to resolve. Similarly, the issue worsened when pin headers were installed, especially when wires were connected to pin 21, which is near the antenna.
Remedy
You can still use the defective boards for many tasks that don’t involve WiFi, but if you need the board to transmit WiFi correctly, you can reduce the transmission power through code:
WiFi.setTxPower(WIFI_POWER_8_5dBm);
Reducing the transmission power prevents the interference from reaching critical levels.
By reducing the WiFi transmission power, you also reduce the overall power consumption. Since lower transmission power is still sufficient for most home environments with decent WiFi coverage, this may not be a bad thing.
However, this workaround may be impractical when your C3 SuperMini needs to operate in weak WiFi environments or far away from access points (e.g., in a garden). In such cases, you should consider returning defective boards.
The vast majority of C3 SuperMini boards use a flawless design. Only selected batches have been affected by a “redesign.” If you’re unsure, you can measure the distance between the crystal and the ceramic antenna (see image above). A gap of at least 1mm is normal, while affected boards show a gap of just 0.3mm. For more details, check out this article: ESP32-C3 SuperMini Flaw.
Performance
The ESP32-C3 SuperMini is a great replacement for the ESP8266, offering more than double its processing speed. It also features a robust voltage regulator (unlike the under-rated ones often found in ESP8266 boards, which can brown out when connecting power-hungry sensors).
Here’s a quick performance comparison:
Microcontroller | Performance | SRAM | PSRAM |
---|---|---|---|
ESP32-C3 | 160-200MIPS | 400KB | n/a |
ESP8266 | 80MIPS | 160KB + 64KB Instruction RAM + 96KB Data RAM | n/a |
ESP32S | 600MIPS | 520KB | optional, up to 4MB |
GPIO
The ESP32-C3 has 22 GPIOs, but the C3 SuperMini exposes only 13 due to its compact size. Of these 13 GPIOs, 10 are freely usable, while the remaining 3 are strapping pins and cannot be used during boot.
Pin | Description | Remark |
---|---|---|
5V | External or USB power | Activates the internal voltage regulator and turns on the red power LED |
G | GND | |
3.3 | 3.3V directly (3.0-3.6V) | Bypasses the voltage regulator and does not turn on the red power LED. Use this pin for low-energy scenarios, such as battery operation, but take extreme caution not to exceed the voltage limits. This pin directly powers the microcontroller. Exceeding 3.6V will irreversibly damage the microcontroller. Do not use LiIon batteries directly. When supplying power to the 5V pin, this pin exposes the 3.3V produced by the internal voltage regulator. |
0-10 | GPIO0 - GPIO10 | Pins 2 and 9 are strapping pins reserved during boot. Pin 8 controls the blue LED on the board (inverted). |
20-21 | GPIO20 - GPIO21 | free to use, no analog input |
All GPIOs are multifunctional and can be configured for various purposes, such as digital I/O, ADC (Analog-to-Digital Converter), UART, SPI, I2C, PWM, and more.
Ten Freely Usable GPIOs
These 10 GPIO pins can be freely used:
Pin | Remark |
---|---|
0 | Digital and analog (ADC1) |
2 | Digital and analog (ADC1) |
3 | Digital and analog (ADC1) |
4 | Digital and analog (ADC1) |
5 | Digital and analog (ADC1) |
6 | Digital only |
7 | Digital only |
10 | Digital only |
20 | Digital only |
21 | Digital only |
Three Reserve GPIOs
If you require more GPIOs, these three can be used with some restrictions. Ensure your circuitry doesn’t pull any of these up or down by hardware.
These strapping pins are only used during boot (when the firmware isn’t yet active), so you can use them freely in your software (firmware), just make sure your wiring doesn’t tamper with their state, or your board may not boot properly.
Pin | Remark | Default |
---|---|---|
8 | Connected to blue LED (low turns LED on). Controls ROM message printing (not critical). | Floating |
2 | Strapping pin, do not use during boot (selects boot mode). | Floating |
9 | Strapping pin, do not use during boot (boot button). | Pulled up |
JTAG is available on GPIO4-GPIO7.
Boot Modes
The strapping pins control the boot behavior during the boot process:
Mode | GPIO2 | GPIO8 | GPIO9 |
---|---|---|---|
SPI Boot (normal) | High | Any | High |
UART/JTAG (firmware upload) | High | High | High |
Board Schematics
Programmable LED
The board has a blue LED connected to GPIO8. This LED is inverted because it is sinked, not sourced: low turns the LED on, and high turns it off.
Programming
The ESP32-C3 Super Mini is widely adopted and simple to use.
PlatformIO
In PlatformIO, use the board ESP32-C3-DevKitM-1
.
[env:esp32-c3-devkitm-1]
platform = espressif32
board = esp32-c3-devkitm-1
More specialited IDs like lolin_c3_mini may work even better:
[env:lolin_c3_mini]
platform = espressif32
board = seeed_xiao_esp32c3
ESPHome
In ESPHome configurations, use the board id esp32-c3-devkitm-1
:
esp32:
board: esp32-c3-devkitm-1
You can adjust and override specs if needed:
esphome:
name: c3-supermini-test
friendly_name: C3 SuperMini Test
platformio_options:
board_build.f_flash: 40000000L
board_build.flash_mode: dio
board_build.flash_size: 4MB
esp32:
board: esp32-c3-devkitm-1
variant: esp32c3
framework:
type: arduino
light:
- platform: status_led
name: "Status LED"
id: esp_status_led
icon: "mdi:alarm-light"
pin:
number: GPIO8
inverted: true
restore_mode: ALWAYS_OFF
Slow Website?
This website is very fast, and pages should appear instantly. If this site is slow for you, then your routing may be messed up, and this issue does not only affect done.land, but potentially a few other websites and downloads as well. Here are simple steps to speed up your Internet experience and fix issues with slow websites and downloads..
Comments
Please do leave comments below. I am using utteran.ce, an open-source and ad-free light-weight commenting system.
Here is how your comments are stored
Whenever you leave a comment, a new github issue is created on your behalf.
-
All comments become trackable issues in the Github Issues section, and I (and you) can follow up on them.
-
There is no third-party provider, no disrupting ads, and everything remains transparent inside github.
Github Users Yes, Spammers No
To keep spammers out and comments attributable, all you do is log in using your (free) github account and grant utteranc.es the permission to submit issues on your behalf.
If you don’t have a github account yet, go get yourself one - it’s free and simple.
If for any reason you do not feel comfortable with letting the commenting system submit issues for you, then visit Github Issues directly, i.e. by clicking the red button Submit Issue at the bottom of each page, and submit your issue manually. You control everything.
Discussions
For chit-chat and quick questions, feel free to visit and participate in Discussions. They work much like classic forums or bulletin boards. Just keep in mind: your valued input isn’t equally well trackable there.
(content created Aug 28, 2024 - last updated Jan 07, 2025)