Introduction: DIY LED Advent Calendar

I'll be describing how we made this analog clock that double functions as an advent calendar. There are 24 ws2811 leds around the clock in a circle and each of them light up green to the days before Christmas. On Christmas day, all the lights are lit red. During every other month the lights are a solid blue color. It's driven by an es8266 that can be managed by the Arduino IDE, but a raspberry pi would also work. This can be highly customized and changed to your liking, and it can even run animations outside of the normal solid colors. Keep reading to learn how I made this, or watch the video below!

Supplies

Step 1: Build the Clock

We started by building the clock, which was 5 pieces of red oak 3.5" wide by 18" tall. After gluing them together, we scraped off the excess glue and sanded it down flat. Then we took a jigsaw to make a rough circle, and moved to the belt sander to make the circle more refined. After that, we used a carpenter's square to measure out 15 degree angles from center to draw the lines for where each light should be. We used the drill press to drill the holes about 1.5 inches from the edge of the clock. We finished it with Mahoney's Walnut Oil.

Step 2: Add the Electronic Components and Wire Up the Circuit

We started assembly by pushing the 24 ws2811 leds through the 1/2inch holes we drilled out. Then we drew an outline of the clock component and routed out about 3/8 inch recess so that we could fit it through the back. Once that was done we hot glued the 5V power supply to the back, added a cleat that would hold it to the wall, and soldered the circuit that would power the lights. The circuit is very simple and uses a single pin from the es8266 microcontroller to control the leds, and the 5V power suppy to power them.

Step 3: Install the Code and Enjoy!

Next step is to install the code below. Since we use an ES8266 the Arduino IDE will work fine for this:

https://github.com/tmckay1/advent_calendar

You'll need to change the pin definition that controls the LEDs if you are not using the same pin as us, and add your wifi information (SSID/password). You'll also need to install dependencies like FastLED and NTP Client, and you are using the es8266 board like I did you'll also need to install the board in the Arduino IDE (check resources for more info).

Basically the code gets the current date from NTP Client every 10 seconds once connected to wifi and then calculates how many lights to turn on if it is December. Once it gets that info, it uses the FastLED library to light up the leds on the clock.

After installing the code, plug it in and enjoy :)

Resources

Installing NTP Client Dependency: https://lastminuteengineers.com/esp8266-ntp-server-date-time-tutorial/

Installing FastLED Dependency: https://randomnerdtutorials.com/guide-for-ws2812b-addressable-rgb-led-strip-with-arduino/

Installing the es8266 board on the Arduino IDE: https://randomnerdtutorials.com/how-to-install-esp8266-board-arduino-ide/