Introduction: Hackvent Calendar
Seasons Greetings! It seems a bit early for Christmas but this fun project needs to be done early to be ready for the festive period. This little project is one that I did over a weekend with my kids. I asked my young son what project he wanted to do for this Christmas and he had some pretty wild ideas about an electronic Christmas decorations, mostly involving flashing lights, music and a robotic Santa's sleigh, he had even done a really cool little schematic of what he wanted to build! After a bit of negotiation we decided to leave the robotic Santa's sleigh for next year and go for the advent calendar with flashing lights and music. There's 24 coloured LED's that represent the 24 days of advent and a big white LED in a star to represent Christmas day. When you press the button each day it increments the next coloured LED until you get to Christmas Day. When you press the button on Christmas Day it cascades all the coloured LED's off, makes the big white LED flash and then play Jingle Bells.
Step 1: Get Your Tools and Supplies Ready
The materials we used were:
1. Plywood sheet 600mm x 400mm x 3mm.
2. Arduino Mega 2560 (you need a Mega as you need 26 GPIO Pins).
3. 6 x 5mm Red LED's.
4. 6 x 5mm Green LED's.
5. 6 x 5mm Blue LED's.
6. 6x 5mm Yellow LED's.
7. 1 x 10mm White LED.
8. 25 x 300 ohm resistors.
9. ISD 1760 Sound Playback Module
10. Hookup Wire.
11. 3W 8 Ohm Speaker
12. 50 x 20mm nails (panel pin type).
13. Spring return push button.
14. 1 x 1K okm resistor.
15. 1 x 4.7K ohm resistor.
16. 1 x 1uF Capacitor.
17. Hot Glue.
18. Solder.
The tools we used were:
- Laser Cutter
- Soldering Iron
- Hammer
- Wire Cutters
- Wire Strippers
Step 2: Laser Cutter Design
The next Step is to design how your calendar is to look. As I work as an engineer I have access to various design packages. This is a fairly straightforward 2D design so I used a simple 2D CAD package. As it's quite a simple design I used this as an opportunity to try out a new package (AutoCAD LT 2022) but you could easily use most graphics design or CAD packages to design your layout. The laser cutter at the hackspace I am a member of uses LightBurn software which seems pretty compatible with most file formats. I find using an engineering CAD package quite useful as I can use different layers for different types of laser cuts, for example the outline can be drawn in a layer for a full cut, the text engraving can then be a different layer with a lower intensity. The holes were another layer so the cut sequence could be optimised. The small LED's are 5mm so the holes were 6mm, the large white LED for the star is 10mm so the hole is 11mm.
Step 3: Electrical Design
The Electrical Design is pretty straightforward. It basically comprises of 25 outputs from the Arduino Mega for the LED's, an Input from the Pushbutton and an output to the sound module that connects to the speaker.
The ISD1760 module plays the recording by connecting the play pin to 0V. I achieved this by soldering a wire to the play button and then connecting this to pin 27 on the Arduino Mega.
The wiring diagram shows all the connections.
Step 4: Get Soldering!
The next step is to get everything wired together. My teenager daughter put her soldering skills to the test by spending a Sunday afternoon soldering. Firstly we put nails either side of each LED. Using nails is a very traditional way of doing hobby electronics as is where the term "breadboard" came from. Breadboards were used for laying out components and nails were hammered in and used as terminals.
A 300 ohm resistor was soldered to each LED, we could have used a smaller resistor however we decided to use a larger resistance as there are 25 LEDs plus the speaker and sound module so we wanted to keep the current draw reasonably low.
Each LED was then hot glued into its respective hole and the leads soldered to each nail.
The Arduino Mega, The ISD 1760 Sound Module and Speaker was simply hot glued to the back of the wooden panel.
The Cathode terminal (negative) nails were all linked together and connected to ground. The Anode (positive) terminal of each LED nail were then connected to the Arduino Mega output terminals.
The ISD was then connected. Firstly providing it with 5V and Ground and then connecting the play button to the respective output pin on the Arduino Mega (plays it by making this pin LOW). The Speaker was then connected to The ISD 1760 speaker terminals.
We used some hot glue to hold all the wires in place and keep everything neat.
Step 5: Add the Code and Music and Give It a Try!
The next step is to put the code into the Arduino Mega and then record the music onto the ISD1760.
The code is attached and feel free to optimise it and change the patterns as you wish.
To put the music onto the ISD1760 is very simple, you simply have to power it up and then press the record button while you are playing the music of your choice. Then give it a try by pressing the play button with the speaker attached.