It's almost Christmas time and I wanted to create a little decoration to bring everyone into Christmas spirit - obviously It couldn't miss the geek factor, so I made it connect to the Internet.
The Tech inside is a WeMos D1 mini, an esp8266-based microcontroller board, and a ws2812 "neopixel" led strip.
Christmas is all about bright lights and counting down to Christmas Day, so I decided I wanted to make a light-up advent calendar.
I came up with a basic design in Sketch and made sure the holes would line up so that each hole had exactly 2 leds of the strip inside, and three for the last one. Then, I added some space on the bottom for the esp8266 to fit inside.
Then I designed the diffusion lids to go in the holes in SketchUp.
I marked out the holes in my strip of walnut and drilled them out with a forstner bit. Then I 3D-Printed the 24 lids in transparent PETG and hot-glued them to the fronts of the holes. I used a router to cut a notch in the back of the wood and glued the led strip inside. I also routed a small compartment into the bottom for the esp8266 and soldered the connection leads to the board.
The Vinyl circles were cut on a silhouette plotter and designed in its proprietary software.
The software was written in the Arduino IDE. It uses the FastLED library and the brilliantly simple NTPtimeESP library by Andreas Spiess.
It fetches the time and date periodically from an NTP server and then, if it is December, lights up however many LEDs are needed to display the current day in sequence. Sundays are lit in red, and Christmas Eve in purple.
The code can be found on Github.