Introduction: ESP-12E and ESP-12F Programming and Development Board

About: Engineer, retired. Have always had an interest in electronics, often related to radio control. This evolved into a part time business that I still practice. I do some voluntary work in schools to encourage …

The remit for this board was simple:

  • Be able to program ESP-12E and ESP-12F modules as easily as the NodeMCU boards (i.e. no need to press buttons).
  • Have breadboard friendly pins with access to the usable IO.
  • Use a separate USB to serial converter so the board has no additional current drain and can be tested as close as possible to the end application, especially with respect to sleep current.

The unit here could be made using a breadboard and spreading out the pins of a 2mm pin header to bridge between the ESP12 and the breadboard, as shown in other instructables. However a PCB module is neater and faster to connect. So if you have the gear to make PCBs - grab the artwork attached and knock up one of these.


  • 2mm pin-strip (2x8 ways)
  • 2.54mm right angle pin-strip (12 ways + 2off 3 way)
  • Horizontal 3 way 2.54mm socket – e.g. Farnell 1593474
  • 2 off BCW32 or other SOT23 format NPN transisitor.
  • 4 off 10k 0805
  • 2 off 22k 0805
  • 0.1uF ceramic 0805
  • 6mm tactile switch (through hole)
  • PCB made to attached artwork.

Step 1: Description

The NodeMCU programming system uses the serial RTS and CTS lines to drive the reset and GPIO0 pins to set the programming mode. A couple of NPN transistors are used. When DTR is high and RTS low the Reset pin is pulled low. When DTR is low and RTS high GPIO0 is pulled low. The programming software drives the DTR and RTS pins as required to put the ESP12 in to flash mode.

Circuit diagram:

A FTDI USB to serial converter is used as it has the lines required on one side. Hence one just has to add some pin headers.

When programming ESP12 modules on this breakout board one either selects NodeMCU V1.0 as the board in the Arduino IDE or if using Generic ESP8266 then set Reset Method (in Tools) to nodemcu. You can then click download whenever you want to load your sketch. The board needs 3.3 power applied to the 3.3v and GND pins.

I built this to help develop my TicTac Super Wifi Analyser, but knowing that it will become my favourite tool for developing and testing ESP8266 systems using the ESP12 boards.

Step 2: Assembly

Download the attached ESP12 Programmer artwork.docx Print it out and check the board size is as noted. If not the adjust the size via right click, Size and Position.

I print artwork onto two pieces of tracing paper. I then overlay these to double the contrast and mask any small imperfections in the printing (I use a laser printer). I punch holes in the edge of the upper layer, place Sellotape across the holes, align and then press on the holes to stick. I have a UV exposure unit. I used to use a UV black light that worked fine with spray coated PCBs. I use weak sodium hydroxide solution (drain cleaner) to develop and Di-Sodium Peroxodisulphate Hexahydrate to etch. Take special precautions with the chemicals, especially the sodium hydroxide that attacks flesh instantly. You don't want this stuff in your eyes! I then expose again and develop to get rid of the film over the tracks and finish off with some immerse tin (quite expensive – and limited life). The latter step is optional, especially if you plan to solder the board before the surface gets too oxidised.

I solder components in height order. I place a SMD component, apply solder paste to one pin and solder this. I then do the same for the rest of the SMD components. Then I apply paste to all the unsoldered pins and then go around and solder these.

I did not push the 2mm pin-strip all the way in - but just enough so the pins protruded by around 1mm. When done the plastic bar can be pushed down to the board level. This saves having to trim them and allows the ESP12 aerial to be a mm further away from the FTDI connector.

If you have problems getting the Horizontal 3 way 2.54mm sockets you could use Arduino socket strip and epoxy it flat and solder to one set of pads. If so link the pairs of pads as necessary so the sockets connect to the circuit.

Lastly solder the 12 way right angle 0.1" pin-strip and label as below:

On the FTDI module solder 2 off 3 way right angle pin strip as below:

Step 3: How to Use

Start the Arduino IDE (download and install from if necessary) and add the ESP board details if you don’t have them (see: Sparkfun).

Load your code.

Then set the programming details (Tools):

Select board: Generic ESP8266 Module or NodeMCU v1.0 (ESP-12E Module). The former gives more options. See below for the rest of the settings. The Port number is likely to be different. Click PORT to see which one appears when the FTDI module is connected.

Now power the board with 3.3v to the 3.3v pin and connect GND. Plug in the FTDI USB to Serial converter. Now you can program the board just by clicking the download button. After you have done this a few times you will see the value of this little board.

I used this to develop my TicTac Super Wifi Analyser

I hope you find this useful.