Skip to content

Lonely Binary ESP32-C3 OLED

A thumb-sized RISC-V board with a 0.42” monochrome OLED, one onboard WS2812, and a LiPo shield stack — the cheapest way to give a prop a readable status line.

Chip ESP32-C3 (RISC-V)
Flash 4 MB
PSRAM None
Max LEDs 256
Audio —
Display 0.42" 72x40 SSD1306 monochrome OLED (I2C)
Touch —
Storage On-chip FAT (web UI only; no USB drive)
Network ✔
Update modes Standalone (WiFi/OTA)

Things that report: a battery and state readout inside a pack, a bench rig that shows which show is loaded, a badge that displays a name and blinks a pixel. The 72x40 screen holds a couple of short lines or a number the size of the panel, and the onboard pixel gives you a status light with no wiring at all.

It is not the board for a big show. One RISC-V core, 4 MB of flash, no PSRAM and — the one that actually bites — no hardware floating point.

GPIOCan doNotes
0 in / out / PWM / ADC ADC1_CH0 (strapping)
1 in / out / PWM / ADC ADC1_CH1
2 in / out / PWM / ADC ADC1_CH2 (strapping)
3 in / out / PWM / ADC ADC1_CH3
4 in / out / PWM / ADC ADC1_CH4
7 in / out / PWM
8 out / PWM onboard WS2812, strapping
9 in / out / PWM BOOT button, strapping
10 in / out / PWM
20 in / out / PWM U0RXD
21 in / out / PWM U0TXD

The OLED sits on I2C at 0x3C (SDA GPIO5, SCL GPIO6) and the onboard WS2812 is on GPIO8, which is the default LED output: a fresh board lights that pixel with no wiring. Strips, buttons and sensors go on the remaining pads.

No USB drive. The C3’s USB is a serial/JTAG console, not USB-OTG, so it cannot present its filesystem as a thumb drive. Files go on and off through the Files tab in the dashboard — the same path the classic ESP32 and the M5Stack Core2 use. Everything else about show.json is unchanged.

Soft-float. Every expression the engine evaluates per frame costs more here than on an S3. The screen is tiny so drawing is cheap; the arithmetic is what to watch. Prefer a pattern over a per-pixel paint with heavy maths in it, and be sparing with expressions that run every frame on every pixel.

No hold-to-sleep. The power-button gesture is refused on this board, and says so in the log at boot rather than pretending. Its BOOT button is GPIO9, and the C3 can only wake from GPIO0–5 — arming the gesture anyway would sleep the prop with no way back short of a power cycle.