Christmas star lights

This article is a translation of the one I wrote on the Téléfab website. This project was built in the Téléfab.

Christmas is coming! It is the perfect time to build yourself christmas star lights as an ornament for your christmas tree. To differentiate this ornament from the ones you can buy, I decided to make big translucent stars with one individually-controllable multicolour LED per branch. Here is a video preview of the result (sorry for the vertical video, but I had to to make the whole tree visible):

The video shows only eleven stars in the tree. The final goal is to have twenty stars but the result is already interesting. Different modes are available: white, changing colors, blinking white, multicolour, twinkle, coloured rotation of the branches of the stars, and red and yellow fire. These are only examples, I did not spend much time yet programming these effects.

Here are some pictures of the stars:

Stars: in the darkStars: in the tree

Stars: on the table


Building an ornament like this for christmas is not very difficult. Just some material, a 3D printer and patience are required. In following sections, I describe how I built the stars, and how I intend to improve it.


Here is what I used to build these stars:

  • transparent 1.5 mm ABS plastic (less than 500g);
  • a Neopixel LED strip from Adafruit of 2m with 120 RGB (multicolour) LEDs that can be individually controlled (white PCB);
  • 5m of 3G0.75mm black cable to build the trunk;
  • 20m of black RJ11 cable to build the branches to the stars;
  • an Arduino Nano board to control the LEDs;
  • a 5V 4A power supply for the Arduino and LEDs;
  • a big capacitor to protect the strip and the Arduino.

Required tools are a 3D printer and a soldering station.

The plastic star

The star is entirely built using a 3D printer. The model was designed using OpenSCAD. It is available on Github, along with STL files for direct printing. The OpenSCAD file is customisable. The number of branches or the size of the star can be modified.

The object to print is made of 3 parts, including 2 identical parts. Here is what it looks like once printed:

Étoiles : pièces à imprimer

The star is made of two halves, held together by a central ring. This allows to assemble the star simply. I did not use glue, although it could be used to make the assembled star more solid. There is a hole between the two bottom branches to let the electrical wire into the star. There is also a tiny hole at the top of the star to insert a small fishline to hang the star to a branch of the christmas tree. The circular part in the middle of the star is the support for the LED strip.

I printed all parts with 100% filling. A different, more transparent, effect is also possible using 0% rendering. You can make different tests to find what you prefer.

To build the whole ornament, 40 half stars and 20 rings have to be printed. It can be quite long depending on the speed of your 3D printer…

The LEDs and wiring

The electronic part of each star is extremely simple as it is just made of a bit of LED strip with 5 LEDs. The size of the star is designed so that LEDs are automatically aligned with the middle of a branch of the star. Here is what the inside of the star looks like:

Étoiles : LEDs

The only thing to do to build the star is to cut the strip and solder it to the RJ11 cable that will serve as a branch to the star. I cut bits of 70cm for each star. RJ11 cable has four conductor: the black wire is the ground, I use the red one for 5V, the green one for “data in” and the yellow one for “data out”. The data wire makes a round trip: it arrives by the green wire, traverses each LED, and comes back by the yellow wire. This is what allows to control each LED independently. Here is the global circuit:

Étoiles : schéma guirlande

The horizontal wires are part of the 3G0.75mm cable and the vertical wires are part of the RJ11 cables. With 20 stars, the cable is 3 meters long, with a 70cm branch with a star every 15cm. It is also possible to add one metre of cable at the beginning to keep the controller away from the stars and make it easier to install the stars in the tree.

The length and section of the cable are important. The longer the cable, the larger the section must be, so as to lower the resistance to keep enough voltage for the furthest star. In the same way, more stars means a higher intensity in the cable. This is why I use thin wires going to each star and a bigger wire to power all stars. I use this online tool (french) to estimate the wire sections.

To soldier the RJ11 cable to the 3G0.75mm cable every 15cm, a small part (2cm) of the cable has to be exposed using a cutter. Then the 5V and ground wires have to be exposed in different places (to avoid short-circuits). The RJ11 wires can then be connected directly to the exposed parts. The third wire (data) has to be cut, then the green RJ11 wire is solder to the part of the data wire near the controller and the yellow RJ11 wire is soldered to the other part. To avoid short-circuits, use heat shrink for isolation. The whole exposed part of the cable can then be isolated with black electric tape to hide the wires.

An important thing to check when wiring the stars, is that the star nearest to the controller must have a protective resistor on data input. These resistors are included on the LED strip every 50cm, so choose a bit of strip starting with this resistor when building the first star.

The controller

The controller is just an Arduino Nano at the end of the big cable (on the “data in” side). It sends commands through the blue (on the schema) wire to the LEDs and can control each LED independently.

The electronic circuit is made of the Arduino Nano, a capacitor (actually two capacitors in parallel) to filter the power supply, and an 1MΩ resistor used as pull-up for a button working with touch. This button is used to switch the current mode. I soldiered the components as a shield for the Arduino Nano. I did not yet make a clean box for the circuit, or decide how the button will be, which explains the wires going nowhere:

Étoiles : circuit de contrôle

The program is built as a library to control the stars (Stars.h and Stars.cpp) and a sketch with different display modes. It is available on Github and uses the Adafruit NeoPixel library (to install on your computer). Current modes are quite simple, I intend to improve them.


Different improvements are possible with this first design:

  • Build a nice box for the controller.
  • Add glue to the stars to make them hold better, or design a more solid binding system.
  • Improve the animations: the Arduino can be used to program very various and nice effects. I have not spent enough time on this part yet.
  • Add sensors to make the stars aware of their environment : react to noise, light, or the date or time by showing different patterns. Everything is possible!
  • Add a LED in the center of the star. I am not sure I want to add a LED in the center as I like the look the stars currently have, but some persons think it would be better.

You are up!

This ornament is not very complex to build. Only some patience is required. If you are not patient enough, you can also build just one star to light up your christmas tree. Even without electronic, the plastic star can be nice in the tree, and you can put anything inside.

If you build derivatives, let me know!