Source code that accompanies First Look at the Super Mini ESP32-C3.
Code source qui accompagne Coup d'oeil sur la carte de développement Super Mini ESP32-C3. Ce billet qui correspondait à la version originale du référentiel datant du 14 octobre 2024 est incomplet et en partie désuet. La version en anglais est à jour. (2026-04-02)
April 30, 2026
Sketches in this repository use version 3.3.7 or better of the ESP32 Arduino core.
A release and tag were created to easily recover the original 2024-10-14 release with fewer sketches that used version 3.0.1 of the core as if that could be of interest. The original version of the First Look post is available here.
Table of Content
- 1. Introduction
- 2. Boards
- 3. Compiling the Example Sketches
- 4. Caution
- 5. List of Projects
- 6. Projects for the ESP32-C3 Mini with 0.42" OLED Display
- 7. To do
- 8. Change Log
- 9. Licence
The Super Mini ESP32C3 boards are small simplified versions of the original Espressif development boards for the ESP32-C3 microcontroller. Unlike older Espressif microcontrollers, the C3 has a RISC-V core.
These boards measure 22x18 mm, 24x18 mm including the protruding USB-C connector. A standard 8 pin 0.1" header can be soldered on each side. Of these 16 pins, 3 are dedicated to power connections (GND, 3.3 volts and 5 volts). The remaining 13 pins are input/ouput connections to the microprocessor. The boards have two push buttons (reset and boot), two LEDs (one is a power indicator, the other is a user LED) and an onboard ceramic antenna. The bigger components on the top side are the SoC, the crystal oscillator and a voltage regulator. There are no components on the back side.
There is a plus version which has an RGB user LED and a U.FL connector for an optional external antenna.
These boards have an onboard 0.42" OLED display and a different form factor: 25x21 mm, 27x21 mm taking into account the USB-C connector. The same SoC pads are brought out to the header pins, but their ordering is completely different. Most of the components, SoC, oscillator and so on, are on the back side of the board which makes it almost impossible to solder the board on top of a larger printed circuit board. Perhaps that's the reason there are no crenellated edge connectors.
The A5 pin name is greyed out in the two pin images above because the Digital Controller of SAR ADC2 cannot work.. It is suggested to use SAR ADC1 (Source: ESP32-C3 Series SoC Errata v1.2). In other words, do not use A5 as an analogue input; GPIO 5 is connected to ADC2, while GPIOs 0 to 4 are connected to ADC1.
Each sketch or project in this repository is presented in a way that allows it to be compiled in the Arduino IDE or in the pioarduino IDE (and perhaps the PlatformIO IDE) extensions installed in a code editor such as Visual Studio Code or VSCodium.
To compile a sketch in the Arduino IDE click on the Open option in the File menu and navigate to and select the desired file with the .ino extension with the system file manager. Alternately, click on the Sketchbook option and navigate to the desired sketch in the submenu tree (screen capture). The IDE must be configured as explained in the Arduino IDE section below.
To compile a project in the piaorduino IDE extension (or maybe the PlatformIO IDE), click on the home icon in the status bar at the bottom, then on the [Open Project] button and then navigate to the project's directory which contains its platformio.ini file. Click on the [Open "<project>"] button. The IDE must be configured as explained in the pioarduinoIDE section below.
One important change with the older version of this repository is the choice of the Nologo esp32c3 Super Mini board definition. The definition is present in both the Arduino and pioarduino development environments which simplifies things. The pin definition file is simple and lean. Using the no logo definition seems appropriate because the first boards purchased did not have any identifying markings. Nologo or WmNo Logo or wmnologo or NologoTech is (or was) selling ESP32C3 Super Mini boards among many other development boards and other products. There's an extensive English language ESP32C3SuperMini Getting Started Wiki and a small repository on Github. However, it is not clear if this enterprise is still in operation, the link to its Aliexpress store is broken and there has not been much activity in the GitHub site.
The latest version of the Arduino IDE can be obtained for Windows, Linux and macOS in the Downloads page from Arduino. Install the latest Espressif ESP32 Arduino core.
-
Add https://espressif.github.io/arduino-esp32/package_esp32_index.json in the Additional Boards Manager URLS in the Preferences window in the IDE.
-
Using the Boards Manager, install platform
esp32by Espressif, version 3.3.6 or newer.
This is a one-time task.
When compiling a sketch from this repository
-
Select the
Nologo ESP32 C3 Super Miniboard in theToolsmenu of the IDE when compiling a project. The default values for the other options in the menu are acceptable. -
Set the directory containing the downloaded repository as the sketchbook location in the IDE Preferences settings.
- This must be done or else some libraries will not be found and consequently some sketches will not compile.
- Keep track of the old sketchbook location before changing it.
- Reset the sketchbook location to its old value when done.
When the repository is downloaded as an archive, its top-level directory is named xiao_esp32c3_sketches-main. The last bit, which identifies the git branch, was removed because there's only one branch in this repository.
All of the sketches in the repository have been successfully compiled with the pioarduino-espressif32 platform. The latest stable release (pioarduino/platform-espressif Release 55.03.37 Arduino Release v3.3.7 based on ESP-IDF v5.5.2.260206 February 11, 2026) was used.
The platformio.ini configuration file of each example project in the repository takes care of selecting the correct board, framework and platform. The path to the third-party libraries and to the source code is also specified in the configuration file. Each project should compile as is in the pioarduinoIDE so long as the directory structure is not changed.
This was tested using the pioarduinoIDE extension (v1.2.5) which is a fork of the PlatformioIDE extension in VSCodium (Version: 1.108.10359) which is itself a fork of Visual Studio Code. Note that the PlatformioIDE extension is not available in the VSCodium marketplace and its manual installation is not easily done because the VSIX package is not readily found anymore.
There are more than one manufacturer of these boards that differ in more or less subtle ways. Some boards are very thin: 0.6 mm which makes them somewhat fragile. Others are more robust being 1 mm thick.
A major problem with some Super Mini boards is their lack lustre to very bad Wi-Fi and Bluetooth performance. However all Super Mini boards are not the same, and some have reasonable wireless performance. Unfortunately, it is not always obvious in which category the boards offered by a particular vendor fall.
The projects can be grouped in categories.
-
00_sys_info Displays information about the ESP32-C3 system on a chip.
-
01_pin_names Lists the I/O pin names and numbers of the Super Mini ESP32-C3 board along with some macro definitions.
-
12_macs Lists all the MAC addresses of the ESP32-C3 interfaces.
-
02_blink_pulse_led Alternately blinks (heartbeat) and pulses the on-board LED of the Super Mini board. The switch between these modes is done by pressing the boot button. Tests
digitalWrite(),analogWrite(), anddigitalRead(). -
10_blink_leds Toggles high and low each io pad along the edge of the Super Mini ESP32-C3 board in turn. Tests digitalWrite() and verifies the io pin mapping.
-
11_pulse_leds Ramps up and down the intensity of a LED connected to each io pad along the edges of the Super Mini ESP32-C3 in turn. Tests pulse width modulaton and
analogWrite()and also verifies the io pin mapping. -
13_poll Tests polling of all the i/o pins of the Super Mini ESP32-C3 when the pins are in INPUT and OUTPUT modes.
-
14_interrupts Test the interrupt capability of all the i/o pins of the Super Mini ESP32-C3.
-
15_interrupts2 Investigates three interrupt modes and debouncing techniques with an Super Mini ESP32-C3.
-
16_adc Testing all the analogue input pins of the Super Mini ESP32-C3.
-
17_adcc Testing continuous analogue input of the Super Mini ESP32-C3.
-
18_deep_sleep_tmr Wake a Super Mini ESP32-C3 from deep sleep mode with timer.
-
19_deep_sleep_io Wake a Super Mini ESP32-C3 from deep sleep mode with a high or low signal to an i/o pin.
-
20_uart Test the UART0 peripheral of the ESP32-C3 with a loop back test.
-
21_uart2 Test the UAR0 and UART1 peripherals of the ESP32-C3 with loop back tests.
-
22_spi Test the ESP32-C3 SPI peripheral with a loop back test.
-
23_spi2 ESP32-C3 SPI loop back tests with 12 different pin assignements.
-
24_spi_master Test of SPI communication; SPI master device firmware.
-
25_spi_slave Test of SPI communication; SPI slave device firmware.
-
26_i2c_ds3231 Test the ESP32-C3 I2C peripheral with an RTC/EEPROM module.
-
27_i2c_oled Test the I2C display of an ESP32-C3 Super Mini with onboard 0.42" OLED.
Note: Projects 24_spi_master and 25_spi_slave are meant to be run on two ESP32-C3 based dev boards with their SPI signals, MISO, MOSI, SCLK and SS, connected to the same signal on the other board. In other words, MISO is connected to MISO and MOSI to MOSI, there is no flipping signals as when connecting two UARTs where TX is connected to RX.
-
03_scan_wifi Prints a list of available Wi-Fi networks every five seconds. Some Super Mini boards do not manage to find as many networks as others because of bad Wi-Fi performance. Edit
secrets.h.templateand save assecrets.hbefore compiling. -
04_wifi_connect Wi-Fi connection example. The Super Mini may very well fail to connect. Define the TRY_TX_POWER macro to see if that solves the problem. It may be necessary to change the value of the TX_POWER macro. Edit
secrets.h.templateand save assecrets.hbefore compiling. -
05_wifi_tx_power Tests each predefined value for the Wi-Fi TX (transmit) power and records the time required to connect to the Wi-Fi network. Edit
secrets.h.templateand save assecrets.hbefore compiling.
The table shows times needed to connect to a Wi-Fi network in milliseconds as a function of the radio TX power setting for nine different ESP boards. The columns 5B:00, 46:88 and 2D:20 are three boards with no label purchased about 18 months ago. The next two column E5:C0 and EF:44 are ESP32C3 Super Mini boards from Tenstar. The sixth column; F5:40, is a Super Mini with OLED display. The last three boards are XIAO ESP32C6, ESP32C3 and ESP32C5 boards. The - signifies that a connection was not made within two minutes.
| 5B:00 | 46:88 | 2D:20 | E5:C0 | EF:44 | F5:40 | XC6 | XC3 | XC5 | |
|---|---|---|---|---|---|---|---|---|---|
| WIFI_POWER_20dBm | 1259 | 1251 | - | 49 | 86 | 51 | 49 | 1298 | 91 |
| WIFI_POWER_19_5dBm | 1256 | 1250 | 1439 | 48 | 45 | 53 | 49 | 1251 | 50 |
| WIFI_POWER_19dBm | 1253 | 1250 | 1260 | 45 | 44 | 48 | 92 | 1255 | 47 |
| WIFI_POWER_18_5dBm | 1251 | 1254 | 1252 | 144 | 49 | 71 | 52 | 1256 | 48 |
| WIFI_POWER_17dBm | 1250 | 1296 | 1251 | 47 | 45 | 45 | 48 | 1253 | 50 |
| WIFI_POWER_15dBm | 1250 | 1260 | 1254 | 46 | 48 | 46 | 48 | 1254 | 47 |
| WIFI_POWER_13dBm | 1250 | 1253 | 1252 | 45 | 46 | 49 | 51 | 1251 | 47 |
| WIFI_POWER_11dBm | 1323 | 1253 | 1253 | 46 | 46 | 57 | 53 | 1252 | 50 |
| WIFI_POWER_8_5dBm | 1294 | 1264 | 1301 | 50 | 85 | 53 | 128 | 1255 | 48 |
| WIFI_POWER_7dBm | 1300 | 1267 | 1312 | 48 | 87 | - | - | 1253 | 47 |
| WIFI_POWER_5dBm | 1265 | - | 1258 | 1157 | 52 | - | - | 1251 | 49 |
| WIFI_POWER_2dBm | - | - | 1360 | - | 59 | - | - | 1254 | 48 |
The long connect times for the XIAO ESP32C3 are surprising because it systematically connects in under 50 ms when the TX power is never changed from the default 20 dBm setting. Two reasons have been put forward for the long connection times for some Super Mini boards.
-
Some Super Mini boards have a 3.3V regulator with a peak current rating of 250 mA (SMD LLVB). This is insufficient to power everything given that the official datasheet specifies Wi-Fi current consumption @18.5dbm as 276mA or greater. Beherith.
-
Bad design such as having the ceramic antenna too close to other components on the board or the presence of an impedance mismatch with the ceramic antenna.
More details can be found in the section 1.3 Source of the Wi-Fi Problem.
-
07_ble_led A rudimentary example of the Bluetooth® Low Energy (BLE) capabilities of the ESP32-C3. The microcontroller is set up as a BLE peripheral with a LED service and as switch characteristic. Any central (client) device can turn the LED on or off by sending a proper message. Bluetooth Controlled LED explains how to use LightBlue, an Android and presumably IOS application, to do that.
The project uses the ArduinoBLE library from arduino-libraries which has very recently been updated.
Currently (2026-02-26) this project is not working. When using an ESP32-C3 based board it reboots after a core panic which occurs when the
BLE.begin()is invoked. More details are found at the top of themain.cppfile.
-
08_ble_led2 This project is similar to the previous one except for the use of the BLE library instead of the ArduinoBLE library. The BLE library included in the ESP32 core for Arduino was the creation of Neil Kolban.
-
09_ble_led3 This project is similar to project 08_ble_led2 using the BLE library to make the Super Mini into a BLE on/off device. This version adds the ability to test the Bluetooth connection at all possible BLE Tx power levels: -24dbm, -21dbm, -18dbm, -15dbm, -12dbm, -6dbm, -3dbm, 0dbm, +3dbm, +6dbm, +9dbm, +12dbm, +15dbm, +18dbm. It seems that +20dbm (
ESP_PWR_LVL_P20) cannot be set.
- 06_async_web_led Toggles the built-in LED on and off with a Web interface. It may be necessary to specify a valid Wi-Fi tx power as determined with the previous sketch. Edit
secrets.h.templateand save assecrets.hbefore compiling. Aside from setting the radio TX power and handling the fact that the built-in LED is active LOW, this project is the same as 05_async_web_led in xiao_esp32c3_sketches.
A companion GitHub repository, mini_esp32c3_oled_sketches, contains pioarduino projects showing how the I2C and SPI peripherals can be used simultaneously on the ESP32-C3 Mini with 0.42" OLED Display development board. Two different variant pins_arduino.h files are proposed along with two board definition manifests to facilitate this.
Of course, this could be done with ESP32-C3 Super Mini and it would not require a new board definition or a new variant pins_arduino.h. Just use the source code from the Mini with OLED display examples with the Nologo ESP32 C3 Super Mini board definition.
-
Look at partitions as per brighproject's Dec 2025 issue.
-
Eventually, verify if 07_ble_led with ArduinoBLE can be tweaked to work.
| Date | Change |
|---|---|
| 2026-04-30 | Add 09_ble_led3 project |
| 2026-04-22 | Link to mini_esp32c3_oled_sketches and small corrections |
| 2026-04-17 | Grey out A5 pin in diagrams |
| 2026-04-2 | Add 27_i2c_oled project and local modified copy of the 72x40oled_lib library |
| 2026-04-1 | Add local copies of the ESP32SPISlave and DS3231 libraries |
| 2026-04-1 | Add 22_spi, 23_spi2, 24_spi_master, 25_spi_slave and 26_i2c_ds3231 projects |
| 2026-03-26 | Add 20_uart and 21_uart2 projects and update this README |
| 2026-03-24 | Add 18_deep_sleep_tmr and 19_deep_sleep_io projects and update this README |
| 2026-03-22 | Add 16_adc and 17_adcc projects |
| 2026-03-16 | Add options to the interrupts2.ino and update this README |
| 2026-03-15 | Add 15_interrupts2 project |
| 2026-03-14 | Add 14_interrupts project |
| 2026-03-13 | Add 13_poll project, update the blog and update this README |
| 2026-03-11 | Add 12_macs project |
| 2026-03-10 | Improved wifi_tx_power sketch and more boards tested |
| 2026-02-27 | Add 10_blink_leds and 11_pulse_leds projects |
| 2026-02-26 | Update to version 3.3.7 of the esp32 arduino core |
| 2026-02-24 | Created a tag and release labelled v3.0.1_2024-10-14 |
| 2024-10-14 | Merged pull requests from Beherith and billzajac |
| 2024-07-24 | Added 08_ble_led2 |
| 2024-06-21 | Added 07_ble_led |
| 2024-06-21 | Updated to v3.0.1 esp32 Arduino core |
| 2024-05-12 | Initial version |
Copyright 2024-2026, Michel Deslierres. No rights reserved.
While the copyright pertaining to included libraries must be respected, all the code by Michel Deslierres in this repository is in the public domain. In those jurisdictions where this may be a problem, the BSD Zero Clause License applies.
