The hardware is pretty simple and basically composed by an ESP8266 (ESP12 or ESP12E) controlling 3 MosFet (IRLZ44N N-Channel HEXFET Power MOSFET) to drive the common anode RGB Led Strip (common +12V, almost all RGB strip are common anode). The board is also equipped with a tiny reset push button and expose GND, RX, TX and GPIO0 PIN to flash the board.

The PCB for this project can be order at dirty pcb, or any other pcb factory by using the provided Gerber file.

The complete eagle schema and board is available on GitHub so feel free you want to make modification/improvement, you can create a merge request to integrate your improvement to the current project.

Required hardware list:

  • 1xESP8266 ESP-12 or ESP-12E
  • 6x10kΩ 0603 resistors
  • 3xIRLZ44N Mosfet
  • 1xDC JACK for power in (cable can be solder directly)
  • 1xMini Push button for the reset (SWITCH-MOMENTARY-2SMD-1101NE)
  • 1×4 pin header for the RGB output (or solder the RGB strip with cable directly to the PCB)
  • 1×XM1584 3A Step Down Module (don’t forget to set it to 3.3v before soldering it to the PCB!! Or at least solder the ESP after setting up the step down module to 3.3v)
  • 1x12V power supply – Choose according to how much RGB led you want to connect + a little bit power for the ESP8266.
  • Common anode RGB Led Strip

You can find the hardware in one of my Ebay collection.

  • Pingback: Get you started | ESP8266 RGB Strip Control()

  • Marcin

    If you still visit this site, I would to ask you 2 questions. First, how much maximum current it will stand? (is it 49 ampers for each channel , like they write in the datasheet of IRLZ44N?) And next question is for how long RGB Strip it will corresponds? (for example SMD 5050 / 60 LEDs Per Meter which uses 14,4 W/m). Thaks for your project 🙂 I’ll use it soon 😉

    • rominou1987


      Yes the website is still active and I’m preparing a second version for RGBW strip based on the digistump oak (but it will still need a few month to be ready).

      Concerning the RGB strip you can use any 12V RGB strip with common anode (the most common type, common cathode are pretty rare to come by), so basically one positive, and a negative per channel.

      If the strip is 30, 60 or even 120 leds per meter it will work the same way, it’s just that the more led/meter, the less meter you can use before you reach the maximum current.

      And yes it is 49 ampers per channel, but you’ll have to add some heatsink if you want to use the full 49ampers per channel. And I would discourage to use the maximal current, has you’ll have a lot of voltage drop on such a long strip.
      For a 60Led/meters that would be 0.4 ampers/meters/channel. So theoretically 122 meters at full power with a 150A power supply (at least 300$!).

      Using a 5 meters strip with 60led/meters is not a problem(6A in total, 1.5A per channel) , if you want to be on the safe side, add a heatsink to the mosfet.

      Over 5 meters with 60led/meters (or 10 meters of 30l/m), I would do a test to check the temperature of the mosfet after a few hours, to see if they stay in the recommend temperature range. If not, increase the heatsink size until they do.

      For the heatsink, any heatsink for TO-220 will do. (for example: TO-220 Heatsink)

      Don’t hesitate if you have any more question, and you can check Adafruit tuto about RGB strip current draw for more (and maybe clearer) information:
      Adafruit – RGB Led strip current draw

      Thanks for the comment 🙂

  • Thomas Nilsen

    Thanks for the work you’ve done. I have just ordered a set of the PCB. However, the link to your ebay collection seems to be invalid.

    • rominou1987

      No problemo 🙂
      Thanks for the info, it seems that ebay collection are limited in time… anyway I ordered most of the component on Aliexpress, if you have trouble to find any of the component, just leave a comment and I’ll try to help.

      I’ll update the link later next week, have fun with the pcb 🙂

      Edit: I found time to edit the collection link right away, it should be working again. You’ll find the RGB strip there too.

  • Marcin


    I hope that maybe you can help me 🙂
    I found some time to make this project, but I have quite problem with flashing ESP at beginning. I searched for solving but tips at various forums which i found didn’t helped me. When I try to flash I have almost always this kind of warning:
    Sometimes is also info about busy port or some kind of long warning, but this one is probably the fault of the Arduino program.

    I flashed it once, but this was accidentally I think. After that i tried to connect RGB LED diode to check if it is really working and after it probably has reset by some floating wire or something, but it stoped working well. (it has replied by messages “Device is still running” in Serial monitor)

    Maybe you had problems like these at beginning? Or maybe you just know how to resolve these problems? If not, please just tell me how exactly I have to connect pins of ESP for flashing and after that for working, and how to flash step by step.

    I’m using this ESP-12E: http://www.aliexpress.com/item/New-version-ESP-12E-replace-ESP-12-ESP8266-remote-serial-Port-WIFI-wireless-module/32538980235.html
    and this USB to RS232 converter: http://www.aliexpress.com/item/Free-Shipping-1pcs-PL2303-USB-To-RS232-TTL-Converter-Adapter-Module-with-free-cable-PL2303HX/32246637820.html
    and Breadboard like this for testing: http://www.aliexpress.com/item/Free-Shipping-Breadboard-830-Point-Solderless-PCB-Bread-Board-MB-102-MB102-Test-Develop-DIY-new/2036165619.html
    and power supply is ATX converted like this: https://www.youtube.com/watch?v=z2oSFpKh_Uw (3.3V of course)

    • Touliloup


      This kind of error usually appear when you’re not in reflash mode.

      Make sure that:
      -CH_PD, GPIO2 are connected to some pullup resistor (10kΩ resistor connected to 3.3V).
      -GPIO15 is connected to a pulldown resistor (10kΩ resistor connected to GND).

      In addition to enter reflash mode, GPIO0 need to be connected to GND, RX to FTDI TX, TX to FTDI RX and GND to the FTDI GND. (FTDI refer to the USB to RS232 converter).

      Then, also very important, when you click on Upload in the Arduino IDE, when the Arduino just start to upload the code (after compiling), reset the board (by connecting RST pin from the ESP to GND.

      If your board keep sending “Device is still running” to the serial port, it means that the flash was successful and that the device is running properly.

      Also when connected to your computer, when you reset your board, you should see “Received IP address:” printed via serial with the IP address your board received. If this address is not correct (for example it means the board could not connect to the wifi. Make sure to change the value of WIFI_SSID and WIFI_Password to match your wireless network.

      Another thing that is probably wrong, your USB to Serial adapter most likely communicate in 5V via RX and TX, this might work for a few programming but is also likely to have killed your board…

      I would advise you to buy a new FTDI adapter on which you can set the voltage to 3.3v like this one:

      FT232RL: http://goo.gl/Hr2xF6

      Another problem could be the ATX supply that provide unclean 3.3V power under such few load (and especially without load on the 5V/12V ramp), you could tried to add a capacitor on the 3,3V and GND pin of your ESP (anything above 100uF 25V)

      I hope that all that will help. For further testing, and if you need to order something from Aliexpress, I’ll advise you to order a Wemos D1 Mini for testing, it already have a micro USB for reflash and integrated power supply so you won’t have trouble to reflash/power the board.

      I’m also developing some shield for the Wemos D1 Mini that I will be testing this weekend, those should be available within a few week and be under 10$ assembled if you don’t want the trouble (or want a complete solution for test before you make/test your own design).