$5 Wifi (RGB enabled) LED Dimmer w/ ESP8266

A super tiny LED dimmer, controllable from any device, based on the ESP8266. Doesn't require an arduino or rasp pi.

Similar projects worth following
-- Updated RGB (triple channel) design! --

For a personal project I designed a super tiny Wifi dimmer module, based on the ESP8266. It doesn't need any arduinos or rasp pis to work, just the ESP.

This is an attempt to make a module with correct pulldown/ups that minimizes wasted power consumption, all in a 2x3cm package. Its height is incredibly small too, causing it to be integrable almost anywhere. Just hook up a power supply and a LED strip, and enjoy having your lighting dimmable from any device.

The hardware design, explanation, and parts list are open sourced on GitHub: If you like it, please give it a like here and a star on Github!

I wrote some example software for this module, you can find it here: The pin u
  • 1 × ESP8266 ESP-12 format
  • 1 × XM1584 Power converter Set to 3.3V with the potentiometer screw!
  • 1 × FDS8896 PowerTrench MOSFET Can be swapped for any other SOP-8 N-Channel power MOSFET
  • 2 × KF350-2P screw terminal blocks
  • 4 × 10kOhm resistors 0603 format

  • RGB Design and 8.5A channels

    Tom Clement01/02/2017 at 21:17 1 comment

    After playing around with the idea of an RGB version of the original model, I've finished a design that has 3 channels instead of the 1 present on the original.

    This means you can now control RGB LED strips over WiFi for < $5!

    The overall design has been improved, resulting in beefed up current ratings amongst others. You can now draw 8.5A per channel! That means you can hook up 306 Watts of LED strip awesomeness, pretty cool.

    I've ordered the new modules, and am waiting for the PCBs to arrive. Check out a preview here:

    The Eagle files can be found on Github as per usual :)

  • PCBs arrived, first proto done

    Tom Clement05/15/2015 at 18:30 0 comments

    The PCBs arrived from China, yay!

    Initial measurements show that all electrical connections were good and things were connected as intended, awesome.

    Except for the screw terminal blocks, all other components had come in already as well, so I put together a prototype with the wires soldered directly to the board, just to check it out.

    This thing is _tiny_. Soldering was surprisingly easy enough though, phew!

    Next up: writing an assembly description and messing about with the software. Can't wait.

View all 2 project logs

  • 1
    Step 1

    Assembling this baby should be easy enough for anyone who has hand soldered a couple of times before. First up is the PCB itself. It comes panellised into two modules per board, so break one in half.

  • 2
    Step 2

    Next, we put the 12V -> 3.3V DC converter in place. I did this by first applying some solder on the 8 pads on the back. If you've not used solder flux paste before, try it. Seriously. Putting some flux on the pads before soldering makes your life a million times easier.

    Then, I placed the converter on top (be sure to check its orientation! In this picture the part with the chip goes in the top). I then aligned it with the solder balls, heated up one of its pin holes, added a small amount of solder onto the pin hole, and let the solder seep through to the solder ball beneath it. Repeat this for all holes.

  • 3
    Step 3

    After that, I made sure that the converter was set to the right voltage. These converters are configured to pass on 12V by default, which would kill the ESP8266 chip immediately if found out too late.

    The output voltage can be adjusted by turning the screw on the lower left side.

    Because the screw terminal blocks hadn't arrived yet when I was putting this one together, I soldered the 12V power supply directly to the board:

    I plugged in the power supply, and measured the voltage across the ESP vcc and gnd pads. In order to reach the vcc pad, I sanded the part where the PCB was broken in half down a bit.

    After setting the output voltage to roughly 3.3V (I tend to give it a bit more, 3.5 is still within the ESP's specs), unplug the power supply again to make sure you can't short anything during soldering.

View all 7 instructions

Enjoy this project?



Stuart wrote 01/17/2018 at 19:58 point

Tom, Thanks so much for this awesome project. Can you please advise on a mosfet to handle a load of 20 amps. I am looking to implement your design on a car (Jeep Wrangler) to control off road lighting through MQTT and allow pwm control to the lights but the mosfets you used aren't capable of the current I need. Thanks again so much for documenting your project I have been looking for something like this for ages.

  Are you sure? yes | no

thomas7015 wrote 11/12/2017 at 22:13 point

Hi Tom, I am new to Lua programing.  I am having trouble uploading code to the esp.  In the past I have tried to upload init.lua and say main.lua.  i can't get them to both to upload.  Your code has three .lua files, so even more problematical.  If this problem is to simple, cluld you direct me to a beginners tutorial?  Thanks 

  Are you sure? yes | no

miroslav.zoricak wrote 11/12/2016 at 22:29 point

Hi Tom. I've made a similar project a while back ago using an RFDuino for BLE control. One thing that I did differently was I used an LP2950-33 to supply power to the RFDuino. What reasons did you have to use XM1584 instead?

  Are you sure? yes | no

Tom Clement wrote 01/02/2017 at 21:09 point

Hi Miroslav, the LP2950-33 is rated up to only 100mA of current. The ESP chip can peak up to 200mA when it's using its WiFi antenna, so something beefier is needed.

I chose to use a switching power supply module instead of a linear regulator, because at these currents they waste less energy in heat dissipation (albeit only by a bit).

  Are you sure? yes | no

sergio.renzo wrote 04/29/2016 at 18:38 point

Hey Tom - well done - this an amazing ... but if I need to dimmer a 127v LED bulb  what do you think I have to change on your project ?

  Are you sure? yes | no

Tom Clement wrote 01/02/2017 at 21:05 point

Hi Sergio, I've not done any projects with that high of a voltage, so I really wouldn't know too much about it.. At the very least you need high voltage MOSFETs, but perhaps there are implications to the board design at these voltages, too..

  Are you sure? yes | no

JjKalebass wrote 05/19/2015 at 15:06 point

Hello Tom

Good job!!

How is the project today ? I'm very interested as I have a led strip to include in my wall with a dual command method : switch on the wall (former lamp switch) and Home automation box (like Jeedom). Your small card should be compatible with the openess of Jeedom. Thanks for more information.

  Are you sure? yes | no

Tom Clement wrote 05/19/2015 at 15:20 point

Thanks! The project is going very well, I'm working on the software whilst waiting for the screw terminal parts to arrive.

This module is compatible with any network based home automation software, but you'd have to add a script to support their API. Andries (see comment below) wrote some software to connect to Domoticz, for example.

As far as I can see Jeedom is based on zWave instead of wifi/networking, so I don't think it will connect with this module.

  Are you sure? yes | no

Andries Faassen wrote 05/07/2015 at 22:44 point

Awesome project! As you know I made a LED PWM WiFi dimmer a while back too, but based on the ESP-01. Definatly following this excellent project!

  Are you sure? yes | no

Tom Clement wrote 05/07/2015 at 23:04 point

Shoulders of giants.. ;) Andries' project is super cool, and hooks up to the Domoticz home automation software:

  Are you sure? yes | no

Sn00zerman wrote 05/07/2015 at 19:36 point

Can this be modified for RGB LED strips ?

  Are you sure? yes | no

Tom Clement wrote 05/07/2015 at 22:36 point

Absolutely, you'd just need to add two additional MOSFETs, two pulldown resistors, and one extra terminal block, and hook them up to e.g. GPIO 12 and 14 just like the current one is connected to GPIO13. Since most homes will have 1 channel warm-white LED strips, this design doesn't include 3 channel output, but the ESP can definitely handle it.

I'll focus on sharing the software first, and getting some assembly pictures when the boards arrive from China. Afterwards, perhaps an RGB version would be cool to do.

  Are you sure? yes | no

RiRomain wrote 09/07/2015 at 11:43 point

I've made a RGB controller on a perfboard and just ordered the PCB equivalent on DirtyPCB.

Here is a link to the board:

I've not received it yet so I cannot guaranty that there is no mistake on it... Also I've replaced the FDS8896 with some IRLZ44N (TO-220 package).

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates