An Asterisk Christmas

Nick Tindle
Hello Asterisk.
Published in
5 min readDec 25, 2019

December 24th, 2019

Happy Holidays from the Asterisk team.

This is our first post as part of your Workshop series, a series of blogs, videos, and more about hardware and hardware projects.

Finished Ornament in front of the official Asterisk Christmas tree

For our first project, we will be building our own Christmas tree ornament.

Materials

We will need a few things:

Design

To start making an ornament, we have to make a design. I used Autodesk Inventor for this post but Fusion, SolidWorks, or almost any other 3D design software will work for this project. I’ve added my design to the Asterisk GitHub in case you run into any issues

The tree I chose

Before we can begin modeling, we need to decide what our trees should look like. Find a 2D image of a Christmas tree you like and save it

If you’re a student, you can get Autodesk Inventor Professional for FREE here

  1. Create a new Standard Part Project
  2. Create a 2D Sketch
  3. Import your image
  4. Outline your image using the Line tool
  5. Extrude your tree out into the third dimension
  6. Add holes for the LEDs to go through. I used 6mm
  7. Make any other changes that you’d like to see
  8. Save as an .STL file

Don’t forget to add a hole to the top for a string

You can now print it if you have a 3D printer or send it off to be printed through services like Shapeways

Partway through the painting process

After you get it back would be a great time to paint it whatever colors you like

Prototype

Before we can make our trees shine, we need need to design our circuit. Due to the limited current, we can put through the Huzzah’s GPIO pins, we need to use a transistor to switch the LEDs on and off.

You can learn more about transistors here

A prototype to blink the LED using the battery. The Feather goes on the left with the USB facing left.

After you plug in your Feather, plug the LiPo into it and the circuit should light up. In order to test it, we need to write a quick program.

To do so, we have to connect to the Feather. I used this resource to get my feather up and running, updated and ready to start coding

Note: the baud rate on my Feather was 115200 not 9600

Code to turn all the pins on then off

This program initializes all the pins we could potentially use and flashes them.

Once we have that working, we can expand our breadboard to up to 10 transistors very simply. Just add them to the board the same way as above and run a signal wire to a different pin.

Two transistors for extra blink-age

I ended up using 6 transistors for my tree to achieve just the right level of blinky-blinky.

I realized later that instead of the resistors, I put wires which made all of my LEDs release the magic smoke

To finish out our prototype, we need to test it. Plug an LED from collector to the ground rail for each transistor

Build

Next, we will be assembling our trees. I chose red, green, and blue LEDs because I wanted my tree to be bright and vibrant.

I also tried yellow but it wasn’t bright enough

I laid-out my tree in layers top to bottom because the Feather Huzzah has a limited number of GPIO pins. Doing it in this way allowed me to have more LEDs than making them individually controlled while also still maintaining the level of customization I wanted.

A vertical LED with one leg noticably longer than the other
The longer leg is the anode. The shorter leg is the cathode

I started by putting my LEDs into the holes with the anodes (positive side) on top. I then went later by layer with wire attaching all the anodes and cathodes of each row together.

In this photo, I had already hot glued the LEDs in place but quickly regretted it because I accidentally burned out some of the LEDs, and it was quite difficult to replace them.

Make sure to attach a much longer wire to each row of anodes to power them later.

Finally, you’ll solder all the cathodes for each row together. They will connect to ground like the LED on the breadboard we built.

We will want to test each row of our trees using the same circuit as our prototype before. Just swap the LED for our row and if everything is assembled correctly, it will blink.

Finally, combine the tree with the circuit we designed on the breadboard before to create our ornament. Wire up each of the anodes of the LED sets to the collector pin of a transistor on the board. Attach the shared cathode to the ground rail of your breadboard.

Program

To help us figure out which pin is which, I’ve attached a simple program to the GitHub that will light up the rows one by one while logging to the console which row it is lighting up.

The pin finding script

Using the knowledge gained from the above script, I created a few patterns that my tree can flash

https://gist.github.com/ntindle/613f11d764979ef8b3300b96fc00a089

Finishing up

To finish up, hot glue the LEDs in place and cover any pointy bits with glue as well and attach the LiPo and breadboard to the back of the ornament. I put a layer of double-sided sticky tape on the LiPo to both protect it from the pointy bits and to make sure it’s firmly attached.

Going Further

Add a web interface to your ornament to make the patterns controllable from your phone

Swap your LEDs for addressable RGB LEDs

Make it permanent

Suggest a Project

Useful Resources

https://github.com/weareasterisk/christmas-tree

Written by Nicholas Tindle, Hardware Specialist

Special Thanks to Grace Bonney, Sebastian King, Tyler Martinez, Noel Winslow, and Adam Kila for all the help!

Twitter | Facebook | Instagram

--

--