Mini LED ‘Christmas Tree’

The idea for this project came from a non-traditional illuminated Christmas tree which I made back in 2008 from a dried Olieboom (‘thorn apple’), Datura stramonium, which is an invasive weed which grows in disturbed soil. The distinctive spikey pods serve as translucent shades for the LED lights inside them, and once illuminated, the pods also resemble jelly melons.

Original Olieboom LED tree (2008)

This revisiting of the alternative Christmas tree design is based on the version pictured above, but is far smaller and is constructed from man-made parts. Brass tubing is used for the branches, while the pods are made from 3D printed translucent yellow resin. Also, unlike the original, each of the 16 LED pods can be independently animated with arbitrary pre-programmed light animation sequences. Little creatures made of modelling clay populate the branches.

Mini LED tree (2020)

[TODO: Insert Video Caption: Summary of the design, construction and operation of the mini LED tree]

Summary of the design, construction and operation of the mini LED tree

The brass tubing, ranging from 6 mm is diameter for the trunk, down to 3 mm for the thinnest branches are bent, cut to size and joined using custom 3D printed junctions designed in an online CAD tool, TinkerCAD. Thin wires were threaded up from the electronics in the base, through the tubing and to the LEDs in the pods.

The electronics consist of a 9V battery with a 5V regular powering an Adafruit Trinket M0 microcontroller board connected to a PCA9685 LED controller IC, which drives the 16 LEDs with variable brightness using pulse width modulation (PWM). The PCB was designed using an online PCB layout tool, EasyEDA. The Trinket M0 can be easily programmed using CircuitPython, which is based on the popular Python programming language. Various off-the-shelf libraries are available for the Trinket, including one to make interfacing to the LED controller chip (via the I2C protocol) a doddle.

A small push button is included in the base to allow the LED animation mode to be selected during operation. Three types of lighting programs were implemented: constant brightness, candle simulation, and ‘ball of light’. The candle simulation mode is based on measurements obtained by analysing the illumination produced by a real candle over time (using a fixed, manual exposure video). The ‘ball of light’ mode was created using custom scripts within the Unity 3D computer graphics engine. In the virtual 3D scene, the position and size of virtual balls of light are animated and the pods through which they pass are lit up accordingly. The animation sequences are saved to file and loaded onto the Trinket. Since less than 40KB of storage is available for the user program and data on the Trinket device, raw binary files had to be used to store the animation sequences, rather than ASCII text files.

The branches of the tree were deliberately made organic looking by making them variable in length and slightly bent. Therefore, in order to obtain the correct spatial arrangement of pods in the Unity animation, the assembled tree was reconstructed using a photogrammetry tool AliceVision.

The creatures (insects and reptiles) were sculpted using oven-baked modelling clay and painted with acrylic (some with glow-in-the-dark paint and where appropriate, coated with a clear glossy varnish). The ceramic pot used as a base was painted with a distressed copper effect and small pebbles were glued to the top of the base.

Special thanks to Maggie Kosek for sculpting and painting the creatures and pods and for helping out throughout the project. The music in the video was created by Heather Malleson.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s