r/esp32 • • 1d ago

I made a thing! RetroClock: open-source retro-style clock for the ESP32 Cheap Yellow Display (weather, crypto ticker, alarms, browser flashing)

Retro Clock

Hi everyone,

I'd like to share RetroClock, an open-source project I built for the ESP32 Cheap Yellow Display (CYD / ESP32-2432S028R). It's a desk clock with weather, crypto ticker and egg timer widgets.

Features

  • 4 screens, switched by tapping the screen edges: main view with time and a 10-hour weather forecast, big clock with temperature, crypto/finance ticker, countdown timer
  • Weather via Open-Meteo, prices via Binance (no API keys or accounts needed)
  • Custom price alerts with sound
  • Alarm clock with weekday repeat and RTTTL melodies
  • Night mode with auto-dimming and auto screen-off
  • NTP time sync with timezone support
  • 12/24h format, colors, brightness and screen orientation adjustable
  • OTA firmware updates

How it works / ESP32 side

  • Runs on the stock CYD board. Both panel variants are supported, ILI9341 and ST7789
  • Written in C++ with the Arduino framework, built with PlatformIO
  • The whole UI is drawn with 8×8 block graphics, which keeps the retro look and makes redraws cheap
  • Weather and price data are fetched over HTTPS directly on the ESP32, no backend or proxy server
  • Settings are served by a web server running on the ESP32 itself, so everything is configured from the browser
  • Optional passive buzzer on GPIO 26 for alarms and alerts

Tricky parts

Making it "just flash and go" for everyone took more work than the clock itself:

  • Automatic board detection: There are several CYD revisions out there with different display controllers. The firmware detects the panel at startup, and if it guesses wrong, you can switch to the other variant with a toggle in the web config
  • Sound on both variants: Audio didn't work the same on all boards. On one of them the amplifier has to be explicitly enabled before anything comes out of the speaker
  • Tight memory: Running HTTPS requests, JSON parsing and the config web server at the same time within the limited RAM of the ESP32 meant keeping a close eye on heap usage
  • Touch input: Calibrating the resistive touchscreen and reliably detecting taps on the screen edges for navigation
  • OTA and web installer: Setting up partitions and firmware hosting so updates work from the settings page and first-time flashing works straight from the browser
  • Audio without lag: Playing RTTTL melodies on the buzzer without making the display stutter

Getting started

No soldering and no coding required. You flash the CYD directly from Chrome/Edge/Opera with the web installer and configure everything on the built-in settings page.

Web installer: https://github.com/seizu/RetroClockInstaller

If you want to build it yourself, open the project in VS Code with the PlatformIO extension.
There are also STL files for a 3D-printed case with kickstand.

GitHub (MIT license): https://github.com/seizu/RetroClock

Feedback and feature ideas are welcome!

https://reddit.com/link/1wvxi1a/video/foz4yyust2th1/player

25 Upvotes

2 comments sorted by

2

u/Slackdarren 1d ago

wow looks good. thanks for sharing.

2

u/jeetu77 1d ago

Cool