Search the Knowledge Base
Creating Custom LED Displays with ESP32, LED Filaments and WLED
To use an ESP32 running WLED software to drive a 3V LED Filament. Put the components in appropriate case and make the filament into a simple design. Power will come via the USB and everything will fit onto a base ready for display.
Usual Warnings and Disclaimers
The author of this document is not liable or responsible for any accidents, injuries, equipment damage, property damage, loss of money or loss of time resulting from improper use of electrical or mechanical or software products.
Assembling electrical and mechanical machine components like power supplies, motors, drivers or other electrical and mechanical components involves dealing with high voltage AC (alternating current) or DC (direct current) and other hazardous items which can be extremely dangerous and needs high attention to detail, experience, knowledge of software, electricity, electro-mechanics and mechanics.
BEFORE MAKING ANY CONNECTIONS OR DISCONNECTIONS POWER MUST BE REMOVED FROM THE DEVICE AND THE CONTROLLER. FAILURE TO DO SO WILL VOID ANY AND ALL WARRANTIES.
All Errors and Omissions Excepted - feedback is, of course, welcome!
2. BILL OF MATERIALS
- ESP32 Board (we used a WeMos D1 Mini Pro)
- LED Filament
- Power Supply (5V USB is fine)
- 2 Wires (22AWG or similar)
- Base (we used a 2060 off-cut)
- Some Screws (we used M4 and M5 Stainless Steel Cap Heads)
- Some 3D Printed Parts (see below for the STL files)
3. THE BUILD
The build is very straight forward. Note the installation and configuration of WLED is not covered here as the WLED website is very comprehensive.
- Follow the instructions on the WLED website and install WLED onto the ESP32. (WLED Install Link)
- Configure WLED as per the instructions on the WLED website.
- On the “LED Preferences” select “PWM White” for the LED Type. This is important or the filament won’t work correctly.
- Print the shape you want for the filament (we used an Open Gear).
- Thread the filament into Printed part. Make sure to pay attention to the polarity of the filament. The end with the small hole is +V.
- Solder the wires from the filament to the ESP32. We used GPIO4 on pin D2 and GND (see image below). Make sure the Pin and the GPIO are as per your build and as per the setting your configured in WLED. It is a good idea to use a resistor between the output of the ESP32 and the LED filament, 3-6Ω should do (see this calculator).
- Plug in and off you go.
We found the Heartbeat, Breath, Fade, Strobe and Strobe Mega were the effects that worked best.
Because we chose to use a blue colour filament it is a little hard to capture the effects. Below are a couple of our attempts with the heartbeat effect.


4. SOME NOTES
a. Electrical Details
LED Filament is very fussy when it come to voltage. The recommended range is 2.7V-3.2V. Powering it from the ESP32’s 3.3V pin is fine, although it would be best with a resistor between 3-6Ω to drop the voltage and limit the current. Depending on the length and type of filament the current draw can vary. The 300mm filament we used is around 100mA.
ESP32s can generally supply 40mA on their GPIO pins and 250mA on the 3.3V LDO. So pulling 40mA from the GPIO for the LED Filament means that it will not reach its maximum brightness.
So basically we are not getting the best out of the filament. To get the best and in order to increase the brightness use a MOSFET like a AOD4184 or LR7843 and a suitable supply voltage. You can also use a NPN transistor to switch the power from the 3.3V out on the ESP32, something similar to this:
b. Why an Open Gear
The Open Gear logo embodies the spirit of open-source hardware—collaboration, innovation, and shared progress. It symbolizes freedom in engineering and invites everyone to contribute and build a future of limitless possibilities.
5. USEFUL LINKS
6. ADDITIONAL RESOURCES
STL files for the 3D printed parts we used in this project:
HAPPY MAKING!