Customer Login
If you are already registered, please log in.
Looking for a desk clock that combines vintage flip-card charm with modern Wi-Fi smarts? Our upgraded ESP32-S3 MINI Flip Clock 2.0 renders crisp, bold sans-serif digits on a tiny 0.96-inch OLED display — each digit snaps over with a two-phase flip animation, just like a mechanical split-flap clock. But this version goes further than the classic flip: it shows your timezone (auto-switching for daylight saving), live WiFi signal bars, a time-of-day greeting, and live ticking seconds — all packed into 128×64 pixels without feeling crowded. It's a satisfying weekend build for makers, students, and anyone who appreciates a beautifully typeset clock face. Get Parts: ESP32-S3 MINI + 0.96" OLED I2C
Four wires, no soldering required. Power the OLED from the ESP32-S3 MINI's 3.3V rail and run the two I²C lines to GPIO 8 and 9.
| OLED Pin | ESP32-S3 MINI Pin | Purpose |
|---|---|---|
| VCC | 3.3V | Power |
| GND | GND | Ground |
| SDA | GPIO 8 | I²C data |
| SCL | GPIO 9 | I²C clock |
Note: if you're using a different ESP32 variant that doesn't expose GPIO 8 and 9, you can change the pin assignment in the sketch (see Step 4 below).
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Open Tools → Manage Libraries and install these two (the ESP32 core includes everything else):
FreeSansBold24pt7b font the clock uses for its bold digits)Everything else — WiFi, Wire, and time.h — comes bundled with the ESP32 core. No extra installs needed.
Download the sketch file (flip-clock-ntp.ino) and open it in the Arduino IDE.
Near the top of the sketch you'll see a USER SETTINGS block. Change these three lines to match your Wi-Fi network and time zone:
That's it. Three edits and you're ready to flash. If your board uses different I²C pins, you'll find this block a bit further down — change the numbers to whatever your ESP32-S3 MINI exposes:
Plug the ESP32-S3 MINI into your computer with a USB-C cable, select the correct COM / serial port under Tools → Port, and click the Upload arrow. After a few seconds you'll see the boot sequence — "Rendering glyphs...", then "Connecting WiFi", then "Syncing NTP..." — and finally the clock face snaps into view: a big, bold HH:MM in four individual rounded flip cards, with all the extras populated around it.
The 128×64 OLED is laid out as three distinct zones, each with a purpose:
FreeSansBold24pt7b font instead of blocky 7-segment glyphs, for a cleaner, more modern lookpool.ntp.org — accurate to the second, no RTC module needed, automatic daylight saving#define to switchThe technical magic of this build is how it gets bitmap-quality digits to behave like mechanical flip cards. The classic approach is to hand-draw 7-segment glyphs procedurally, but that looks like a calculator — not a flip clock. Instead, this sketch pre-renders every digit as a proper bitmap at startup, then samples those bitmaps at runtime to drive the flip animation.
At boot, the sketch creates ten GFXcanvas1 buffers (one per digit, each exactly the size of a card) and prints a centered FreeSansBold24pt7b numeral into each:
Then, during the flip animation, the renderer reads pixels out of those canvases with OR-downsampling: for each output row in the compressed flap, it ORs together all the source rows that map into it, so even a 1-pixel-tall flap still shows a meaningful silhouette of the half being compressed. The result is a flip that genuinely looks like a piece of paper folding — not a digit being sliced.
Each of the four digit slots has its own independent animation timer, so hours can be idle while minutes are flipping, or vice-versa:
The flip itself runs in two phases, each lasting 175 ms (350 ms total):
Phase A (0–175 ms): the OLD top half "falls" — its height is progressively compressed toward the midline, revealing the NEW top digit behind it.
Phase B (175–350 ms): a NEW bottom flap "drops down" from the midline, growing in height until it fully covers the OLD bottom digit.
The sketch runs two cooperating pieces on the ESP32-S3 MINI:
Time loop. On boot, the ESP32 connects to your Wi-Fi, syncs with an NTP server, and then runs a software clock locally. Every frame, the current hour and minute are broken down into four digits and each is compared to its current displayed value. Any mismatch triggers a flip animation for just that digit. The bottom row's seconds value is read fresh every frame directly from the system clock, so it ticks visibly once per second.
Render loop. Roughly 33 times per second, the entire 128×64 frame is redrawn from scratch: the centered date header, the four flip cards (each in whatever animation phase it happens to be in), the static colon, the TZ label, WiFi signal bars, the centered greeting, and AM/PM with the current seconds. The whole frame is then pushed to the SSD1306 over I²C in a single transaction, so there's never any tearing.
No FreeRTOS gymnastics, no extra cores — just a tight, single-threaded render loop that's plenty fast for a 30+ FPS animation on the ESP32-S3 MINI's 240 MHz CPU.
The ESP32-S3 MINI is one of the best beginner-friendly Wi-Fi microcontrollers you can buy: tiny (smaller than a postage stamp), USB-C native, dual-core, with built-in Wi-Fi and Bluetooth, and fully supported in the Arduino IDE. Pair it with a crisp 0.96" SSD1306 OLED and you have a platform that can drive dashboards, IoT widgets, weather stations, smart-home displays — anything you can dream up. This flip clock is a great project that teaches you Wi-Fi setup, NTP time sync, POSIX timezone handling, custom-font glyph rendering, frame-rate animation timing, and stateful per-element animation — all in one tidy, single-file sketch.
Because the firmware is open and heavily commented, you can easily:
USE_12_HOUR between true and false for 12- vs 24-hour displayANIM_MS to make flips snappier (200 ms) or more deliberate (500 ms)FreeSansBold24pt7b for another Adafruit GFX font — FreeMonoBold24pt7b gives a typewriter feel, FreeSerifBold24pt7b goes editorialgreetingFor() to match your schedule, or replace the words with ones in your languagewifiBarsFromRssi() — if you're usually close to the router, bump them to −50/−60/−70/−80 for a more optimistic meterBelow is the complete flip-clock-ntp.ino sketch. Copy it into your Arduino IDE, edit the three Wi-Fi / timezone lines at the top, and flash to your ESP32-S3 MINI.
flip-clock-ntp.ino
Wiring is just four pins: VCC, GND, SDA, and SCL. If you can plug in a USB-C cable, you can build this clock.


Grab the ESP32-S3 MINI + 0.96" OLED Flip Clock Kit from our store and have a working, beautifully-typeset animated NTP flip clock on your desk this weekend. Whether you're a hobbyist, a STEM teacher, or just someone who wants a smarter clock with a vintage flair and a modern face, this kit is a fun, educational, and genuinely useful build.
👉 Shop ESP32 DIY Kits at eelectronicparts.com
If you are already registered, please log in.
0 comments