Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tail of the 48 invisible pixels. New Copper Dipped Addressed Pixels it seems #1312

Closed
jamestutton opened this issue Nov 3, 2020 · 69 comments
Labels

Comments

@jamestutton
Copy link

A very odd issue.

Have some of the "ws2812b" dipped copper wire style LEDs. They have been cut off a larger strip off 100. In total there are 40 pixels on the strip. Original set was 100 LEDs.

Was having issues getting them working with both wled and esphome untill I set the pixel count to a a number greater than there length. Then realised the odd issue. The first pixel appears to be the 49th pixel. Ie the first 48 addresses do nothing.

Even hooked them up to a larger strip of normal 12mm ws2812b 1-150 normal ws2812s. Pixels 150-190 should be these. But no. Have to set the chain as 238.
LEDs 1-150 light normally
151-198 don't exist so nothing happens
199 onwards light this strip first led onwards

So 48 addresses get skipped then these LEDs start again from 199 onwards.

Hopefully this is clear and someone seen this before and has a clue?

Currently these LEDs terminate on last led of the strip so not able to see what happens of add more to end of the chain. But may cut last one off just to see.

@Aircoookie
Copy link
Owner

That is indeed strange and I haven't heard of it before...
Did you try connecting the input of these directly to the ESP? That would help to see if the problem is with the output of the first 150 LEDs or with the input of these 40.

@jamestutton
Copy link
Author

So Plot thinkens. Split the 40 LEDs into 2 chains of 20 as have a theory that the LEDs actually have a hardcoded or at least static addresses. And then put them in a Y config.
Which technically should with my understanding of normal WS2812s cause them to mirror in they were doing normal shifting of data. And Low and behold on direct conection with ESP one chain responds to Addresses 48-67 the other branch 68-87.

So it seems that the LEDs are physically/logically addressed as 48-87. And I expect they actually pass every packet vs shifting the stream so if I connect normal WS2812s down stream of these ! can get individual leds to light twise with one command. A scan for example goes down first fork then falls off end and lights first led of the second fork

ebay link to the item : https://www.ebay.co.uk/itm/10M-WS2812B-sk6812-RGBW-Fairy-String-Light-Copper-Wire-5V-USB-Pixel-timer-remote/324288164000?hash=item4b8114b0a0:g:l1gAAOSw-mNfbGXT

@jamestutton
Copy link
Author

So yes they seem to be a new sort of "addressed" pixel in some way. They respond to the normal WS2812B commands but are transmitting the entire data stream and know which packet is for them!!!

So New Test Setup Will Refer to new leds as "Copper Dipped Pixels==CDP"

ESP  -> JUNCTION  ->  (A) 20 CDP (Addr48-67) -> (C) 50x 12mm WS2812B -> (D) 50x 12mm WS2812B ->END
          ^^^     ->  (B) 20 CDP (Addr68-87) ->END

So borrowing a bit of code from ESPHOME same effect with WLED as well

Data Sent

            it.all() = ESPColor(0, 0, 0);
            it[48] = ESPColor(255, 0, 0);
            it[50] = ESPColor(0, 255, 0);
            it[67] = ESPColor(0, 0, 255);
            
            it[69] = ESPColor(255, 255, 0);
            it[71] = ESPColor(0, 255, 255);
            it[87] = ESPColor(255, 0, 255);

So with the above 6 commands. A total of 12 LEDS are lite at physical postions

A) 
1   = it[48] = ESPColor(255, 0, 0);
3   = it[50] = ESPColor(0, 255, 0);
20  = it[67] = ESPColor(0, 0, 255);

B) 
2   = it[69] = ESPColor(255, 255, 0);
4   = it[71] = ESPColor(0, 255, 255);
20  = it[87] = ESPColor(255, 0, 255);

C) 
48  = it[48] = ESPColor(255, 0, 0);
    
D) 
1   = it[50] = ESPColor(0, 255, 0);
18  = it[67] = ESPColor(0, 0, 255);
20  = it[69] = ESPColor(255, 255, 0);
22  = it[71] = ESPColor(0, 255, 255);
38  = it[87] = ESPColor(255, 0, 255);

Love to know what these are. Only other thing i can tell you all is the pinout is VCC / GND / DATA. So a little different from the normal. Have to believe the addresseses are software programable in some way but are obviously stored in some way so maybe a programming mode of some sort.

Will keep posting any further findings here.

@jamestutton jamestutton changed the title Tail of the 48 invisible pixels Tail of the 48 invisible pixels. New Copper Dipped Addressed Pixels it seems Nov 6, 2020
@scruffynerf
Copy link

scruffynerf commented Nov 17, 2020

Interested in this... Bought a bunch of these strings, and using a Pixelblaze on them, noticed that they like 300ns timing, yet depending on pattern, I have 1-2 pixels (usually #2+3 or #4 alone) at the start that "flicker wildly" with lots of data, while the others all work correctly, in a string of 200. Same model/type, same V,G,D layout. These are a weird beast, and I look forward to more people experimenting and reporting back.

If you are correct that forking the data line doesn't created a mirror, these will be a nifty new way to control LEDs, allowing a forked data line to simplify wiring. (Imagine an infinity polyhedra [cube/whatever] where the data line can just split into multiple paths as needed to easily fill all vertexes, but all pixels remain individually addressable!)

@scruffynerf
Copy link

I can now confirm these do seem to have a "location memory". Cut 10 off the end of a strand of 200, cleaned the wires (flame off the lacquer and sandpaper), wired to a connector and hooked up to my PB, and they insist (and work normally) on being pixels 191-200, despite being the only pixels in the circuit. More testing coming soon.

@scruffynerf
Copy link

https://youtu.be/ge8Swdd9Srw
Seeing is believing. 4 individual strands all with a common data line (so data line splits into 4, but all LEDs remain individually addressable!! Not the usual WS2812, eh?)

@jamestutton
Copy link
Author

Glad I'm not going mad. Tried reaching out to some of sellers and even the ws2812 manufacturers. To see if anyone has a data sheet or any info but so far no luck. I had only brought the sets of 100 so it good to know they must have at least 200 programmable addresses. Wondered if the 200 was 2*100 so repeated. As that's the other thing you can do. Join 2 sets of 100 and they will repeat.

@scruffynerf
Copy link

Good to know, Ben of Pixelblaze wondered about that aspect... So two strings in serial will repeat?

This really is a mystery. Thank you for posting, as I'm sure I'd have been discovering this and totally confused why it wasn't working normally. Your post here put me on track to confirm and see the value of this.

@nlflint
Copy link

nlflint commented Nov 18, 2020

Interesting. The 2811/2812/2812b "protocol" doesn't send an ID in the data, so what the heck? A theory: each chip is sending the full data set of color bits on to the next chip, and only takes its color from the nth color data from the full set. That would be different from 2811/12/12b, in that, they only send bits that overflow to the next chip.

A way to test: Set the LED count to 1. Hook up a scope or logic analyzer to the data line between the last 2 LEDs in strip. What is being sent? 24bits, or nothing?

@scruffynerf
Copy link

scruffynerf commented Nov 18, 2020

@nlflint Given that the single forked data line is transmitting to all 4 strings, I think it's sending all of the data. I can test this (not today), by doing a fork on both ends:

Controller
/\
S1 S2
/\
S3 S4

If that works as expected, they have to be passing the entire dataset.

@jamestutton
Copy link
Author

jamestutton commented Nov 18, 2020 via email

@nlflint
Copy link

nlflint commented Nov 18, 2020

@jamestutton ah, well there you go.

@jamestutton
Copy link
Author

jamestutton commented Nov 18, 2020 via email

@scruffynerf
Copy link

Yeah, these aren't ws2812s... Whatever is encased in epoxy is some new magic chip.

@nlflint
Copy link

nlflint commented Nov 18, 2020

There gotta be a way to easily reprogram them. In the factory, they wouldn't do it individually before assembling the strip. There's no way you could keep track of the order. They have to do it after the strip is assembled. Need that datasheet, it probably explains the protocol for reprogramming.

@jamestutton
Copy link
Author

jamestutton commented Nov 18, 2020 via email

@nlflint
Copy link

nlflint commented Nov 18, 2020

yeah, that's gotta be how it works. It could also be a one-time programming, once it's done, it's final. If they could be reprogrammed, then once you cut them up, and hook them up in a spiderweb-like configuration, each LED could no longer infer its position. There would be ambiguity until they were put back in a straight line.

@simap
Copy link

simap commented Nov 18, 2020

Based on what @scruffynerf was demoing, I think they have a permanent (or semi-permanent) address code burned in to them.

I'm guessing the data line is not regenerated, but connected through as one long bussed data line. That would save manufacturing cost, allowing them to have 3 solid uncut wires bonded to the LED modules, compared to the usual WS2812 which will not work if your data line shorts DIN and DOUT, forcing either non-contiguous wires to be assembled or these cut 4-wire hacks you see in other WS2812-compatible fairy wire:

ws2812 string 4 wire cut

Notice that it looks like that was made with 4 contiguous wires, then every-other middle wire is cut. The red/green color is probably so they don't mix them up during manufacturing, and I bet each color swaps DIN/DOUT order.

Compared to that, these 3-wire bussed-addressable LEDs would be easier to assemble, even with the extra step of programming their addresses somehow after the string was soldered.

@THATDONFC
Copy link
Contributor

So who's going to sacrifice one of their LED's and see what chip is inside?

@jamestutton
Copy link
Author

jamestutton commented Nov 19, 2020 via email

@jamestutton
Copy link
Author

So first attempt at tearing one down.

So for ref Golden Wire is 5V then GND and Data.

Seems the Data line is indeed continuous so no seperate Din/Dout.

Continutiy check also confirms this. All 3 leads are ~8Ohms for ~10cm section with LED in middle.

2020-11-19-091530_1
2020-11-19-091645_1

As such it seems they must be one time programmed at the factory some how.

@simap
Copy link

simap commented Nov 19, 2020

@jamestutton, thanks for the photos! I was dying of curiosity! What did you end up using to get the goop off?

@jamestutton
Copy link
Author

Hot air gun @200C seemed to make it brittle and then while it was warm was able to break it up a bit.

@simap
Copy link

simap commented Nov 20, 2020

I got some, was able to crack the goop after a few tries w/ heat (thanks for the tip!). There's some distortion or residue on the LED package epoxy that made clearer photos challenging. Was mainly trying to find out the method of programming, nothing obvious. Would probably need proper de-cap and a microscope. I do see some pads on the IC that look like they could be unused bond wire spots, opposite the data input bond.

I'm totally speculating here, but it makes me wonder if this IC is floating around in other WS2812 clones on the market that haven't had an address burned in.

DSC04635 (1)

DSC04624

@scruffynerf
Copy link

scruffynerf commented Nov 20, 2020

@simap to clarify, the middle wire is ground, which is the V+ and data sides? Is the bigger side the V+? (Looking at the original photos, looks like it) Which would make the single wire running to the IC on the left of your photos, the data line connection. Which pads are you discussing, the two near the ground wire?

@jamestutton
Copy link
Author

To confi Large one is 5v+ middle is gnd then left is data

@simap
Copy link

simap commented Nov 20, 2020

Gotcha, updated comment for clarity for future readers.

@simap
Copy link

simap commented Nov 20, 2020

@scruffynerf These are the pads I'm talking about.
DSC04635 marked

@thoj
Copy link

thoj commented Dec 17, 2021

Its a pretty good supply and I put a 1000uF cap right before the leds too. Do you use a series resistor on the data output? I might have to try with a diffent level shifter that can supply more current 😓

@todbot
Copy link

todbot commented Dec 17, 2021

Level shifters do not supply current. They just convert a data line from 3.3V to 5V. It would be useful to see a wiring diagram of how you have things hooked up.

@blazoncek
Copy link
Collaborator

Level shifter (fast enough) should solve the issues regarding the noise at 3.3V. What kind were you using?
Some LEDs may be more susceptible to noise (input voltage level on 1st LED) than others.

@blardyblar
Copy link

blardyblar commented Dec 18, 2021 via email

@ChayD
Copy link

ChayD commented Jan 7, 2022

Apropos of these devices, I thought I'd mention that I've recently run across some even more intriguing tiny two wire addressable RGB LEDs (as in ground, and multiplexed power and data). My dad brought a string of them in a "rope light" format, which piqued my interest. As I didn't want to destroy my Dad's lights, I've ordered a set (still en-route from China). From what I can see, based on the pre-programmed patterns they display, they operate in groups of eight repeated along the chain, and appear to be pre-programmed with (I guess), a three bit address with the data and ground lines being common across all devices on the line. Once I receive them, I'll scope the data lines and post some images.

@cpldcpu
Copy link

cpldcpu commented Jan 7, 2022

I've recently run across some even more intriguing tiny two wire addressable RGB LEDs (as in ground, and multiplexed power and data).

Sounds interesting. Do you have a link?

@ChayD
Copy link

ChayD commented Jan 7, 2022

I've recently run across some even more intriguing tiny two wire addressable RGB LEDs (as in ground, and multiplexed power and data).

Sounds interesting. Do you have a link?

Sure, here you go: https://www.wish.com/product/5f8d550f2ab2f78f0d06414b?share=web

@cpldcpu
Copy link

cpldcpu commented Jan 7, 2022

Thanks! I found this on Aliexpress: https://www.aliexpress.com/item/1005003070133485.html

Same remote control. And it came with a high resolution photo.

grafik

Edit: I ordered one set, looks intriguing to hack into it :)

@ChayD
Copy link

ChayD commented Jan 7, 2022

Thanks! I found this on Aliexpress: https://ww.aliexpress.com/item/1005003070133485.html

Same remote control. And it came with a high resolution photo.

Ah! Nice find!

@ChayD
Copy link

ChayD commented Jan 13, 2022

The two-wire rope light LEDs finally arrived from Wish, it doesn't look like they're addressable in the same sense as, say a WS2811, they're more like a slightly smarter version of those devices where they're practically PWM, but rather than sending the pwm signal in parallel you do it serially, like [SOF][R][G][B] where [SOF] (start of frame) would be a low level for, say, two bit periods, followed by three inverse bits to tell the devices which diodes to light, (e.g. 011 being red, 101 green and 110 blue etc). I think these particular ones have four or more bits after [SOF] as a sort of address. I'm just guessing here as I've not looked deeply into the waveforms. Needless to say, these would be harder to drive than regular addressable LEDs and need a lot of cpu intensive bit banging to get them to do anything cool. I'll still try and figure them out just for funsies though :)

@cpldcpu
Copy link

cpldcpu commented Jan 17, 2022

I noticed that there seem to be a lot of christmas decoration that allow somewhat individualized control with only two wires:

For example this one: https://www.aliexpress.com/item/1005001921905932.html

Since these are low-voltage strings, some kind of electronic is needed anyways as a constant current supply for the LEDs. Just using resistors would cause visible droop. So I presume they just added a minimum of control.

@prabbit237
Copy link

cpldcpu commented 3 days ago
I noticed that there seem to be a lot of christmas decoration that allow somewhat individualized control with only two wires:

Based on the remote, I think those ones are a set color (either all white or multi-colored but not changing colors) so all they'd need is to PWM them and the whole string flashes. There IS, of course, 1-Wire communications systems but it seems like anything drawing all that much current wouldn't be able to run too much bandwidth/info across the two wires at the same time.

@cpldcpu
Copy link

cpldcpu commented Jan 21, 2022

The two-wire rope light LEDs finally arrived from Wish, it doesn't look like they're addressable i

Mine from above also arrived. Seems to use the same scheme to control. Quite curious already, I will dig a bit into this.

Based on the remote, I think those ones are a set color (either all white or multi-colored but not changing colors) so all they'd need is to PWM them and the whole string flashes. There IS, of course, 1-Wire communications systems but it seems like anything drawing all that much current wouldn't be able to run too much bandwidth/info across the two wires at the same time.

The LEDs look exactly like the controllable ones in the other chain that already arrived. Well, I also ordered the one I linked above, so we will see in a few weeks.

@cpldcpu
Copy link

cpldcpu commented Jan 22, 2022

I completed my analysis of the 2-wire LEDs, will write something up. It's a really clever concept, but also quite limited. I don't think that it is too good of a fit to WLED. But who knows, these devices may evolve and it seems that there are already many products on the market using them.

@ChayD it appears that at least my LED are simply using a linear count of pulses in the protocol, no binary encoding.

@cpldcpu
Copy link

cpldcpu commented Jan 22, 2022

Very interesting video on the assembly process of these strings that was posted by Harald on µC.net:

https://www.youtube.com/watch?v=wCKlCUBsaT4

Amazing amount of hand assembly. It's also clear that they cannot really deal with segmented datalines. That's why they went to great length to connect everythin in parallel.

@cpldcpu
Copy link

cpldcpu commented Jan 23, 2022

I had some fun with these LEDs, some detailed write-up here:

https://cpldcpu.wordpress.com/2022/01/23/controlling-rgb-leds-with-only-the-powerlines-anatomy-of-a-christmas-light-string/

Unfortunately not really suited for WLED, unless one only want to implement very basic effects. Could be of interest to integrated into the same ecosystem, though.

@ChayD
Copy link

ChayD commented Jan 23, 2022

That is some comprehensive write-up - nice work!

@cpldcpu
Copy link

cpldcpu commented Jan 30, 2022

The cheaper string from above was a "dumb" one indeed. But it still had some surprises: All LEDs are based on blue emitting chips and are phosphor converted. This helps to circumvent the issue of connecting LEDs with different forward voltage in parallel. Also, the light quality is better imo.

Summary here:
https://cpldcpu.wordpress.com/2022/01/29/analyzing-another-multicolor-string-light-with-unusual-leds/

@PinheadBE
Copy link

Hi, I'm having a hard time to find a reseller in Europe. Due to taxes and other costs, it has become expensive to buy from AliExpress.....
Does anyone have a website in Europe for this ?

@prabbit237
Copy link

Due to taxes and other costs, it has become expensive to buy from AliExpress.....

Just as an off-topic side-note, I once did a search to see what was the cheapest thing I could get from Aliexpress back around 1PT (using the Pre-Trump year dating system.) Chinese companies used to get really cheap postage rates here in the US (some sort of subsidies or such were in place) and you could get all kinds of things for around $1 and free shipping (at the time, just sending a letter across town was $0.49 and another $0.20/ounce after the first one. Shipping something in a plastic bag would probably have been more due to it not being "machinable" with the automated sorting.)

I found a small LED bulb for use in a car's instrument cluster to light up the dash. Price with FREE shipping was either $0.11 or $0.13 (forgot which.) So I ordered a single bulb and, sure enough, my "under $0.15 bulb" arrived about a month later.

@honnet
Copy link

honnet commented Feb 4, 2022

Hi @cpldcpu, @ChayD, @prabbit237, @PinheadBE and anyone interested!

Would you happen to know how to find this 1-wire LED alone? (or any other)

Thanks for sharing this great discovery!!

@cpldcpu
Copy link

cpldcpu commented Feb 17, 2022

@honnet
Unfortunately, no idea.

@cpldcpu
Copy link

cpldcpu commented Feb 17, 2022

There are now bluetooth versions of the "copper dipped addressed pixels" available:

grafik

They use a BLE SOC, SWD fully exposed:

grafik

Comes with 256kb of flash:

https://www.lenzetech.com/stProduct/ST17H66

SDK is here:

https://github.com/17HXX/BLE5_ST17H66

Anyone up to porting WLED? ;)

@darkmattercoder
Copy link

I have a few of those addressable fairy strings from above here. I could kinda drive them via wled, when using odd start and length numbers. However somewhere from 0.13-4 to 0.13-6 there seems to be a change where you cannot adjust the start number anymore without adding "dead" segments. First segment has to start at index zero apparently.

@darkmattercoder
Copy link

Okay, they have added a checkbox for this apparently.....

@shupershuff
Copy link

Ugh, seems I've fallen into this trap with these, https://www.aliexpress.com/item/1005001917228863.html. Glad this thread exists, thought I was going mad.

@blazoncek
Copy link
Collaborator

Closing this issue as it may be linked to pre-addressed LEDs (those with fixed addresses) and WLED support for adding multiple "skip 1st pixel" has been added.
If you feel otherwise please request re-opening.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests