Introduction: WiFi Controlled LED Strip Matrix Display Clock Light
Programmable LED strips, e.g. based on WS2812, are fascinating. Applications are manifold and you rapidly can get impressive results. And somehow building clocks seem to be another domain which I think about a lot. Starting with some experience in building a word clock based on single LEDs, an Arduino and a digital clock module I moved to web based NTP time which is a neat component of a WLAN integrated nodemcu (ESP8622) module. Hence building a led matrix display clock out of an LED strip and a nodemcu controller is all but obvious. And beside displaying a clock one can do all sort of fancy light effects with a multi color pixel matrix of 42 x 7 LED strip pixels. Watch the demo.
Beside an LED strip, a power supply, the node MCU, you need some further supplies like a base plate, a transparent face plate, some screws and distance nuts. Soldering and wood crafting skills (the later of which I do not have ...) are very helpful. A 3D printer is a smart choice to print the stand and the electronics cover.
6 x HSeaMall 180 piece M3 Nylon White Hex Spacer Screw Nut Brass Spacer Distance Screw Nut Assortment Kit for polystyrol plate mounting to wood plate
1 x Polystyrolplate 80x20 cm transparent, white 2,5mm as front plate
1 x Wood shelf 80 x 20 cm, white, 1,6 cm as base plate for LED strip and electronics
20 x Industry 15 mm x 3.9 mm Threaded Self Tapping Screws Drilling Bolts to fix things
1 x NodeMCU Lua Amica Module V2 ESP8266 ESP-12F -Wifi for LED Clock control
1 x Power supply FOR 300 led - 230V to 5V, 8A MSKU item: MeanWell Series LPV-60. [Energy Class A] - to power up to 300 LEDs
1 x LED strip, 5m 300 LED, WS2811 IC Built in 5050SMD, 256 brightness - LED pixel matrix
1 x light sensitive resistor for automatic adjustment of brightness
electronics and electric parts, cables, PCB terminals 2-pole, a suitable circuit board
Step 1: Build the Base Plate and Cover
At first the mountings for the cover plate need to be aligned. The detailed layout of the board is shown in the PDF. A distance screw nut in each corner is positioned in each corner with center 1cm from the outer edge. Two screws are mounted in the middle of the long edge to stabilize the cover plate.
The LED strip is cut into seven lines @42 LED each to build the matrix. The LED lines are fixed to the board symmetrically as shown in the board layout PDF. IMPORTANT: the direction of the data flow of the lines is from left to right for the upper line, right to left for the next line, left to right again for the next line and so on for all seven lines.
The data line and power lines (GND, +5V) are connected (soldered) for each line from upper to the lower line. So line one and two are connected on the right side, two and three on the left side, three and four on the right side again and so on. This strategy keeps the soldered lines short.
The power lines to the power supply are soldered in the middle of the line to avoid having a too long length for the power supply to the last LED.
A 3mm hole for the light sensitive resitor in the left upper part of the board (will be the bottom of the lamp) supports the resistor pointing outward (to the back of the lamp not to get too much light from the LED matrix). The resistor points outwards, connector lines are jointly directed through another drilled hole to the back of the lamp.
The cover plate received drill holes at the symmetric positions to the mount holes in the base board. The screws with plastic distance rings fix the cover plate to the base board.
For a stand I printed two white pieces that need to be fixed by M4x20mm screws to enable a stable stand.
Step 2: Power Supply and Electronics
Now I need some power and some controller for the LED strip matrix. At first the controller nodeMCU. A very simple circuitboard allows to mount the nodemcu detachable, nothing more annoying than to de-solder a wrecked electronic device with a lot of soldered pins. The connections are described below:
NodeMCU <--> Connection (
A0 <--> light resistor pin 1
3,3V <--> light resistor pin 2
D2 <--> DIn of LED strip
Vin <--> 5V of power supply
GND <--> GND of power supply
The power supply is mounted on the back of the base board. I decided to fix the relatively large supply along the long edge direction with the 5V/GND connection at the bottom where the connectors from the front come through the drilled whole. The mounting holes of the power supply are used jointly with the 3D printed electronics and power connector covers.The design was done on the fly - in retrospect I would combine all into one cover beside the power supply - well, this is what prototypes are for...
The 3D parts have been created with tinkercad (which is just great for quick designs) and printed/sliced with Cura.
Link to the tinkercad project: Tinkercad LED strip matrix components
Step 3: Software
The advantage of a nodemcu is definitely that there is no digital clock module required, neither do you need a separate control interface as one can use the web server for controlling the nodemcu.
The number of effects is unlimited as the matrix can be used as messaging board, lamp, Tetris like gamestation, snowing light, ...
Fortunately programming the nodeMCU is very, very close to programming arduinos. The Arduino IDE can be used. There are tons of good descriptions how you can get the Arduino IDE installed and working with the nodeMCU ESP8622. And you get them on instructables too - Quick Start to Nodemcu (ESP8266) on Arduino IDE by Magesh Jayakumar
A couple of libraries need to be installed and the software is still work in progress. Clock display, scrolling text and some effects are included.
The clock and effects can be controlled via a web page. This is still very basic and I need to pick up how the web page can be upgraded to a really nice user interface with all sorts of neat functions.
Lot more to be done.
2 years ago
Hi, I really liked your project and I want to make it for myself. but I ran into the problem that the clock is not displayed correctly, because I have a different pin Din location, on my matrix Din is located at the bottom in the left corner. What do I need to change in the program code so that the clock is displayed correctly
2 years ago
Fun clock design :)
Reply 2 years ago
Hi, thanks for the feedback :)