I’m struggling to achieve what seems like a simple task, control one of these RGBW NeoPixel LEDs with an ESP32-S3-DevKit1:
This is the code I’m trying:
light:
- platform: esp32_rmt_led_strip
id: rgbw
name: "My Light"
pin: 21
num_leds: 1
chipset: SK6812
rgb_order: GRB
is_rgbw: true
restore_mode: RESTORE_DEFAULT_OFF
And I’ve tried it with / without this logic-level converter:
… taking a wire from the 3.3V rail to the LV pin, and a wire from the same 5V rail as the LED and ESP to the HV pin, and putting the GPIO output into one of the numbered LV pins (eg. LV1), and taking the matching numbered HV pin (eg. HV1) back to DIN on the LED.
And it just doesn’t respond at all.
The LED shares its 5V and GND power rails with the ESP32, and I’ve tried the single signal wire (DIN) on two GPIO pins now, 19 and 21.
I’m using the pinout from page 3 of this document:
I can see the light controls as an entity in Home Assistant, and I can fiddle with the various brightness and colour sliders, but it has no effect on the LED.
5V rail → 5V on LED, 5V on ESP32, HV pin on logic level converter
GND rail → GND on LED, GND on ESP32, GND on logic level converter (on both the HV and LV sides)
3V3 pin on ESP32 → LV pin on logic level converter
GPIO 21 → LV1 on logic level converter
HV1 on logic level converter → DIN on LED
Strangely, if I touch the GND pin of the LED with the negative lead of my multimeter, the LED comes on very dimly and stays lit … … so I guess that at least proves the LED is getting power.
ChatGPT said something about that converter I’m using not being ‘fast’ enough to process the sort of logic stream needed for this sort of LED … is it talking gibberish?
Could be, but if you have one of those common I2C shifters, I doubt that’s the problem.
You could try also without shifter, both at 5V and 3.3V supply voltage.
Datasheet of your chip is much tighter with logic level voltage vs supply voltage than common ws2812 chips.
“Logic input voltage VIN -0.5~VDD+0.5 V”
I’ve tried without using the shifter (so the 3V3 logic level signal going directly into DIN) and that didn’t make any difference sadly.
What does that mean about logic level voltage vs. supply voltage being tighter than most chips? Is that something I can check / measure without an oscilloscope? And actually I guess I can’t do anything about that anyway as the specs of the ESP32 and LED chips are what they are?
I will have a closer inspection of the wiring and solder joints for sure I have buzzed through for continuity from the 5V rail, the GND rail and the GPIO pin on the ESP32 through to the actual pins on the LED (not the pins on the breakout board) and they all check out as being connected.
I will try soldering up another LED chip on another breakout board to rule out the possibility of a faulty LED … or breakout board …
That according to specs, difference between data and supply voltage shouldn’t be more than 0.5V.
Did you try to supply the LED from 3.3V (without level shifter)?
Are you powering the LED from esp or from separate PSU? If separate, remember that you need common GND with esp.
I soldered up another LED chip to the breakout module and it worked straight away!
So either the other chip was dodgy or my soldering is dodgy (although it buzzed through fine so I’m wondering if it’s the former) …
I went back to not using the logic level converter and setting the chipset to SK6812 which is what it said it is in the datasheet … although I noticed it was already working with it still set to SM16703… this is with the LED running on 5V.
You’re welcome. Nice that your nailed it, likely just bad solder joint.
But be aware that having 1.85v difference between supply and data can also cause some misbehaviour. So ideally try how it goes now with level shifter.