Skip to content

kevinastock/word-clock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Word Clock

the clock

This project is a 3D-printed, word clock that displays the time using a 9×9 letter grid. The entire front enclosure was designed as a single piece that works as the display, LED adapter, light baffle, and diffuser. A TinyPICO microcontroller drives a matrix of APA102C LEDs and sets the time via NTP and WorldTimeAPI. Configuration is handled via an onboard accelerometer to adjust brightness, manually shift time zone, or reset WiFi credentials. The backplate is secured with M2 heat-set inserts and hex socket screws, provides cable strain relief, and mounts for the electronics.

the clock

Bill of Materials

Electronics

  • Microcontroller: TinyPICO
  • Accelerometer: Adafruit LIS3DH
  • Level Shifter: 74AHCT125
  • LEDs: 16x16 APA102C LED matrix on a flexible pcb.
  • Protoboard: Amazon Link
  • Wires / Connectors: Assorted jumpers or soldered connections. Wago connectors were used in early prototypes but are optional.

Mechanical

Tools & Supplies

  • 3D Printer (capable of two-color printing or manual filament swaps). I used a Ultimaker UM3.
  • Krylon Matte Finish (1311) or similar clear matte spray for surface finishing
  • Soldering iron, solder, and basic electronics tools
  • Heat gun or soldering iron for heat-set inserts

3D Printing

  1. Generate SCAD Files: python3 clock.py will produce OpenSCAD files for both the front and backplate.
  2. Export to STL: Open each .scad file in OpenSCAD and render/export to .stl.
  3. Slicing: The print uses three colors. If using a dual-extruder printer, insert a pause command in your slicer after the first few layers to swap from clear to white manually. If using a printer that can print three colors at once, the python code can be modified to produce three separate color pieces for the front.
  4. Post-Processing: After printing, apply a coat of Krylon Matte Finish (1311) to the clock face. This helps diffuse light more evenly and improves the overall look.

Firmware & Code

This project was built and uploaded using the Arduino IDE. Make sure you have the necessary ESP32 board definitions installed.

Board Manager

You'll need to install esp32 version 2.0.17. The 3.x versions will not work with this code.

Required Libraries

Library Version
Adafruit BusIO 1.16.1
Adafruit LIS3DH 1.3.0
Adafruit Unified Sensor 1.1.14
ArduinoJson 7.0.4
AsyncTCP (by dvarrel) 1.1.4
ESPAsyncTCP (by dvarrel) 1.2.4
ESPAsyncWebServer 3.1.0
FastLED 3.7.8
TinyPICO Helper Library 1.5.0

Electronics & Wiring

I don't have a real guide to wiring, here's a photo of one of the clocks internals:

wiring assembly

License & Acknowledgments

Except as noted here, this project is released under the AGPL-3.0 license.

Exceptions:

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published