ESP32-C3 OLED/The board in your hand/01. What you are holding
The board in your hand · 01 of 9

What you are holding

A 20 by 25 millimetre board with a screen, a radio and sixteen holes. Here is what the buttons and LEDs do, which ones your code can reach, and how the expansion base charges a battery.

One chip, one screen, no bridge

The part in the middle is an ESP32-C3FH4: a single RISC-V core at up to 160 MHz, Wi-Fi 4 and Bluetooth LE, with 4 MB of flash and 400 kB of SRAM. There is no PSRAM and no second core. One core matters more than it sounds: the radio is serviced from the same core your loop() runs on, so a long delay() is a stretch of time during which nothing is answering the access point.

Two things are on the board that are not on a bare C3 module. A 0.42 inch OLED is soldered to it and permanently wired to two of the GPIOs. And the USB-C socket goes straight to the chip — there is no CH340 or CP2102 between them, because the C3 has a USB peripheral of its own. That is why there is no driver to install on any operating system, and also why the port vanishes every time the chip resets.

Four parts that look like two

Two black buttons sit at the top edge, a millimetre apart, and two LEDs sit either side of the USB socket. In each pair, one is yours and one is not — and the silkscreen naming them is about half a millimetre tall.

Two buttons, two LEDs, two of them yours
chip EN pin
Point at one
Connected to
chip EN pin
Your code can use it
no
RST restarts the chip. It pulls the EN pin down through a pull-up and a capacitor, which is a hardware reset — the same thing unplugging does, without the port being gone for as long. Nothing in your sketch can read it.

The pair that costs people an evening is the buttons. RST restarts the chip and is invisible to your code. BOO is GPIO 9, which the chip reads once at reset to decide whether to run your sketch or wait for an upload, and which is an ordinary input with a pull-up on it for the rest of the time. Holding the wrong one during an upload is the difference between a board that flashes and one that says "Failed to connect".

The size, if you are building it into something

The board is 20.5 mm wide and 25 mm tall, and the two rows of holes are 17.78 mm apart — 700 mil, which is a whole number of tenths, so it drops onto stripboard and across the centre channel of a breadboard without any adaptor. Eight holes down each side at the usual 2.54 mm.

The antenna is a ceramic chip a few millimetres long at the top edge. It is small, and it is the reason a later article in this book is about turning the transmit power down: at full power the radio puts out more than the matching around that antenna can carry, and the board fails to join networks it is sitting next to.

What the box gives you as well

The expansion base is the second board in the bag: a carrier with a power switch, a JST PH 2.0 battery connector, a charger, and a solder pad that connects the battery to an ADC pin so a sketch can read its own battery level. It also decides one thing you cannot undo, which is which way round the C3 board goes into it — that is its own article, and worth reading before the first time rather than after.

Charging needs the switch on

The base has its own charge indicator: LED1 in the charging-circuit notes, connected to the charger's CHRG pin. This is separate from the power and IO8 LEDs on the C3 board. The base's slide switch, SW2, also controls whether the battery is connected to the charging and battery-detection circuit. Plugging in USB is not enough: the switch must be ON to charge the cell.

  1. Fit the base in the correct orientation and connect a suitable single-cell battery with the correct polarity.
  2. Move SW2 to ON, then connect USB/5 V power. The charge LED stays on steadily while the battery is charging.
  3. When charging finishes, the charge LED goes out as CHRG becomes high-impedance.
  4. To disconnect the battery for transport or storage, move SW2 to OFF. The battery will not charge in this position, even with USB connected.

With USB/5 V supplied, the indicator behaves as follows:

Switch and battery stateCharge LEDWhat it means
ON, battery connected and chargingSteady onThe battery is in the charging circuit.
ON, charging completeOffCharging has finished.
OFFRapid flashing, which may look dim or half-litThe battery is disconnected from the charger and is not charging.

The supplied charging-circuit notes describe the OFF-state glow as rapid switching of CHRG between low and high-impedance when the charger cannot detect the battery. Your eyes blend the flashes into a dimmer light. On the documented circuit, this behaviour alone is normal and does not indicate a fault; it is not a reduced-current charging mode. An unlit LED by itself is not proof of a full battery either — check that power and the battery are connected and the switch is ON.

Inside the base's charging circuit

The following component references come from the supplied Charging Circuit Instructions (充电电路说明书), based on schematic Schematic2_9, P1, ESP32-C3, V1.0, dated 2025-10-06.

ComponentJob
U13 — TP4054Single-cell lithium battery linear charger, with CHRG, GND, BAT, VCC and PROG pins.
R10 and R11 — 100 kΩ eachBattery-voltage divider feeding the BATTERYMONITOR ADC network.
SW2Connects or disconnects the battery from the charging and detection path.
Q1MOSFET identified in the notes as battery reverse-polarity protection / discharge control.
F2Fuse in series with the battery-positive path.
LED1 and R9 — 2 kΩCharge-status indicator driven by CHRG.

In the notes' description of the switched battery path, Q1's drain connects to battery positive through F2, and its source leads towards SW2. With SW2 ON, contacts 2–3 connect the battery to U13's BAT network and the R10/R11 sensing circuit. With SW2 OFF, the contact moves to pin 1, which is unconnected, opening that path. Pins 4–6 are marked unused.

The two equal divider resistors halve the sensed voltage before it reaches the ADC. The base's BATTERY MONITOR solder jumper must be bridged to read that voltage on GPIO 2; the battery-level article explains the conversion and calibration.

For a custom hardware modification, the notes also suggest monitoring CHRG with an ESP32 GPIO and a 4.7–10 kΩ pull-up to 3.3 V, using its level changes to help identify battery connection status. That needs an added connection and a check of the existing LED circuit's voltage levels before wiring it to a GPIO; it is not a signal already available to a stock sketch.

When it does not work

The charge LED looks half-lit with the battery switch off

The expansion base's charge LED is separate from the C3 board's power and IO8 LEDs. With SW2 OFF, the battery is disconnected from the charger. The charging-circuit notes describe rapid flashing that can look dim or half-lit; the battery is not charging. With a battery connected, move SW2 to ON and supply USB/5 V power to charge it. A steady charge LED means charging; it goes out when charging finishes.

The blue LED will not turn off

You are probably looking at the red one. The red LED is wired across the 3.3 V rail through a resistor and has no pin at all, so nothing in any sketch can change it — it is lit whenever the board has power. The blue one, marked IO8, is the one on GPIO 8.

Pressing RST does nothing you can detect

It does exactly one thing — it restarts the chip — and if your sketch prints nothing on startup there is nothing to see. Add a Serial.println in setup and press it again. If the serial port disappears from the IDE for a second when you press it, that is the reset working and the USB peripheral going down with it.

The board gets warm near the USB socket

Slightly warm at the regulator is normal, especially with the radio transmitting. Hot enough to be uncomfortable to hold is not — unplug it and check that nothing is bridging V5 or V3 to GD before you plug it in again.

You have an ESP32-C3 board that looks similar but has no screen

This book is written for the board with the 0.42 inch display soldered to it, and two of its GPIOs are spent on that display. A SuperMini or a bare C3 module is the same chip with different pins free; the ESP32 book covers the chip, and that is the better place to start with one of those.

Where this goes next

What is printed beside each hole, what your code has to call it instead, and which ones were taken before you arrived.

The sixteen pins, and the six already spoken for

Edit this page — content/boards/c3-oled/what-you-are-holding.mdx

Community

Questions about this product

See what other owners have asked, and read their solutions.

Ask a question ↗

ESP32-C3 OLED Development Board with Expansion Base

Loading discussions…

Discuss this article

Ask about this page. The answer stays here, on the page it belongs to, for whoever hits the same wall next.

Browse ESP32-C3 OLED on the forum