I chose an ESP8266 to drive the matrix. With the ESP8266’s native wifi, I would be able to get the time from NTP, so it would always have perfect time including automatically adjusting for daylight savings.
For the display, I used 4 part 8x8 led matrix array, with a built in MAX7219 controller chain. These can easily be found on ebay or amazon. Since I was running the led matrix off of USB bus voltage (5V) I used an SN74AHCT125N as a level shifter to the ESP8266’s 3v logic.
I used the excellent U8g2 graphics library to drive the display, and spent ages making custom fonts to fit the time, day of week, month and day of month onto the mere total 256 pixels of the display.
I realized that it would look much cooler to have the LEDs shine through something rather than having the bare LED matrix by itself. This way it’s kind of “impossible” looking, and it looks a lot cleaner than having to look at the LED pixels that are inactive. I considered mylar, but ultimately decided to just use ordinary printer paper. You could also use acrylic plastic, a thin wood veneer, or some kind of cloth for this effect.
I decided it would be kind of annoying if the LEDs were on full brightness at night, so I decided to add a light sensor. The ESP8266 will detect the ambient light level in the room and adjust the LED brightness accordingly, full brightness during daylight and dimming automatically when the lights are turned off at night. Instead of using one of those old fashioned analog cadmium photocells, I splurged and got a new-fangled digital lux sensor. I used a TSL2561 sensor from Adafruit. This way I wouldn’t need to come up with a logarithmic calibration curve nor deal with the ESP8266’s funky analog input support, with just one ADC pin that is only safe at up to like 1.5v. Another, smaller benefit is that if anyone were to eat the clock they would be less poisoned.
For the assembly I decided to get a little fancy and connectorize. I knew that in the enclosure I would need to shove the matrix and the light sensor somewhere away from the controller board and it’s always nice to be able to do this without having to have every party already permanently connected to every other party. Even with the correct tools, crimping the wires can be somewhat time consuming. I didn’t have dupont connector housings so I used some pre-made dupont ribbon jumper wires and replaced one end of them with JST-PH connectors. I superglued the dupont housings together in the correct pin order on the opposite side.
For the enclosure I decided to use super thick 1" corrugated cardboard.
It started like this:
I hacked at it with a box cutter and a pocket knife until it looked like this:
I considered trying to use a laser cutter to make the cuts perfect but felt like the weathered, imperfect look was an interesting contrast against the perfect, futuristic led display.
The cardboard didn’t end up being quite thick enough so I had to add a couple layers of ordinary packing cardboard. Corrugated cardboard, by the way, is really surprisingly sturdy as long as it hasn’t been bent.
I seated the led matrix into the cardboard. I protected the solder pin lugs with kapton tape to prevent shorts from the controller board that would be placed against it:
I seated the lux sensor into the little extra square hole and the controller assembly against the back of the led matrix:
I used clear gift wrap tape to keep the matrix flush in against the front of the cardboard. I cut the paper to size and attached it to the front of the box with double sided tape.
The finished product. The leds look pretty overexposed in the photos (PWM probably confuses the camera CCD) but are a much more even red color in real life: