ESP32-S3 super Mini + TP4056a + 5v Booster + WS2812B ECO LED Strip

Hi! I'm working on a project for a simple LED that I can individually control the lights. However, I'm encountering an issue with getting the LED strip to turn on.

So far I've tested the LED Strip with a controller and DC5v and confirmed the lights can turn on.

However, when trying to hook everything up, the lights do not. Here's the current setup on a breadboard:

  • 3.7v Li-Ion Battery > connected to TP4056
  • TP4056 OUT+ to 3-pin on/off switch
  • TP4056 OUT- to 3.7v to 5v booster IN-
  • Booster IN+ to 3-pin on/off switch
  • Booster OUT+ to breadboard common +
  • Booster OUT- to breadboard common -
  • ESP32-S3 Super Mini 5v to breadboard common +
  • ESP32-S3 Super Mini GND to breadboard common -
  • ESP32-S3 Super Mini GPIO4 to Resister to LED DATA
  • Capacitor + to common +
  • Capacitor - to common -
  • Common + to LED 5v
  • Common - to LED GND

When I turn on the switch, all lights on the TP4056, Booster and ESP32 light up. However, the LED does not light up.

Current Troubleshooting:

  • Swapped standard jumper wires to 22 AWG solid wires for the breadboards
  • Tested 5v and GND on LED with multi meter .. approximately 7v is being received on the LED
  • I tested the multi meter and I get 7v when testing the DATA wire on the LED too.
  • Arduino code is a basic 20% LED brightness with 10 LED lights only. Code below.
  • Code compiled and uploaded to the arduino.
#include <Adafruit_NeoPixel.h>

#define LED_PIN   4
#define LED_COUNT 10

Adafruit_NeoPixel strip(
  LED_COUNT,
  LED_PIN,
  NEO_GRBW + NEO_KHZ800
);

void setup() {
  delay(1500);

  strip.begin();
  strip.setBrightness(20);
  strip.clear();
  strip.show();

  delay(500);

  strip.fill(strip.Color(255, 0, 0, 0));
  strip.show();
}

void loop() {
}

Couple questions:

  • Any apparent issues with this setup?
  • Are my parts compatable?
  • I've been forking over a lot so far during this troubleshooting (had 12v LED previously with 12v booster and became too complicated for me)
  • I think so far my current cost for major equipment is (LED Lights = $12, Booster $1 each, TP4056 $2 each, ESP32-C3 Super Mini $4 each) = $19 ... However, is there something that costs just a bit more but is way easier?
  • Eventually I want this on a perfboard and I want to make like 5 more.. so I'm hoping to get this repeatable for me.

Any help would be appreciated. Let me know what is needed.

Any issues..... Schematics would help us a lot....

Compatibility.... Links to datasheets would help most of us...

ESP32 pins output a 3.3V data signal. This isn't guaranteed to work with WS2812 LEDs which require a 5V data signal. So maybe you need to shift the data signal from 3.3V to 5V.

Don't get those level shifter modules that contain only a single MOSFET per channel. They aren't guaranteed to work either. They are intended for use with i2c signals, which are lower frequency.

Many 74hct-series chips make suitable level shifters. Most 74hc-series chips don't. However, a few do and 74hc14 is one I have had success with.

Something that is drawn is a lot more clear to most people.

I would say you need to replace the battery in you DMM. Nothing in the system should exceed 5v unless you have not set the booster correctly. If you have really applied 7v to a 5v ledstrip, you can chuck it in the bin.

Although the code will work just fine on most boards, there is no guarantee that it does on an ESP32-S2, but let's say that it does. I would rather have some code that continuously sends a signal, rather than just once

void loop() {
  strip.fill(strip.Color(255, 0, 0, 0));
  strip.show();
  delay(100);
}

That it keeps sending the same doesn't matter much, but like this at least you can more easily check for a bad connection.

Since we don't know what is the issue, you should remove any possible issue. A simple TLL chip always works for me.

74HCTxx, 74HCxx even 74LSxx they nearly all do the trick, but you need to power them with 5v.

To exclude the battery + TP4056 + booster as a cause you can power the ESP, level shifter & Ledstrip with 5v from a different source, like USB should be ok for just those 10 leds.

74hct: yes.

74hc: for most chips in the series, you are simply moving the problem. When powered with 5V, most 74hc chips are not guaranteed to work with 3.3V input signals because the signal must be greater than 0.7 x 5V = 3.5V, just like the input of WS2812. But 74hc14 is one of a few exceptions because it's Schmitt trigger inputs will accept a lower input signal.

74ls: no one should be buying these in 2026!

I use 74HC02's without any issue.

Who said anything about buying ?

Could be dumb luck. As I said, in theory you are just moving the problem from the WS2812 input to the 74hc02 input.

That said, using 74hc14 isn't 100% guaranteed either, but it should be significantly less likely to cause a problem compared to other 74hc chips. And I have used 74hc14 for this in several circuits... without any issue :slightly_smiling_face:

You didn't say don't buy them. Not everyone, especially beginners, have a stash of old components looking for a purpose. @arduinoobie might have seen LS chips at bargain prices without understanding the drawbacks of that old design. HC and HCT are much more modern and efficient.

So the order of preference, in my opinion:

74HCTxx > 74HC14 > 74HCxx > 74LSxx

not if you've used them as much as i have !

What works, works !

For testing purposes one could even consider powering the WS2812b strip with 3.3v, it is below spec, but they actually usually work. If you address just a single (the first) pixel, you could even use the ESP32 3.3v onboard regulator to do so. Though if anything more than 5.5v has been applied to the strip, it should never be connected to anything after that, since there is a chance that the damage done to the chip can cause damage to other connecting parts. And keep in mind it is just for testing, particularly the blue part of the led will not light up very much at 3.3v

Do you know for sure that your strip uses neopixels?

@arduinoobie have you tried testing with a 5V Arduino like Uno R3/Nano V3? If that works, it might confirm the need to step the signal voltage from the ESP up.

Hi Everyone! Just wanted to check in. After wiggling some wires, everything started working. It looks like my jumper wires weren't giving great contact. I'm going to now move this to a perfboard to see if i can get something more stable. Appreciate everyones comments! Sorry for the wasted thread.

The point of sending the signal repeatedly.

I'm having trouble understanding what makes the HC14 more useful for translating 3.3V to 5V than any other HC part. In fact, it seems the Schmitt trigger would require the input voltage to be even higher than, say, the HC04. Can someone refer me to the datasheet spec that makes the HC14 work better for translating upward (if I haven't misunderstood what's being suggested)?

In general Schmitt triggers transition from HIGH to LOW at the same threshold where they transition from LOW to HIGH. On a near perfect digital signal that does not matter much. Where that threshold is may be relevant in this case.

The interpretation is up to you.

Considering that the maximum positive going threshold is greater than 3.3V, I can see how it would be of any use as a translator.
Your understanding is correct.

As jim-p points out, if you look at the data sheet, it is only guaranteed to trigger on VIH of 3.5V. It works as an upward translator if the part happens to fall within the "typical" specs. That coupled with the fact that the part is relatively hard to find Unless you already have a bag full I wouldn't use it.

As a matter of fact no HC series part would be useful as a 3.3V to 5V translator.

When I look at the Onsemi datasheets for the HC14 and HC04, the maximum high-going voltage trigger level is the same for both parts, which for a 5V supply is problematic at best for a 3.3V input. The low-going levels are different, but that's not where the problem is. So having a Schmitt trigger doesn't make it any worse, it also doesn't appear to make it any better. So as @jim-p says, HC just isn't the right family for voltage translation. But TI and probably others now offer 74LVxT parts specifically designed for translation - in either direction. They provide push/pull output, low power, and are pretty fast.

Edit: In any case, unless I'm missing something, a Schmitt trigger doesn't work any better than a regular input.

Edit2: I should say, however, that a 3.3V signal going into a 5V Arduino seems to work pretty reliably. The 328P, at least, is a little more tolerant on VIH than 74HC, Adafruit's SD card modules drive MISO directly from the card, which works quite well.

I like the TI Little Logic series parts. The SN74LVC1G14 is a single inverter so you can easily scatter them around your circuit if necessary. The inputs are rated for 5V even when powered from 3V3 so you can use them in either direction. They also don't leak in either direction when powered down which can be helpful at times.

It does for signals with slow rise or fall times. There is no signal level range that can produce an undefined output like there is with normal CMOS/TTL inputs. Great for using with a debounce circuit that uses Rs and Cs to filter a switch output.

HCT and ACT parts (anything with TTL level inputs) can be used as 3.3 to 5 translators.