Bottle Cap Clock
I have a strange habit of saving PET bottle caps, and decided to make a clock out of it like the ones that are used on scoreboards - big fat pixels. The first version was made using RGB strips and a bunch of hotglue wired into spacers. After a while I decided to make something brighter and more clean - so I designed PCBs and improved the model.

A four-digit display made from illuminated bottle caps.
A Wi-Fi clock made from 65 bottle caps, 195 addressable LEDs and a custom ESP32-S3 board.
Each PET cap covers three WS2812 LEDs. Sixty caps make four 5 × 3 digits; five more make the colon. The cap shape diffuses the cap edge shadows, the custom holders and board keep the grid aligned and prevent light bleeds.

The cap holders and LED board that make up the display.
ESPHome runs on a custom ESP32-S3 board (one for driving WS2812 pixels), keeps time with SNTP, and is configurable with Home Assistant (via ESPHome). There are several color and animation modes. An optional ambient-light sensor adjusts brightness to the room level. Thanks to ESPHome/Improve, the setup is easy after the first flash, without editing YAML - it just appears in your "New Devices" dashboard.
The tricky part was making it dim enough for a dark room. ESPHome's normal brightness scaling can erase very low LED values, so the dimming uses a mapped display effect. At the lowest levels, the clock lights only one or two of the LEDs per cap.
- Full code, docs and setup instructions
- 3D printable models (public OnShape doc) ready to export/slice
- ESPHome configuration