My build-log from SK6812 RGBW led strip upgrade for the HyperHDR ambilight system.

Here is my build-log from new ambilight upgrade for HyperHDR WS2801 to SK6812 RGB(neutral)W. I'm absolutely not encouraging anyone to follow this scheme as there is potential hazard related to the high voltage from the modular power supply. I never leave the system without attention and power it off with Power Cube Remote when not used. The Rpi with Raspbian OS is using the read-only system on SD card so it can withstand sudden powering off.

One important thing about SK6812 RGBW

There is no one magic algorithm for RGB to RGBW conversion that works perfectly with every LED strip on the market. When I ran the first tests after building this setup the quality of the ambilight effect was poor and worse compare to the WS2801. That's because of the most common algorithm doesn't care at all about the white channel characteristics of the LED strip. In my case the light was a way too bright, warm and weak saturated. But I double check the order and I've ordered and received natural white version. Not the warm one. The solution was to calibrate RGB to RGBW conversion and it's done in https://github.com/awawa-dev/HyperSerialEsp8266 You can calibrate it also for your needs. After that I received beautiful colors: very natural and bright when is needed to but they don't lose a saturation what was a main problem before. Much better than WS2801.

Unfortunately you can't calibrate RGB to RGBW conversion in the HyperHDR "Image processing" tab because it's completely different process and it doesn't touch the white channel directly. You can use HyperSerialEsp8266 with individual setting per channel and WLED as it has build-in few preset mode also.

How to put all the things (hardware) together? 

1) Parts
2) Frame or TV
3) Voltage level shifter
4) Measurement and testing
5) Soldering
6) Final result

1) Parts 

From previous setup I have: a plastic case with a switch with a fuse and molex connector for the LED strip on the back, modular power supply (Mean Well RS-75-5), Rpi 4 with dedicated power supply.



I will use now SK6812 RGBW 60 leds/meter from BTF-Lighting and wooden frame to mount it. I expected better quality and package protection from BTF but in the end it's acceptable.


 

2) Frame or TV

My TV's back surface isn't flat. It's a problem to create even Ambilight effects on the wall and to attach the LEDs strip to the TV. Second problem is very long TV's stand that it keeps TV far from the wall. So I choose to use the wooden frame.


The dimension for my 55" LG is 122x68,5cm. The base's stands has 5cm height.

3) Voltage level shifter

In my previous project (WS2801) I didn't use 3.3V to 5V level shifter and it worked. There were some random and very rare flashes, for example one per hour... sometimes it was OK for many hours/days, not sure if that was the problem. But now I don't want to take a risk. You can chose one of many available on the market IC level shifters but it must be a fast one. I found some opposite opinions (may not work well on higher bandwidth) about them and couldn't make a decision.

Then I found one old article about using one or two LED to increase 3.3V to
level acceptable by the WS2812b/SK6812 controller. Link: https://www.electrobob.com/ws2812-level-translator/

In short: the LED feed by VCC = 5V requests al least 5V * 0.7 = 3.5V for data line . That's too high for 3.3V from Rpi/ESP8266, however it works in most case. But if we would feed first LED with just VCC = 4.3V then 3.3V would be perfectly fine for 4.3V * 0.7 = 3V. As a bonus the data signal after that passage would be amplified to VCC that was used (4.3V) and it would work then with the rest of the LED strip at VCC = 5V.

The problem could be the first LED but I take care of it in HyperSerialEsp8266 (WLED also has an option to skip it).

Here my implementation for Esp8266 Wemos d1 mini:

  

Used parts:

  • ESP8266 with CH340G Wemos d1 mini clone and HyperSerialWLED or HyperSerialEsp8266 firmware
  • prototype board
  • some jumpers and wires
  • one SK6812 LED
  • 1N400x diode

The solution for WS2812B is almost the same: just use the same type of LED from the strip.

As all my components have common ground I need only that Data-Out from this level shifter.


Voilà



4) Measurements and testing

At this point you have working level shifter and WLED preferable to make some testing. Repairing the LED strip when it's already attached to the TV probable could be a very frustrating and difficult task. So we want to make sure it's working.



In my case everything was almost OK. LED strip was working, but I noticed one problem: the LED connector became hot when the LED strip was displaying white color for few minutes. And I tested only 3.5meter cut off segment of the LED strip. What would happen if I use full 5M LED strip? Probably it would become even hotter... The reason is poor quality of the wires used in this plug connector from BTF Lightning. I decided not to use it and to solder my proven cables directly to both ends of the LED strip at 5V and ground input (the data line is connected only at the beginning once of course). At the second end of this connector cable I have molex so I can disconnect the unit from the strip if I want to.



Despite I had already measured all the needed segments there was some drawback: one cut line laid almost directly on the soldering point from the BTF (the LED strip is constructed from connected 0.5m segments) and I had to cut it off, replace it and to solder new longer segment.

5) Soldering 

Not a very pleasant process. Before I attached the segments to the frame I already prepared the soldering points with a tin:

I wanted to have very narrow corners. For data signal I used thin solid copper wire protected with liquid rosin against oxidization. But for +5V and ground you need a thick cables. I used too thick ones and it was difficult to solder them to the LED strip.


Not great, not terrible, but it's working. After every finished & soldered corner check with multi-meter the connectivity and also make sure that there's no short-circuits.

6) Final result

That's the critical moment. Will it work or I broke something during the soldering process? I wasn't sure about it but:

...it works! :)
It's time to attach the stands and to end the build.

Comments

Bloobik said…
Hi, I have a questions about your project. I want to do your level shifter with ESP8266. Data out is from level shifter and from RP4 is ground (GPIO 9) to power supply -V ? I've got old instalation (Ws2812b, Arduino) and I want to use hyperhdr project so I need to remove Arduino and use esp8266 with your level shifter. Sorry for that questions but I am a real amator.
awawa said…
There are two different issues if you want to use esp8266 AND level shifter:

- common ground for the RPI and ESP, if the ESP is connected to RPI by USB then also it shares the ground and it's enough: Raspberry Pi 4 PIN9 (not GPIO!) to the led strip power supply -V

- data line from ESP to the led used in the level shifter: it's GPIO2 on ESP, you must check schematic for you esp8266 which pin it is. In my case it's D4.

And remember that you serial chip esp8266 should support 2Mb serial transmission. Most popular are CH340g and cp2104. Avoid cp2102.
Bloobik said…
Thank you for the quick reply. Of course, I meant PIN9. ESP will be connected to RPI via usb. I have ESP identical to the photos from the blog. I am still waiting for the Rullz 4k MS2109 grabber and additionally ordered another grabber for the test:
https://a.aliexpress.com/_u6DKj9
If everything works, I am going to buy an Ezcap 269. Thank you for your help.
Bloobik said…
Hello, i made a level shifter with ESP8266 and it works. This grabber https://a.aliexpress.com/_u6DKj9 is usb 3.0 and works with yuyv in 720p without much lag (at higher resolutions there are lags on leds when switching between scenes). I have a question about Ezcap 269, does it pass dolby vision, dolby atmos and dts: x? I have an Ezcoo splitter with a scaler and it passes all these formats but I would like to replace it with the Ezcap 269.
Bloobik said…
One more important thing, when I turn off the devices connected to hyperhdr the leds display the "rainbow". On hyperion 2.0 they went blank. How to deal with this?
awawa said…
For unwanted rainbow effect please check the effects tab.

I'm not using ezcap 269 anymore so can't verify it for sure, but from what I remember from users feedback, the grabber can pass Dolby Vision when it not exceeds 18 Gbps bandwidth but can't grab it (the image is pink).

As for the sound I use ezcap 269 for a quite long time and never experience a problem when it was connected to Denon x2700 even with high quality soundtracks. But again can't verify these particular systems now.
Bloobik said…
Thank you for your answer. With this "rainbow" there are vertical colored stripes, as if there is no signal. For them to disappear I have to turn off either the hyperhdr instance or disconnect the power from the leds. The LEDs on the hyperion just stopped shining.
awawa said…
As there is "Rainbow" effect I thought that you have enabled "Background Effect" when there is no source. But it seems it is a test page from the grabber when it not receiving any signal. Please configure the signal detection on the grabber's configuration tab.
Unknown said…
@HyperHDR What are you using in place of the ezcap 269?
awawa said…
@Unknown Ezcap 320. It has some serious limitation (lack of: sound bitstream pass-thru,4k24 movie mode and support for hdcp) but it can be workaround with the proper setup. It has 2 strong advantages: it's ultra fast and HDR10 colors with a help of my LUT table are almost perfect. BTW new model from Ezcap is on the way for testing.
Unknown said…
Really cool! Might be interesting to check out the Quin-LED dig uno. Has a LLC and fuse built in, also powers both the Esp8266/32 and the LED's from the same supply (not that your breadboard isn't great).

I'll be looking forward to the next EZcap review.
Bloobik said…
@hyperHDR can you tell me which ezcap model now will you test ?
awawa said…
http://www.ezcap.com/index.php/product/ezcap321gamelinkraw.html
Unknown said…
Is a level shifter required to use 5m(300led) ws2812b on esp8266?
awawa said…
Same situation as with sk6812 from the article. Without level shifter: may work, may not work or may work with some random flashing.
Nacho Calavia said…
Thanks for the blog and the hyperhdr fork. In order to use APA102 leds (data and clock lines) do I have to level shift both?
awawa said…
I don't know if the level shifter concept from the article is compatible with the APA102: if it can boost both lines (data&clock) and the APA102 led in level shifter could work on lower voltage (4.3V)... if you'd like to experiment then I guess you have to use data&clock from that level shifter. Probable safer choice would be using SN74AHCT125N.
Nacho Calavia said…
Thanks for the reply, I will experiment this afternoon and let you know
awawa said…
That only depends on your grabber and system...for Rullz MS2109 I select following device on Rpi and then run the equalizer effect:
https://i.postimg.cc/3NqTsyP1/sound.jpg
If nothing happens in the video preview and there is a message about "grabber captured silence" in the log that means you grabber doesn't receive a sound. Some devices are very unfriendly and blocking forwarding sound stream for example Denon amplifiers.
awawa said…
I tested music effects with my ezcap 269 also and it worked.
So the grabber is not a problem if you set everything correctly and the grabber is RECEIVING sound.
1 setup your grabber for the sound effects in the: 'Effects' tab.
2 play a music your the device that is connected to the input of ezcap269, in hyperhdr run the equalizer 'Remote' tab, see the effect in the video preview as you had in the screenshot from my previuos post.
3 verify your logs if it is not working: without them we can only speculate.
awawa said…
Soon there will be detailed tutorial on the blog for configuration settings in HyperHDR but the steps you must proceed are defined as above. First you must make sure that the grabber is receiving sound and equalizer are playing. Then you may try other music effects.
awawa said…
Done: https://hyperhdr.blogspot.com/2021/04/how-to-set-up-hyperhdr-part-i-basic.html
At the end of the article.
Jordan Steele said…
Does the LED strip need to have a common ground with the ESP and RPI? I was planning on having RPI (with its own 2A power supply) -> 15 ft microUSB cable -> ESP with your same level shifter concept -> LED strip with separate 15A power supply. Do you think that would work or should I connect grounds between the ESP and the LED Strip?
awawa said…
ESP and RPI share common ground because you want to connect them with the USB cable. So if the LED strip has different power supply then you should connect ground between LED strip AND (ESP's ground pin OR raspberry's ground pin - use just one). Sorry for developer syntax ;)

Without a common ground in your setup you may experience not only problems with the communication...in fact it's a bit dangerous not to have it.
Naveen said…
HI i have SK6812 LED strip , iam trying to control this do you any algorithm for this i am using a pic microcntroller to control this LED Strip. Thanks in advance . Regards Naveen
awawa said…
Don't have any specific experience with programming bare pic micro-controllers. For LED drivers I recommend ESP32 or ESP8266 instead (with universal WLED with it's own algorithm or dedicated for cold and neutral white HyperSerialEsp8266 for USB usage). If you are just searching for RGB to RGBW algorithm then you can view sources of HyperSerialEsp8266. I don't have any recommendation for a led library like NeoPixelBus for other platforms that could work with your specific pic.
Vince said…
Hey, I was wondering which module I should buy for WLED. What is bad about the nodemcu CP2102? Would you recommend a different one?

Also: whats the easiest way to level shift the signal?

My plan is to just have the WLED module hanging behind the tv. I want to power it from the TV's usb port if thats possible without sacrifizing anything? I mean the USB port should provide enough power for the ESP, correct?

I then want to have 2 long cables (ground and power) going to my lowboard under the tv. That way I would only have the small ESP behind the tv. How can I level shift with this set up?

Also which grabber is the absolute best you recommend right now? I consider getting the rullz one. The 2.0 is the good one, right? Or should I get the 3.0?

I want good hdr colors - I will use hyperhdr of course.

I know - many questions :D
I hope you can help me!

Thanks for the great work!
Vince said…
Hey, I was wondering which module I should buy for WLED. What is bad about the nodemcu CP2102? Would you recommend a different one?

Also: whats the easiest way to level shift the signal? Do I need to level shift for my use case? I plan on only connecting the data pin to the ESP.

My plan is to just have the WLED module hanging behind the tv. I want to power it from the TV's usb port if thats possible without sacrifizing anything? I mean the USB port should provide enough power for the ESP, correct?

I then want to have 2 long cables (ground and power) going to my lowboard under the tv. That way I would only have the small ESP behind the tv. How can I level shift with this set up?

Also which grabber is the absolute best you recommend right now? I will get a good feintech hdmi matrix which has 2 outputs. 1 in 4k for the tv and 1 in fhd for the grabber. Will use it with an amazon fire tv stick mainly. I consider getting the rullz one. The 2.0 is the good one, right? Or should I get the 3.0?
Any ezcap is no upgrade for my use case right? And also more expensive..

I want good hdr colors - I will use hyperhdr of course.

I know - many questions :D
I hope you can help me!

Thanks for the great work!
awawa said…
1) I currently use SN74AHCT125N as the voltage level shifter because I need to switch between different types of LED strip. Have no problem at all so I can recommend it.
2) CP2102 is limited only to 1Mb USB serial port speed so it is not compatible with HyperSerialEsp8266/HyperSerialESP32 if you experience problems with the Wifi signal stability and want to switch for the cable solution.
3) ESP module with enabled Wifi can draw up to 800ma from the USB port. USB2.0 standard limit is 500ma so it depends on your TV USB port implementation.
4) Voltage level shifting is for data line, not ground and power. But watch out for the voltage drop if there are really long, use thick cables. +5V for a level shifter should be taken from that power cable just before the LED strip (not for example from +5V ESP module because they could be different due to the voltage drop).
5) For all in one solution: Ezcap 320, for HDMI splitter + grabber: Ezcap 321 (really fast and true USB3.0) or budget solution MS2109 (there are different implementation...if it's true USB3.0 and still can offer YUV then it could be a better choice, anyway it's a lottery. USB2.0 version from proven seller/brand is also good choice).
Bongs said…
Hi. I was using Hyperian and the delay was annoying, so I did a search and found your work.

First of all, the existing system doesn't have a lot of latency, but your system doesn't seem to have any latency.

First of all, this is a video of my system in operation. The latency is about the same as watching a video.

https://youtu.be/pHli40kIyy8
Unknown said…
Hello,

would you have any wiring diagram how do I connect all the stuff?
I understand that signal from the grabber goes into HyperHDR holding device (in my case it is RPi 0), then I use default pin (GPIO18) for controlling LEDs. I want to include HyperSerialEsp8266 with level shifter, how do I connect RPi with Esp8266? Signal from Esp8266 goes using GPIO2 into level shifter and then into LEDs, right? But I am missing link between RPi and Esp8266...

Regards,

Maciek
awawa said…
Hi
You have two ways to connect Rpi to Esp8266:

- just USB connection, but ESP8266 must have CH340C, CH340G, CP2104 serial chip on board supporting 2Mb speed. This can be difficult since the ch340x family is more often counterfeited with some unnamed ones that usually don't work at 2Mb speed (their chip's tags are phisically removed from the surface). For more details, see HyperSerialEsp8266 or here HyperSerialWLED

- using SPI connection between Rpi and any generic ESP8266. Our colleague @bong8839 did a good job of creating a schematic for him which can be found here: I want to change Hyperion to HyperHDR. # 182 HyperSPI project is located here: HyperSPI
Unknown said…
Thanks. Will have a look at no 2 later. Regarding USB I think IT won't work with RPiZero. One port is meant for power, the other one as input from grabber...
awawa said…
Technically it's possible using generic USB hub or dedicated USB Hub Hat. But of course SPI solution doesn't require such additional equipment. Just remember that SPI cables should be rather short (15cm are tested and works well in my setup).
Unknown said…
Do I can use GPIO 9-11 on RPi and GPIO 12-14 on ESP. In HyperHDR I just select adalight as controller, no need for selecting output on RPi, right?
awawa said…
For HyperSPI configuration in HyperHDR is that sections HyperSPI-software-configuration-hyperhdr-v17-and-above. SPI in Rasbian OS must be also be enabled, but HyperHDR's installer takes care about it (restart may be required). Adalight is for USB serial port connection.
Andrew Harris said…
Great guide - thank you! What is the size of the project box you are using?
awawa said…
@Andrew Harris Thanks. There is updated version of the guide available here: https://www.hyperhdr.eu/2023/02/ultimate-guide-on-how-to-build-led.html The box is Kradex Z17W (235 x 217 x 92 mm)