Pages: 1 [2]   Go Down
Author Topic: Cheap addressable RGB strip - how to control?  (Read 12373 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 25
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

There are about 100 patterns, according to the prebuilt controller. Capturing the waveforms and playing them back is something we were going to try, but I had to leave town before Ian (from Dangerous Prototypes) came back with his Bus Pirate :-).

Building a completely custom controller and running custom patterns on these LEDs is kinda the point, if I can't do that I might as well use the built-in controller.
Logged

Norfolk UK
Offline Offline
Faraday Member
**
Karma: 70
Posts: 2577
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Any chance of getting some more samples of the controller output please? I know you said that the controller sends a burst of data then goes quiet but are the couple of examples you posted the entire output of one controller program select or just a subset?
EDIT: More questions,
If you listen to the DAT/CLK lines when the unit is doing a chase (assuming the controller does this) is the data continuous/repeated  between controller and first chip and if not what about between nth & nth+1 chips?
« Last Edit: August 12, 2012, 05:43:00 am by Riva » Logged


0
Offline Offline
Newbie
*
Karma: 0
Posts: 25
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

It's a little tricky, my friends with the logic analysers and oscilloscopes are in Amsterdam and I'm now in Las Vegas (and not returning to Amsterdam until at least next year.) I'll check out SYN Shop (the Vegas hackerspace) and see if anyone there can help.

The first dump is the whole output; the second is a subset but it repeats like that the whole way. I know it would help if I could get video of the patterns synced to the logic analyser dumps and I'll try for that.
« Last Edit: August 12, 2012, 05:48:17 pm by ratkins » Logged

Norfolk UK
Offline Offline
Faraday Member
**
Karma: 70
Posts: 2577
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, I was hoping for more examples because I am wondering if it's just plain old serial.
It does not look like one leg is a clock for data on the second leg. Maybe one wire sends the speed and the other the pattern as a 7 or 8 bit RS232 serial with one start & one stop bit?
Logged


0
Offline Offline
Newbie
*
Karma: 0
Posts: 25
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I'd be surprised if that were the case, as upthread you can see the marketing pages which mention I2C and I also opened up the controller and found an I2C chip in there.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Doesn't explain the odd timing/waveforms, however when I was reading the datasheet for the PCA9626 chips they had a "go off and do this" mode for things like blinking/dimming and (perhaps, don't remember offhand) chasing.

Perhaps that's why the controller has a short burst of activity - it may just set the parameters and tell the D7001/D7002 chips to go off and do something. These strips may actually be more intelligent than the long chain of shift registers that the WS2801, LPD8806, and other strips are essentially made up of.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 25
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

That was my thought too. I've had some contact with the LV hackerspace crew and there are people interested in helping, so we'll get to it post-Burning Man :-)
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 25
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

It's now post-Burning Man :-). There were so many people out there this year with LED projects of various compositions, so I've started a forum for LED artists and technologists:

https://groups.google.com/forum/#!forum/led-nerds

Please join if you're interested in this stuff. Discussion of the S301 hacking may indeed continue there, but I'll report back when I've found something concrete.

Cheers, Robert.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Interesting that this thread got revived at some point.

I can tell you guys a bit more about what I found out myself. At one point I pretty much figured out the entire mechanism behind it, it's very unusual (at least to what I'm used to).

Unfortunately this is quite some time ago and I'm unsure if I still have any of my documents to this. In the end it turned out that this strip is useless for anyone who want's to address single LEDs fast.

There is one command that just shifts in a new color from the left but there's no latch, so the shift is done at once. The frequency you can do that with is not satisfying since when you go to the max (which I belive was something like 30 Hz for 5m) you get weird artifacts due to the missing latch. Also you cannot shift any color, but only red, green or blue or any on/off combination of those (yellow, white, etc.).

To get PWM you have to send another command where you make the strip mix all of it's current colors with the neighbouring color to the right or the left. And there's some other stuff, mixing segments of the strip etc.

If anyone is seriously interested, I can look for the documents, I might still have them on another PC.

In general I got to the conclusion that this strip is absolutely useless for anything else than what the controller that comes with it does. So if you just wanna light your room this one might be for you, but if you want to address each LED to display something then you should go for a different strip, which is also what I did.

My strip now serves as a remote controlled ceiling light for a friends living room.



PS:
There's no data/clock line. It's more like two intermixed serial lines with varying bit times within the single bits. And also command and value bits are mixed. It's a huge mess.
« Last Edit: October 03, 2012, 07:50:59 am by Emmeran » Logged

Norfolk UK
Offline Offline
Faraday Member
**
Karma: 70
Posts: 2577
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
There's no data/clock line. It's more like two intermixed serial lines with varying bit times within the single bits. And also command and value bits are mixed. It's a huge mess.
When I suggested serial in an earlier post it did not get a good reception so I abandoned it. Almost feel I should have just pressed on with the thing. <sigh>
Well done by the way.
Logged


0
Offline Offline
Newbie
*
Karma: 0
Posts: 25
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

If anyone is seriously interested, I can look for the documents, I might still have them on another PC.

If you can find them, it'd be great to have the info on line as a matter of record.

It's a bit of an arse that I bought 25m of the damn stuff  smiley-confuse. S'pose we'll find a use for 'em somewhere with the stock controller. Either that or soldering practice.

In the meantime, these bad boys seem to be the best current option.

Cheers, Robert.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Well it's not the standard serial either. And in my opinion the strips are completely useless for anything else than decoration. You could disassemble the controller and try to use it as a remote switch maybe.

In another project I disassembled a cheap remote control for airplanes and found a very similar looking protocol (if you can call it that), so maybe it's some weird china standard that I don't know about.

Here's the old pde file from the software I wrote. Not sure if it's the newest version, but it contains some of the defines and timings.

Most important part is probably this:
Code:
//                      cccccc-ddddddd
//#define RAINBOW+COL 0b111110 011***1 // shifts a pixel for pwm
//#define SWIPE+M1+M2 0b111110 010***1
//#define SWIPE+MYST1 0b110010 010***1
//#define CMD_SETPWM  0b10**100010***0 // pwm speed for fading
//#define CMD_SHIFT   0b1***10 011***1 // shifts a pixel into the register
//#define SWIPE+MYST2 0b011110 010***1
//#define CMD_CLS1    0b01**10 0111*00 //?? before foreground paint, set background as well
//#define CMD_BG      0b01**10 0110*00 // paint background
//#define CMD_SWIPE   0b010010 010***1 //?? responsible for program 69
//#define CMD_CLS2    0b001010 0100000 //?? before background paint
//#define CMD_FG      0b00**10 0101*00 // paint foreground
//#define CMD_EMPTY   0b000010 0100001 // shifts pixels, removed bg, but not all of it

It took me quite a long time of fiddling with my oscilloscope, simply trying out all possibilities and combinations and some logical thinking to come up with the stuff. I think I had a better documented file as well, I'll have a deeper look later.

Warning:
some of the information in the document is probably conflicting and outdated.

Full file:
http://pastebin.com/2J8hcfEc
Logged

Pages: 1 [2]   Go Up
Jump to: