-->
Page 1 of 1

Controlling Sk6812RGBW keeps failing with custom PCB

PostPosted: Mon Oct 26, 2020 10:54 am
by anders0nmat
Hello there.

I'm new to this forum, so I thought of posting my problem to the newbie corner, if this is not fitting, please let me know (or move it to the appropriate section, idk how you handle these things). Back to topic.

I am using an ESP8266-01 to control some Sk6812RGBW LED stripes (around 30 Meters / 858 LEDs). My IDE is Visual Studio Community 2017 with the Arduino IDE by Visual Micro, I use the NeoPixelBus Library. Up until now I brought it all together on a breadboard, it worked fine for over a year but was quite clumsy. So I sat down and planned a custom PCB to suit my needs, I pretty much just recreated my breadboard design (Gerber Files are available). Yesterday I soldered everything together, connected all cables (Power 5v converted to 3.3v, Data Out connected to the LEDs, opto-isolator to control the LEDs with my room switch) and turned it on.

My results were not what I expected:
  • The Colors were shifted, what should have been white, became red, Green became Blue, and vice versa.
  • The index range shifted as well.

This behavior is explainable if the first two bytes of LED data get lost. The Color order is GRBW.

Since it worked on the breadboard, I did some testing and got somewhat odd results:
  • Everything on PCB -> Doesn't work
  • Everything on Breadboard -> Works as expected
  • Everything on PCB except voltage converter (using external 3.3v source) -> Doesn't work
  • Everything on Breadboard but using GND and DOUT of PCB -> Works as expected
  • Connecting every Pin of the ESP via jumper cables to the PCB -> Works as expected if cables are long enough (I guess it has to do with distance between Esp <-> PCB)

I can't really explain, let alone fix, the issue at this point, so I hope someone has experience with a similar situation and can give some useful advice.

Here is my program code: https://pastebin.com/cy6LJ0hv
It is very messy, but maybe it helps. If you have questions I will try to answer them. Also I am working on a new version, possibly a cleaner one.

Here is my Pin configuration (Both PCB and Breadboard):
  • (GND) -- GND
  • (GPIO2) -- DOUT
  • (GPIO0) -- 3.3k Ohm Resistor -- 3.3v
  • (RX) -- Opto-isolator
  • (TX) -- Nothing
  • (CH_PD) -- 3.3k Ohm Resistor -- 3.3v
  • (RST) -- Button (GND) -- 3.3k Ohm Resistor -- 3.3v
  • (VCC) -- 3.3v