Word Clock based on LED matrix

This is my version of a word clock - it shows the time, mostly as text.
38
184
0
2026
updated October 5, 2022

Description

PDF

The layout of the letters was inspired by https://github.com/brettoliver/wordclock but the underlying code and construction is different.

I have made a few versions of this over the past few years and I though I should release it as I've moved on to other projects.

Previous versions included a real time clock (RTC), but this release has code that produces a web page that allows you to configure various clock parameters, including your wifi details. Once saved it will reboot and show the correct time (hopefully) after synchronising itself with an internet clock.

In previous versions without the web interface I controlled options via a single switch on a printed circuit board that held the wemos D1 mini the RTC and the switch.  In this version it isn't necessary to have the pcb or RTC, but the switch is handy as if held in for a few seconds, it causes the wifi credentials to be reset, which means on the next reboot you can change clock parameters - think factory reset button - this is set as D5 on a wemos D1 mini.


The basis for this clock is an addressable 16 x 16 led matrix, controlled by pin D6 on a Wemos D1 mini.  

 

Bill of materials

  • Wemos D1 Mini
  • 16x16 Addressable led matrix (D6)
  • Switch (D5)
  • 10k pull-up resistor

Optional materials

  • Usb socket if making a plug at the rear

 

Circuit connections

The LED Matrix is supplied 5V and GND from 5V and G on the Wemos D1 Mini

D6 on the Wemos D1 Mini is connected to the Data In of the LED Matrix

D5 is connected to ground via the switch, and is pulled to 3V using the 10k resistor

 

These matrices sometime differ in how they work, so if it shows gibberish you may need to adjust the neomatrix settings eg NEO_MATRIX_ZIGZAG, or the RGB order.

Using a microcontroller it is possible to determine the time, and control which leds light, and thereby make a functional word clock.

The body of the clock is printed in one piece, which is mostly opaque to light.  The trick is to print the masking filament (eg black) for most of the print, then for 4 layers switch to white filament, and then switch back to black filament.

This is easy if you've a multi colour printer, but also possible if you've a single extruder.

The body is printed with the text uppermost.  You will need to add supports.  This is the best way to keep clear/sharp letters (don't use ironing on the upper surface, it just makes it look dull).

The body is printed in black filament up to layer 117
Layers 118,119,120,121 are printed in white filament
All subsequent layers are printed in black filament.

I achieve this in cura using the post processing options, and using the Pause at height script.
I used 2 instances of the script to pause at layers 117 and 121 to allow the filament change.
To help with these changes I used gcode to move the print head 30mm up so I could purge the extruder so the new colour filament was flowing, then the print head was lowered 30mm and the print resumed.

See https://the3dprinterbee.com/cura-pause-at-height-guide/ for more details.

I recommend doing a few tests prior to doing the big print, just to make sure the correct layer settings are applied to save time and filament.

Once printed,  I used hot air on the face of the clock to remove any stringing around the letters, and with heat, a knife, and tweezers corrected any minor defects around the letters.

The other parts are printed in black.

The led matrix can be soldered to the wemos D1 mini, and the reset switch attached too.
The led matrix should fit into the grid that prevents light bleed.
The led matrix can be hot glued into place.

The back of the clock is designed to clip onto the body.  There are various holes for the stand, for wall hanging etc., and there's a hole for the insertion of a usb connector, and also a redundant flexible button strip for pressing the reset button.  You may have to insert a custom hole for a usb lead depending on your mounting position, this could be done in the model, or via a drill after printing.

You will need to do some tweaking to keep the led matrix against the grid.  This can be via tape or glue.  I also used some fire retardant foam inside the enclosure between the matrix and the clipped on back.

There is a slight lip around the text.  This is by design, as optionally you can pour some clear epoxy onto the text, making sure to get rid of any bubbles.  Once set this should create a glass-like face to the clock - it looks good, but it's a one-time-only process so make sure you get rid of all the bubbles, and don't test that it's set with your finger, otherwise you'll have a nice fingerprint on yours (don't ask me how I know).

The code is attached, it should work OK though there is a little cruft in it from previous versions.

 

On first boot there will be no wifi details saved.

In that case it will make a hotspot - connect to the wifi ssid

Clock Settings 192.168.4.1

The password is 

thirdstroke

 

The speaking clock use to say “At the third stroke it will be X, Y precisely”.  If you don't know what a speaking clock is then you're probably younger than me :)

 

Point your browser to 192.168.4.1 and you will see a web interface where you can 

  • Enter your wifi SSID
  • Enter your wifi password
  • Select your timezone
  • Select the colour of the clock text
  • Control whether the seconds are displayed on the clock
  • Control whether the clock dims at night
  • Customise the dimming and rebrightening times (in case it disturbes your sleep)
  • Control whether animations are shown

Press Save and the clock will reboot and use your settings.

 

 

UPDATE

20221005

New code uploaded to fix a bug that prevented wifi credentials being saved, and thus prevented the clock from working.

Also added lots of comments that can be viewed with the serial monitor to help with troubleshooting.

 


 

Tags



Model origin

The author hasn't provided the model origin yet.

License