How It Works
The three small trees that stand next to the "mega tree" use simple strings of lights called Dumb RGB. These strings can be seven different colors, but all of the bulbs change to the same color. These strings have four wires. By applying 12V power to the common wire, then selectively applying ground to the three remaining wires (RGB), the entire string lights up with different colors. Thus the light changing capability is analog, not digital. Selectively applying ground and power to the string is done through relays which is controlled by the Arduino. Relays are needed because the Arduino can only output 5V on its output pins, while the strings require 12V with higher amps. The Arduino also has a network board attached so that it can receive DMX commands over Ethernet. This is fully explained elsewhere in this website.
How To Build It
I bought three cheap artificial trees meant for indoor use. I wrapped two strings of 50-bulb Dumb RGB lights on each tree, allowing the strings to overlap each other. That way, the tree appears animated even though there are only two strings on each. To keep the strings in-place during high wind, I bent the tree branch tips over the string wires, trapping them in-place.
The tree stands were flimsy and fall apart from being outside in the wind, so I used industrial glue to permanently assemble and the stands. The tree branches also attach poorly to the pole, so I dipped each branch end in Plasti Dip before inserting them into the pole. Since the tree top attaches to the top of the tree pole and wobbled in the wind, I used c-clamps to attach a short piece of rebar between the tree top and pole.
Lastly, I bent rebar in the shape of a long "U" to be used for staking down the stand in the ground (three stakes per tree stand). I found this wasn't enough to hold the tree during high wind, so I also tied three nylon strings from the tree poles to wooden stakes in the ground. Between the rebar "U" stakes and the nylon string & wooden stakes, the trees (mostly) stay put during bad weather.
The end of each string terminates to relays inside a waterproof, outdoor Dri Box. There are three relays per string to apply ground to the RGB wires on each string. With three trees, there are 18 relays total. The relays are turned on and off by data pins on an Arduino.