Introduction: IOT123 - D1M ESP12 - Assembly

About: The tension between novelty and familiarity...

The ESP8266 development board is a good go-to board for your IOT projects, but presents problems if they are battery powered. It is well documented how the various ESP8266 development boards are not power efficient (here and here). The Witty Development Board overcomes some of the problems by having a separate USB to TTL (programmer interface) but does not have the same shield support of the D1 Mini.This D1M BLOCK breaks out the ESP12 with the Wemos D1 Mini pin contract, and is built with with no regulation or a MCP1700 regulator.

This is a fiddly circuit build and good for a proof-of-concept or low number requirements; I will follow-up with a simpler PCB version.

NOTE: for the non-regulated build:

  1. The ESP12 operating voltage is reported as 3.0~3.6V
  2. Some makers report successfully running projects unregulated on 3.7V LiPo batteries (3.3 to 4.2V)
  3. Looking at the current draw table above from you will see there is a false economy not using a regulator when deep sleep is employed.
  4. The unregulated build is provided, but I suggest not using deep sleep and be aware of the voltage range applied to 3V3.


  • 2018-02-15 - Initial Release
  • 2018-02-19 - pullups added to I2C (D1/D2)
  • 2018-02-22 - pulldown changed from IO2 to IO15, 2mm pitch male headers used instead of tinned wire.

Step 1: Materials and Tools

There is a full Bill of Materials and Sources list.

  1. The Wemos D1 Mini Protoboard shield and long pin female headers
  2. ESP12F Module
  3. 10K resitors (2)
  4. 4K7 resitors (2)
  5. MCP1700 (0 or 1)
  6. 100nf Capacitor (1)
  7. 2mm pitch male header (1*1P, 3*2P, 1*5P)
  8. 3D printed Base and Lid, and labels
  9. A set of D1M BLOCK - Install Jigs
  10. Hot glue gun and hot glue sticks
  11. Strong Cyanoachrylate Adhesive (preferably brush on)
  12. 3D Printer or 3D Printer Service
  13. Soldering Iron and solder
  14. Tinned wire

Step 2: Assembling the Circuit

As previously suggested, this is a fiddly build using a protoboard shield. A PCB will be developed.

A. Resistors, from the underside of the protoboard:

  1. Thread a 10K resistor into RED1 and RED2 and solder RED1.

  2. Thread a 10K resistor into RED3 and RED4 and solder ends.

  3. Thread a 4K7 resistor into RED5 and RED6 and solder ends.

  4. Thread a 4K7 resistor into RED7 and RED8 and solder ends.

B. 2mm male headers, from underside of ESP12

  1. Add male headers into GREEN (1 - 12) and solder ends on topside; leaving gaps where shown (for resistor wires later).
  2. Remove resistor wire from RED2
  3. Remove plastic spacer from pins
  4. Bend the pins to line up with topside protoboard:
    1. TXD0 to TX
    2. RXD0 to RX
    3. IO0 to D3
    4. IO2 to D4
    5. GND to GND
    6. RST to RST
    7. ADC to A0
    8. IO16 to D0
    9. IO14 to D5
    10. IO12 to D6

    11. IO13 to D7

    12. VCC to 3V3

C. Joining Protoboard (topside) to ESP12 (underside)

  1. Thread RED1 into EN and leave loose

  2. Thread RED3 into IO15 and leave loose

  3. Thread RED5 into IO4 and leave loose

  4. Thread RED7 into IO5 and leave loose

  5. Join bent pins from B#2

  6. Carefully press board to 2mm from one another and parallel/equidistant.

D. Soldering joined boards on protoboard underside

  1. Pins exiting through holes can be soldered and cut
  2. Resistor lead from RED2 can be aligned with 3V3 pin, cut and soldered

E. Soldering joined boards on ESP12/protoboard topside

  1. Wires exiting IO15, IO4, IO5 and EN can be soldered and cut excess.
  2. Pins exiting top can be retouched in case of cracked joints.

F. Adding remaining components on Protoboard (topside)

  1. Add capacitor through hole PINK1 and onto joint on PINK2 and solder leaving excess through PINK1

  2. If regulating:
    1. Add regulator to PINK3,4,5 with curve of plastic package facing 3V3 on the protoboard

    2. On underside of protoboard, bend leg from PINK3 to RED2, RED8 and RED6, soldering

    3. On underside of protoboard, extend leg from PINK4 to YELLOW16, soldering on YELLOW16.

    4. On underside of protoboard, bend leg from PINK5 to PINK1, and solder.

    5. Route LEG leaving YELLOW15 to leg leaving PINK5 and solder.

NOTE: Use a continuity tester on a multimeter to ensure wires are not bridged throughout build.

Step 3: Soldering the Header Pins (using the SOCKET JIG)

There is a video above that runs through the solder process for the SOCKET JIG.

  1. Feed the header pins through bottom of the board (TX top-left on the top side).

  2. Feed jig over plastic header and level both surfaces.

  3. Turn jig and assembly over and firmly press header onto a hard flat surface.

  4. Press the board down firmly onto the jig.

  5. Solder the 4 corner pins using minimal solder (just temporary alignment of pins).

  6. Reheat and re position board/pins if needed (board or pins not aligned or plumb).

  7. Solder the rest of the pins.

Step 4: Gluing the Component to the Base

Not covered in the video, but recommended: put a large dob of hot glue in the empty base before quickly inserting board and aligning - this will create compression keys on either side of the board. Please do a dry run in placing the shields in the base. If the gluing was not very accurate, you may need to do some light filing of the edge of the PCB.

  1. With the base casing bottom surface pointing down, place the soldered assembly plastic header through the holes in the base; the (TX pin will be on side with the central groove).
  2. Place the hot glue jig under the base with the plastic headers placed through its grooves.
  3. Sit the hot glue jig on a firm flat surface and carefully push the PCB down until the plastic headers hit the surface; this should have the pins positioned correctly.
  4. When using the hot glue keep it away from the header pins and at least 2mm from where the lid will be positioned.
  5. Apply glue to all 4 corners of the PCB ensuring contact with the base walls; allow seepage to both sides of the PCB if possible.

Step 5: Gluing the Lid to the Base

  1. Ensure the pins are free of glue and the top 2mm of the base is free of hot glue.
  2. Pre-fit the lid (dry run) making sure no print artifacts are in the way.
  3. Take appropriate precautions when using the Cyanoachrylate adhesive.
  4. Apply Cyanoachrylate to the bottom corners of the lid ensuring coverage of the adjacent ridge.
  5. Quickly fit the lid to the base; clamping shut the corners if possible.
  6. After the lid is dry manually bend each pin so it is central in the void if necessary.

Step 6: Adding the Adhesive Labels

  1. Apply pinout label on underside of base, with RST pin on side with groove.
  2. Apply identifier label on flat non-grooved side, with the pins void being the top of the label.
  3. Press labels down firmly, with a flat tool if needed.

Step 7: Next Steps

  1. Program your D1M BLOCK with D1M BLOCKLY
  2. Upload with the D1M CH340G BLOCK
  3. Check out Thingiverse
  4. Ask a question at the ESP8266 Community Forum