I've had 2 strings of GE ColorEffect LED lights for 6 years now - it's time to upgrade their controller!
My strings of GE Color Effects are quite old - purchased in 2010. Evidently in the past couple of years, they have changed the lights to a style which is not hackable. The new lights have 2 wires per bulb/pixel (one in, one out), which provides power. This is similar to how cheap old incandescent or even non-controllable LED strings are wired. Each bulb/pixel is hardcoded with patterns (rather than sending commands down a single-wire-interface real-time) and thus isn't hackable.
So if you can find the old style with 3 wires in and 3 wires out of each bulb/pixel, go for it. There may be a 5 wire version which adds AC passthru for connecting strings end-to-end. But the new ones won't work with this system.
That's too bad. I was really hoping to buy 2 more sets and have lights on the front and back of the house that ran matching custom patterns. Maybe I can find some old ones used somewhere.
This past week, I was able to get the second string of lights terminated into the IP68 connector, and got the Arduino Pro Mini mounted.
The lights are two strings of 50, but when center-fed, act like one long string of 100 lights. This is a HUGE step up from the original controllers, which independently controlled each string of 50 and got out of sync with each other quickly. Now, the entire front of my house will have a unified look, the way it should be.
I've tested the final hardware several times, and it works just like it did in prototyping, so I'm confident it'll work come Christmastime.
Also, today I got the processor mounted into the case. I used a zip tie sticky mount. To encourage better adhesion, I cleaned the inside of the pelican case with an alcohol wipe, then used a small dab of the Loctite Stick 'n' Seal in the middle of the mount's adhesive pad. I hope that holds better than just the mount's adhesive. Time will tell. This allows me to plug in and reprogram the controller if I need to, while holding it securely for everyday use.
It feels really good to get this done. While I've been tinkering with Arduinos for a while, this is the first project I've taken from the bench to everyday (or at least seasonal) use. I think when the Color Effect lights hit the stores this fall, I'll buy two more sets and build a second controller. Then I can have those operating in the back yard in addition to the ones on the front.
I'm really using LocTite Stick 'n' Seal Outdoor Adhesive. I LOVE this adhesive. It's a clear gel that is super versatile. The downside is you really need to clamp the two surfaces together for 24 hours. The upside is that you can glue just about anything to anything else.
This belongs in everyone's toolbox. And no, I'm not paid to say that - it really is that good of an adhesive!
By this evening, the glue holding down the power supply had fully cured, and I decided to remove the glands' rubber O-ring seal, and replace it with more of the adhesive I used for the power supply. In addition to being water tight, now the plastic rings on the inside of the box are thread-locked to the glands, preventing them from working loose over time.
Since that was self-clamping, I then got to work installing the IP67 connector pigtails through the glands to the power supply. I know you're not supposed to place more than 2 wires in a crimp-on ring terminal, but in this case, I did. There are the power and ground wires from each pigtail, plus the power and ground (a twisted pair from a Cat-5e cable) going to the Arduino. This crimped solidly into a 16AWG terminal.
I also wired the mate to the IP67 pigtail to an extension, and then to 1 string of my GE Color Effect Lights. This extension will allow the controller to set on the ground, while the lights are clipped to the gutters about 10 feet off the ground.
I connected the one string to the controller and fired it up! All my prototyping on the bench paid off - it fired up first time! I tried both outputs, and they both work. I still have one more string of lights to wire up the extension and the IP67 connector to.
I also want to find some way to secure the Arduino inside the box. I've contemplated gluing it down, but would like to be able to remove it if necessary. Also, I need easy access to the header pins in case i want to reprogram it with new patterns.
But overall, I'm thrilled with how this has turned out so far!
I finally figured out what parts I need and ordered them. 4-6 weeks later (Or so it felt, really it was just 5-8 days, I didn't pay for expedited shipping) they showed up and I had some time this evening to get to work.
I got the header pins soldered onto the Arduino Pro Mini, programmed it with "Blink" to verify programming worked, then programmed it with my Christmas light sketch. It's pretty good the way it is, but if I want to make changes later on, I can take my laptop outside, open the lid on the case, and reprogram it.
I also got the Pelican case drilled out, the three cable glands installed, and the power supply glued to the bottom of the case. I weighted it down with a tape measure and BAW (big ass wrench) while the glue cures.
The cable glands are (L-R): input power (120VAC 60Hz in my locale), light string 1, light string 2. By center-feeding the lights, I get better power distribution, and the sketch is designed such that the two strings of 50 lights will behave as if it's one string of 100 lights.
Step 1: Knowing that the lights are a 3-wire setup, I assumed (key word) they would be WS2811 based for LED control. Great! I know how to program those, this should be easy, right? Not so fast...
The GE ColorEffects are NOT WS2811 based. The use a proprietary protocol which, unlike WS2811, allows the controller to change 1 pixel by sending only that pixel's new data. WS2811 would have to update the entire string to change 1 pixel.
It was easy enough to figure out that the pinout of the GEColorEffects is:
Luckily, the GE ColorEffect protocol has been reverse-engineered by others - a quick search revealed several Github repositories where people already had Arduino code for controlling the lights. I found one repository that was useful (i.e. simple enough for a non-professional programmer like myself to understand), and started using it. Only problem - it was written for an Arduino Mega, and I'm trying to run it on an Uno (ATMega328), with the goal of eventually going to a Pro Mini (also an ATMega328), and used WAY more RAM than then 328 has on it. So I had to start stripping out and optimizing the code to get to just the bit-banging part and then build my patterns and code around that.
I got this part working, and am writing my patterns in the evenings now as I have time. Next steps will be to finalize the patterns, get 2 strings working off 1 controller so they appear as 1 long string, and then consider weatherproof packaging for the new controller and power supply.