A collection of 3D-printed digital clock designs powered by ESPHome and Home Assistant. This project includes both modular and monolithic clock designs that you can build according to your needs.
📦 GitHub Repository: kylemath/digitalclock 🖨️ Printables: ESP32 Seven Segment Digital Clock 🎨 Thingiverse: ESP Digital Clock Collection 📺 Video Tutorial Series: Four-Part Complete Build Guide
- 📺 Full Tutorial (15min)
- 🎬 [Quick Guide (Coming Soon)]
- Part 3: Final Assembly
- Part 4: Firmware & Configuration
This project provides multiple ways to build your own digital clock:
- Modular Single Digit Design
- 6-Digit Monolithic Clock
- 4-Digit Monolithic Clock
Individual digit modules that can be connected together to create custom configurations.
Features:
- Stackable design
- Customizable arrangements
- Easy maintenance
- Individual digit control
Perfect for displaying hours, minutes, and seconds (HH:MM:SS).
Features:
- All-in-one design
- Ideal for wall mounting
- Complete time display
Available in two versions:
- Original compact design
- New version with integrated back lid (_wLid)
Features:
- Compact size
- Perfect for desks or wall mounting
- Hour and minute display
- New _wLid version includes:
- Clean back design with integrated lid
- Hidden wire management
- Keyhole mounting slots for easy wall hanging
- No visible screws from the front
- Same firmware compatibility as original version
- Improved thermal management
- More robust construction
A collection of modern, customizable LED digital clock designs that integrate with Home Assistant through ESPHome. Choose between modular single digits that can be arranged however you like, or complete 4-digit and 6-digit monolithic designs.
All print files have an accompanying openSCAD .scad file which can be edited, rendered, and saved as a new .stl as you please. Super hint: Ask chatgpt for help with this. https://openscad.org/
I got inspired after printing and building this great clock: https://www.printables.com/model/478390-ws2812b-digital-pixel-clock-esp8266-esphome-based. I wanted to make something more compact that also used strips of LEDs with minimizal soldering so used Cursor and OpenSCAD to create my own design. I tried to make it as modular as possible so that it would be easy to print and assemble.
I don't think that I saw the following design before this development, but the similarities are enough to add it as a remix. I like the great design: https://www.thingiverse.com/thing:5170654
-
Modular Single Digit Design
- Stack and arrange digits as needed
- Easy maintenance and replacement
- Perfect for custom configurations
- Individual digit control
-
6-Digit Monolithic Clock (HH:MM:SS)
- All-in-one design
- Perfect for wall mounting
- Complete time display with seconds
-
4-Digit Monolithic Clock (HH:MM)
- Compact design
- Perfect for desks
- Clean hour and minute display
- ESP8266 NodeMCU or ESP32 Wemos D1 Mini
- WS2812B LED strips
- 5V Power Supply (2A minimum)
- Micro USB cable
- Dupont wires
- 220 Ohm Resistor
- Optional: Power jack connector
- Main body: PLA or PETG
- Diffusers: Clear/translucent filament
- Pause Print after diffuser layers.
- No supports needed for most parts
- 0.2mm layer height recommended
- 20% infill for main bodies
- 100% infill for diffusers
If you're already using Home Assistant:
- Open Home Assistant
- Go to Settings → Add-ons → Add-on Store
- Search for "ESPHome"
- Click "Install"
- Start the ESPHome add-on
- Open the ESPHome dashboard
If you prefer using ESPHome directly:
open terminal:
pip install esphome
then to open the dashboard: `esphome dashboard
- Connect your ESP board to your computer via USB
- In the firmware files, Download the appropriate YAML configuration or download the github repo, they are all called leg-digit.yaml,
2.5: You must create your own file secrets.yaml with the following
`#ESPHome wifi_ssid: "networkName"
wifi_password: "password"
ota_password: "password"
api_encryption_key: "long_jumble_of_random_characters_you_create_once"`
ota_password is just a new key that you create that will be needed to be able to update the clock device wirelessly over the air afterwards. api_encryption_key Is a unique BASE64 key which can be generated here: https://esphome.io/components/api.html#configuration-variables
Also in addition to secrets, edit these values in your main YAML file before installing: wifi:
ssid: "Your_WiFi_Name" password: "Your_WiFi_Password"
- Open Esphome dashboard with the yaml loaded for the print you want:
esphome dashboard firmwareV5_SixDigitMonolith
- Click the link or go to http://0.0.0.0:6052 in browser
- Click three dots in dashboard under name of firmware > Install
- plug d1 mini usb port into computer:
- Click Plug into this computer > Download Project > Agree to allow .bin file in browser download if needed > Open EspHome Web
- Connect in the new window > Find your device serialPort
- Click "Install"
- Chose File - Select the .bin file in downloads folder
- Click Install and it should work, you may need to reset or unplug and plug the esp32 or try a few times
- plug d1 mini into any power source and observe blue light flash
- Click Wirelessly
- Install should start watch log for errors and try again if needed
Navigate to your config directory
cd path/to/config
Compile and upload
esphome --dashboard run ./firmwareV5_Publish6Digit/led-digit.yaml --device OTA
- Full documentation and code: https://github.com/kylemath/digitalclock
- Detailed build instructions included in the GitHub repository
- Basic soldering skills required
- Requires Home Assistant setup
- ESPHome knowledge helpful but not required
- Print time varies by model (2-8 hours depending on version)
- Ask chatgpt for help with any of these.
Happy printing! If you make one, please share your results!
- ESP8266 NodeMCU or ESP32
- WS2812B LED strips
- 5V Power Supply (2A minimum)
- Micro USB cable
- Dupont wires
- Optional: Power jack connector
- PLA/PETG filament (recommended)
- Clear/translucent filament for diffusers
- Soldering iron and solder
- Wire strippers
- Small screwdriver set
- Hot glue gun
- Print required components
- Digit housing
- Diffuser
- Back cover
- Cut WS2812B strip to size
- Solder connections
- Install LEDs
- Attach diffuser
- Connect modules
- Print main housing
- Print diffusers
- Cut LED strips to size
- Wire all segments
- Install ESP board
- Attach back cover
- Print main housing
- Print back lid
- Cut LED strips to size (same as original version)
- Wire all segments
- Install ESP board in the dedicated housing space
- Route power cable through the side cutout
- Attach lid using four M3 screws
- Can be wall-mounted using the integrated keyhole slots
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License.
- Thanks to the ESPHome team
- Home Assistant community
- All contributors and testers
If you need help, please:
- Check existing issues
- Create a new issue
- Join our discussion forum [link]