Addressable RGB LED Strip

RGB LED Strip

Recently I’ve been playing with something I think is somewhat of a holy grail in LED enthusiast circles: the addressable RGB LED strip.

Non-addressable RGB strip (meaning you can turn the whole strip a particular color but not any individual LED) is becoming easier to find in the market but a RGB strip where you can actually control each LED individually has only been the subject of geek fantasy. Every time I’ve done something public with common RGB strip, someone has come up to me and said “oh wow man, can you control those LED’s individually?”. No, sorry, with those strips you couldn’t — but with this strip you can!

So where do these fabled strips come from? Well, the one I’ve been playing with fell into my lap a few months ago — tossed there by my friend Dan who got it from a shady-looking factory in China while there evaluating LED video wall products. I’ve asked him for the name of the factory but he’s so far been drawing a blank.

At the time he assumed (as did I when I first saw it) that the strip consisted nothing more of RGB LED’s hooked up to standard standard shift registers, similar to how I built my single-color LED serial strip. This turns out not to be the case and that the chips driving the LED’s are actually packed with a bit of smarts to them.

This became evident when I built a simple test program which treated the strip like a common shift register but failed in confounding ways to work. Eventually I had to cut away some of the silicone liner on the strip to get a closer look at the driver chip. The chip turned out to be a “HL1606″, nothing I’d ever heard of. A few hours of online research left me with a datasheet for the HL1606 written only in Chinese and a single posting by one “John Cohn” from September 2007 looking for anybody who had more information on how to drive the chip. The posting didn’t get any useful replies.

I tried running the datasheet through Google translate which was somewhat successful but left me scratching my head over the precise way to interpret sentences like this:

When a data bit for the Road 10 (D2D1 or D4D3 or D6D5) and latches valid, the corresponding LED driver output state for Prescribed changes gradually, when the change to keep the brightest light of the state, until the new data is entered and effective latch.

It *sounds* like english, right? Yeah, anyways, trying to decipher the datasheet lasted for only so long before I got pulled away to more important distractions and the RGB strip sat on my bench untouched for months.

Then Maker Faire happened and, by some freak chance, while I was chatting to people about the MonkeyLectric bike wheels, a guy came by wearing a most eye-catching headband. The headband was constructed out flexible circuit board material on which RGB LEDs were mounted and were clearly being controlled individually. Obviously, this was a guy I had to talk to. After a short conversation I learned that he had found the strip from an electronics booth in China, the strip was built using HL1606 driver chips, and he too had had a heck of a time (and only partial success) figuring out how to drive them. We exchanged contact info and a pledge to get in touch after the faire to share data and geek out on the strips. It wasn’t until after I had gotten home did I piece it together that this guy was none other than the “John Cohn” whose lonely, unanswered call for help in 2007 was the only evidence I was able to find that anybody else in the world was playing with these strips.

Maker Faire rocks.

Anyways, shortly after we got to our respective homes, John sent me a copy of the datasheet in Chinese which I had already found earlier as well as the PIC code for his headband. The PIC code was the missing key to the puzzle and by studying it in conjunction with the machine-translated datasheet I was finally able to get my head wrapped around how the chip worked.

Below is a short video showing off a basic rainbow-scroll (the “hello world” of addressable RGB strip effects):

So that nobody has to ever go through what John and I went through to get these strips to work, I wrote an Arduino library for the HL1606 and open sourced it. It’s still a bit unpolished and under-documented but it’s feature-complete in the sense that it can control all of the features of the HL1606.

Oh, and before anybody asks, I don’t yet have a solid source for more of the strips but I’ve found them being sold online. So far I’ve only been able to find them being bundled with a controller and I’d like to find a source selling them without one (hopefully at a reduced price). To hunt them down on your own, the keywords to look for are HL1606 and 5-volt operation. The 5-volt operation is actually the key distinguisher, as all of the non-addressable RGB strips run on 12V or higher.

Update 6/18/09: I see John’s posted an Instructable on his Too-cool Rainbow Headband. In it he documents more what you need to do to drive the chip and even suggests some possible suppliers for the strips. Check it out (and if you like it, give him a vote for the ‘Get the LED Out’ contest he’s entered it into :)

22 Responses to “Addressable RGB LED Strip”

  1. Joe says:

    Where oh where can I buy this?

  2. GoJimi says:

    This Looks Sweet! I am doing some research trying to find more info on these strips…. it appears that the Chinese manufacturer is Top Semiconductor Lighting Co., Ltd. and the model number is TP-YWSMD5050. Hopefully we can track these down stateside!

  3. GoJimi says:

    Also check the LED Light Ribbon (RRFT1000-40RGB) made by http://www.rightleds.com/?action=text|rightleds|1515|en|20589|2 this is the non waterproof one which may be cheaper… now if we can find a way to purchase these in smaller quantities we would be set!

  4. GoJimi says:

    OK… found somebody who sells what appears to be these strips or a variation thereof… http://www.ledlight.com/electronic-flexible-water-proof-led-light.aspx not sure of length, number of rgb leds per meter, or if these have the hl1606. They are closed for today so I guess those questions will have to wait till tomorrow!

  5. BenD says:

    I’m also very interested in doing something with these. Perhaps if there was enough interest, a group buy could be organised?

  6. Richard says:

    How long does it take to refresh the entire string of it – could you get 24-30 updates a second into a lenght that had a couple of hundred LEDs on it?

  7. dewski says:

    this is awesome, i’ve always been interested in LED lighting and this fits the bill for a ton of ideas I have, keep up the awesome work!

  8. erik says:

    I live in Shenzhen (was just at the big electronics market yesterday) and could visit this factory if there was enough interest in getting a small order of these strips.

    contact me at erikseverin at yahoo com

    If there is contact info for John Cohn, I could ask him where, specifically, he bought the strips. Was it in HuaQianBei Electronics Market in Shenzhen? They have TONS of parts and especially LED bits to pick through. I could return there and see if they have more.

    Cheers.

  9. jo says:

    hi all,
    these strips are great!!
    I’m playing around with the Arduino and some TLC5940 16ch 12bit PWM drivers. They work great, but a soldered solution with all the leds and ICs is great!
    I could just find larger quantities on ebay for around 50$/meter.
    I hope they’ll get more pricy soon :)

    Cheers,
    jo

  10. Will says:

    I am also interested in this, any idea on where to find one?

  11. Nick says:

    This is exactly what I need!

    So where can we get this :) .

  12. MarkP says:

    Woah, long link! Try this instead: http://bit.ly/Fu9F9

  13. Cody says:

    http://www.ic2ic.com/search.jsp?sSearchWord=HL1606

    Any help from above ^ with a quick search I did?

  14. BenD says:

    I got a quote from SHENZHEN COOLIGHT OPT-ELE CO.,LTD on this product:

    CL-DGTF51920-32T3 (5V digital RGB flexible LED ribbon(32LED/meter))

    they said:

    >Our minimum order quantity is 5 Meters,the unit Meter is $25.
    >Any problem , pls send me email.

  15. Mike Broom says:

    There is a UK one, it is not flexible (yet) which is bit addressible using shift registers, which can be found here:http://www.logic-magic.co.uk/products.htm

    These were designed as a spin off from the original single colour units which a guy called Mark Hester prom PDD Design Cnosultants used to produce a animated mock up of a central heating boiler. He also used the arduino dev board to control the strip.
    Each colour has a single OE line, so can be dimmed to produce multiple colours, besides the standard mixed 7.

    There is a demo video of this on the fun stuff page here:
    http://www.logic-magic.co.uk/files/muticolour_knightrider.mov

  16. JackC says:

    Would you mind posting the code for the hello world example above? Just reading the library it’s difficult to tell a few things about using it, e.g. if latch needs to be called on each write, that kind of thing.

  17. xander says:

    Sure, here’s the Arduino sketch for the “hello world” rainbow pattern shown above.

    http://www.synopticlabs.com/blog/wp-content/uploads/2009/06/striplight_hl1606_gradient.tgz

  18. Eric says:

    Cool! These sorts of things have actually been out for several years. The Color Kinetics iColorFlex, LEDEffects’ DingDotz, and Triklits. The first two were really display sign pixels, and a string of 50 was $500 plus the astronomical cost of the controllers. But the DingDotz (Now X16Dotz) had a “demo kit” of 10 lights with a preprogrammed controller chip for only $100, and I’ve had this for almost four years now. Been waiting to get a bigger string with full control. A couple of companies have been promising something as an affordable consumer item for a couple of years, but nothing has surfaced. I do see all sorts of stuff from Shenzhen and others on that Alibaba trading site, but don’t know where to find it retail. (The Shenzhen Video Belt is being offered by Wiedamark, but that too is a very expensive non-commercially oriented pixel string).
    What I’m not seeing here, is prices, except for the Ebay site, which is in pounds. Also not sure whether you can make your own programs with this.

  19. johnc says:

    Xander…
    Howdy.. I’ve been experimenting with your arduino hello world rainbow example with a piece of light strip about 10 meters long. It worked initially.. but now I seem to be running into problems. The pattern seems to arbitrarily stop at an intermediate point on the strip.. around 6 meters. The connections at the point that the pattern stops seem to be fine according to a quick continuity check. there are no visible breaks or solder problems with the strip itself, the HL1606, LED or chip resistors, The pattern stoppage does not seem to be affected by moving or flexing the strip.. so I think I’ve convinced myself its not an intermittent connection.. I have some evidence that the point the pattern stops seems to be pattern dependent. The one clue I have is that if I ground the LI pin just past the point where the rainbow pattern starts, I see a single LED version of the rainbow pattern propagate down the remainder of the switch without any PWM dimmed echos. THis is leading me to believe that I have noise or droop on the LI signal.. Do you think there’s a maximum length that you can reliably drive the LI when it’s in it’s ‘flush’ mode… probably the wrong terminology.. but I think you may understand what I mean ? It seems to happen on other similar length strips as well.. Any ideas what may be causing this ? Any ideas what I can do to fix it ?
    Any help appreciated..
    -jc

Leave a Reply