Introduction: LED Christmas Tree With Video Projector (Rasp Pi)
Looking at what some people put together for “over the top” outdoor Christmas LED shows, I wanted to see what was possible bringing that same level of system together for an inside the house Christmas tree. In prior Instructables I’ve created homebrew SW and setups to drive RGB LED pixels, but for this year I wanted to switch to what technology the outdoor Christmas community was using and apply it to the inside of the house. This is also good because it’s a much cheaper setup than an equally impressive outdoor setup for an entire house might be.
I’m a fan of the Instructables website, and have posted some other LED projects here, so I wanted to share an overview of the steps taken to produce the tree you see in the video. This Instructable covers many disciplines and technology which each could be their own instructable. Links are included below to jump to the resources I used to learn about these technologies. Also don't miss the attached YouTube video of the tree in action.
Also I’ve entered this Instructable into some of the current contests, so if you like what you see, a vote would be appreciated!
Step 1: Materials
I've included links where applicable to the specific components I used in my setup
- Power Supply– Either 5v or 12v, depending on the type of voltage required by the WS2811 LEDs. Also make sure it’s current (Amps) rating is sized properly for the number of LEDs you plan to drive.
- Raspberry Pi – To run the controller software for the show (Falcon Pi Player) USB Drive – Used by Falcon Pi Player to store video, songs, sequences.
- Wireless Router – To connect in to access the Pi and upload new files as well as the pixel controller. This will be a standalone network for the tree so any cheap router should work.
- Pixel Controller(SanDevices e682, or other) – This will be what takes in the commands from the Pi (using the E1.31 standard) and directly controls your WS2811 strands
- WS2811 RGB LED Lights– I used 400 of the 5v WS2811 bullet style ones.
- LED Wire and 2 strand wire – To wire up the LEDs as well as power injection
- JST Hookups – 2 and 3 pin connectors to connect up the lights and power injection
- Projector – I believe anything around the $100 range on Amazon will do here since you aren’t watching movies.
- Cardboard Boxes
- Wrapping Paper
- Video Editor with Zoom and Masking - Sony Vegas
Step 2: Computing and Power Setup
You’ll need some physical setup to house the main components of your setup, and ideally out of sight behind the tree as best as possible. The setup’s components are a router, Pi, Pixel Controller, and Power Supply.
- Connects to the Pixel Controller to provide power
- Supplies in-line power injection to the WS2811 strips (which you’ll need for any pixel runs > 50 pixels from the Pixel Controller)
- Make sure the power supply is enclosed well to avoid any chance of anyone making contact with the supply.
- Plugs into a power strip ·
- Didn't bother to put it in an enclosure
- Has a wired Ethernet connection to the Pi and another wired Ethernet connection to the Pixel Controller·
- Make sure to remember that the Router, Pi, Pixel Controller should all be at IP addresses capable of talking to each other. In my case they were all on 192.168.1.xxx.
- Router 192.168.1.1
- Pi 192.168.1.197
- Pixel Controller 192.168.1.206
- Runs Falcon Pi Player, which is the standard for playing sequences on a Pi. My experience was a very easy setup following the instructions on the website.
- In my case I choose a SanDevices e682 (but probably could have used the cheaper e6804). The SanDevices setup and usage was easy to understand following the instructions provided on the SanDevices website (as well as resources on the Xlights website).
Step 3: WS2811 LEDs
For my size tree 400 lights is pushing the maximum of what the tree can hold and still look nice (and not a bunch of wires and bulbs around). Additionally around 400 lights is where you can start displaying basic images on the tree via the LEDs.
I’d recommend if possible to purchase your WS2811 with green or black connection wire rather than the standard White/Red/Blue connections which would stand out. Additionally I took electrical tape and wrapped the clear plastic bullet portion of each LED to make the lights not stand out as much, similar to standard incandescent or LED lighting where the housing is deep green colored.
Power injection will be required, so keep that factored in as well to the amount of lights you plan to use as well as how many are in each strand from your pixel controller. In my case I used 2 strands of 150 LEDs, and one strand of 50 LEDs to get to 400.
Position on the tree won’t matter as that will be customized in the next step, however you should try to get an even coverage around the tree.
For power injection I soldered on the 2 pin JST hookups to your WS2811 strands. On the power supply end I created 7 foot cable that attach from the power supply to a 2 pin JST connector.
Also I made 7 foot cords (3 wire for WS2811) from the Pixel Controller to the WS2811 strands. In my case 3 of them to connect to the 150 ct LED strand, 150 ct LED strand, and 50 ct LED strand
Step 4: Plotting Position in Xlights
Xlights is the software used by a large portion of the DIY Christmas Lights community to put together sequences/shows. In Xlights there is a custom model feature where the user supplies a spreadsheet with numbers for each of the pixel positions. Google “xlights custom model” for plenty of resources on this.
With 400 pixels though, it can be challenging to create a custom model. What I did was create an xlights sequence where I played ·
- The first 25 lights red ·
- The next 25 lights green ·
- The next 25 lights blue ·
- The next 25 lights purple ·
- The next 25 lights red ·
Then with my cell phone fixed on a table I took cell phone video of the sequence playing, each pixel lit up for approx. 1-2 seconds. I used Sony Vegas to overlay a grid on the video so I could easily get a location for each pixel. With 400 lights however there will be overlap with multiple LEDs occupy the same grid coordinate, which isn’t something Xlights can handle. In my case I built a program in C to read in the coordinate list and deconflict them, however one could also have done this by hand in Excel or Google Docs.
Step 5: Packages (Mini Projector Screens)
Beyond projecting video from the projector on the tree itself, I also wanted a normal viewing screen that can show good quality video on it. Hence the 3 gift packages below the tree do a good job at capturing most of a widescreen video. One interesting note was that I had difficulty finding wrapping paper that was Matte or Flat. Most of what is available is glossy. So after wrapping each present I sprayed them in 5 – 6 coats of an off-white flat paint
Step 6: Projector Setup
In my case my room setup luckily has a light fixture at a perfect location and distance from the tree to allow me to mount the projector sideways and cover from the bottom of the packages to the top of the tree. Setting up the projector in a nominal configuration or horizontal would have required pushing the projector too far back. Care and testing also had to go into getting the projector at the proper angle (not perfectly vertical as you can tell from the pics) to cover the scene.
The HDMI from the Raspberry Pi, which Falcon Pi Player uses for video, is routed through to the projector.
From doing research on several AV forums, mounting projectors in a non-horizontal configuration will impact heat dissipation in some manner as projectors are optimized for heat dissipation in a horizontal configuration. However, since I play the video loop as a show that only has the projector powered on for 15 minutes, I wasn’t overly concerned. Many of the concerns on the AV forums were with users who wanted to have the projector on for long times (> 2 hrs).
I held up my cell phone to be roughly next to my projector lens and aimed it at the same angle as the projector would produce video. I then used an image editor to create a mask of the area that I could use with video editing SW, Sony Vegas. This was generally straightforward, although remembering in the Video Editor that Up = Right on the Tree, Right = Down on the Tree was disorienting at times.
Step 7: Conclusion
The build up to this level of show was over an evolution of 4 years of Christmas Tree shows, but I wanted to apply the same level of WOW factor that others show on their outside Christmas light shows to the tree inside.
If you enjoyed this instructable, give a vote in the contests I've entered it in. Thanks!
Participated in the
Raspberry Pi Contest 2017
Participated in the
LED Contest 2017
2 years ago
This is great, how did you do sound, just through the projector?
Question 3 years ago
A "Bravo" for the amazing work from Italy! As requested by other users, could you kindly share the xlights details and the sequence?
4 years ago
Can you share some more xlights details? Post your sequence details?
4 years ago
amazing work, i did somehting similiar to your first version in 2017... going to use ur first project this year but i would like to know is it possible to create some pixel effects like "X" - "M" - "A" - "S" showing int he middle of the tree as a simple pattern, without having the extra pixelcontroller? isnt the pixel controller just for music and real show effets?
Question 4 years ago
How are you getting the silhouettes (palm tree, character dancing) on the tree? Is that the projector, the pixels, cant wrap my head around that!
5 years ago
I've got the electrical tape part down pat.
5 years ago
Osprey22, i'm without words!!!
I've just finished your old one tree and now you built this new one.
Amazing project!!!!!!! Great , great, great !!!
5 years ago
Amazing work and amazing results! You got my vote. I appreciate the links to the software and the lights, much less expensive than I imagined. Also the mapping software is super cool to know about. Great work!