30 days. Small screens.
Big ideas.
Small beginnings.
A new ESP32 project every day in September. Real code, flashable firmware, and the things we learned getting it to work.
The daily builds
Start anywhere.
Each project stands on its own. Follow the guide to build it. Read the story to see how we got there.
- 01
Hello World
Put your first words on an AMOLED. Keep them there.
- 02
Styled Text
Make the greeting yours with color, size, and a custom font.
- 03
A Static Graphic
Turn a real photograph into pixels the board can display.
- 04
A Carousel
Swipe through three portraits with LVGL’s Tile View.
- 05
A GIF
Make Homer disappear into the bushes. A short loop is the whole assignment — and the whole memory lesson.
- 06
A Movie
Play a movie from raw frames — then make it longer than the board can hold, with an SD card.
- 07
Touch Calibration
Measure the touchscreen, learn its local distortion, and save a reusable map before LVGL.
- 08
LVGL Basics
A counter, slider, switch, and second screen using the Stopwatch's saved touch map.
- 09
Sound Effects Board
Two four-pad game sound kits, instant page pushers, and sounds made from descriptions or audio files.
- 10
Level
A round bubble level with zeroing, hysteresis, and a deterministic IMU filter.
- 11
Buttons, Buzzer, Haptics
The shared four-gesture control grammar made audible, visible, and tactile.
- 12
Basic-Ass Stopwatch
Mechanical-stopwatch controls, precise elapsed-time arithmetic, laps, and guarded reset.
- 13
Couch to 5K
Twenty-seven workouts, durable progress, exact interval accounting, and the project's reference controls.
- 14
Morse Code Practicer
A straight key, ITU timing, live symbols, decode, and selectable speed.
- 15
Sound Level (dB)
An honest dBFS meter with smoothing, peak hold, and explicit limits on calibration.
- 16
Music Visualizer
A microphone FFT rendered as stable radial bands with sensitivity and freeze controls.
- 17
Tamagotchi
A persistent virtual pet with elapsed-time aging and the shared selection grammar.
- 18
Pokedex
A 151-entry local data browser with list/detail navigation and bounded assets.
- 19
Metronome
A drift-resistant musical clock with tempo, meter, tap tempo, sound, and haptics.
- 20
Tempo Checker
Onset detection, folded intervals, robust BPM, and confidence that admits uncertainty.
- 21
Yo
A one-tap nearby message between identical Stopwatches over ESP-NOW.
- 22
Captive Portal
Credential-free source, guided Wi-Fi provisioning, explicit retries, and shared NVS.
- 23
Weather Station
Keyless weather data reduced to a round current-conditions and hourly-forecast view.
- 24
Walkie-Talkie
Push-to-talk PCM between identical Stopwatches over ESP-NOW with sequencing and jitter control.
- 25
Walkie-Talkie, Worldwide
The same voice contract over authenticated WebSocket rooms and bounded reconnect behavior.
- 26
Flight Radar
A filtered ADS-B scope with honest age, bounded targets, and inspectable aircraft.
- 27
Package Tracker
A provider-neutral package board with explicit status mapping, cached events, and secret-safe setup.
- 28
Real-Time Captions
Live microphone transcription with visibly different interim and finalized text.
- 29
Note Taker
Hold-to-record voice notes, explicit transcription states, and a durable local ring.
- 30
Trivia
A multi-Stopwatch quiz with host election, timestamped answers, dedupe, and visible verdicts.
- 31
WorkOS AuthKit
OAuth device authorization on a keyboardless Stopwatch with explicit polling and secret boundaries.
- 32
Connected
A resident OAuth session with rotated refresh tokens, claims, expiry, renewal, and sign-out.
- 33
Pipes
Resident identity applied to provider connections through a least-privilege gateway.
- 34
Pi Pet
One Grok Bot–style pet per running pi coding-agent session: it thinks, works, gets blocked, celebrates, and waits for you.
- 35
Agent Dial
An honest fork of the OpenHarness dial for the Stopwatch: see every agent session, answer, approve, stop, and speak tasks, whatever harness runs them.
The workbench
Different boards. More possibilities.
Rectangular screens, round screens, buttons you can feel. Every project names its dev kit so you can match the firmware to the hardware.
6 published projects
Waveshare Touch AMOLED 1.8
ESP32-S3-Touch-AMOLED-1.8 V2
1.8″ AMOLED · 368 × 448 · ESP32-S3
The first workbench: a rectangular touch display with room for text, portraits, and motion.
On the workbench · projects to come
Waveshare Touch AMOLED 1.75-B
ESP32-S3-Touch-AMOLED-1.75-B
1.75″ round AMOLED · 466 × 466 · ESP32-S3
A circular touch display in a protective case. A new canvas for round interfaces.
29 published projects
M5Stack Stopwatch
Stopwatch Dev Kit (ESP32-S3) · C152
1.75″ round AMOLED · 466 × 466 · ESP32-S3
A round touch display, programmable buttons, and a built-in battery for portable projects.
Use each lesson’s guide for its hardware revision and setup. Working with an agent? Get the Markdown index ↗