The solder pads are on a 2mm pitch, so they are often used with a breakout board to adapt them to 0.1" pitch for breadboard or perfboard, etc. That adds cost and increases the size somewhat because the through hole pins need to be outside the perimeter of the module. I solved the problem another way, by using a 3D printed wire guide that routes wires from the 0.2mm pitch holes to the nearest 0.1" hole, minimising the space used and costing virtually nothing.
The holes in the module are quite small so I use stripped wire wrap wire. I push it through the module, down through the guide, which routes it to the correct hole in the perfboard. I fold the top over, solder it to the module and trim it. I do the four corners first and pull them tight and solder underneath to secure the module.
Here is a module mounted on perboard.
It doesn't use any extra board space outside the 0.1" holes it uses. I.e. the adjacent holes are all usable.
I didn't break out the end connections because they are not very useful. They are all GPIO lines used internally for the flash. I read it is possible to free up two by removing the can and re-configuring the flash chip to use a two bit interface instead of four bits, but that is too much hassle for me.
Here is the OpenSCAD that produced the adapter: -
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// GNU GPL v2 | |
// nop.head@gmail.com | |
// hydraraptor.blogspot.com | |
// | |
// Adapts ESP12 module to 0.1" grid. | |
// | |
eps = 1/128; // small fudge factor to stop CSG barfing on coincident faces. | |
layer_height = 0.25; // slicer layer height | |
extrusion_width = 0.5; // slicer extrusion width | |
nozzle = 0.45; // extruder nozzle aperture | |
squeezed_wall = extrusion_width - layer_height / 2 + nozzle / 2 + extrusion_width / 2; | |
module ESP12F_carrier_stl() { | |
pins = 8; | |
pitch1 = 2; | |
pitch2 = 2.54; | |
hole = pitch1 - squeezed_wall; | |
hole2 = pitch2 - 3 * extrusion_width; | |
length1 = (pins - 1) * pitch1 + hole + squeezed_wall * 2; | |
length2 = (pins - 1) * pitch2 + hole + squeezed_wall * 2; | |
height = 3; | |
wpitch1 = (pins - 1) * pitch1; | |
wpitch2 = ceil(wpitch1 / 2.54) * 2.54; | |
width1 = wpitch1 + hole + squeezed_wall * 2; | |
width2 = wpitch2 + hole2 + squeezed_wall * 2; | |
difference() { | |
hull() { | |
translate([0, 0, height - eps / 2]) | |
cube([width1, length1, eps], center = true); | |
translate([0, 0, eps / 2]) | |
cube([width2, length2, eps], center = true); | |
} | |
for(side = [-1, 1]) | |
for(i = [0 : pins - 1]) | |
hull() { | |
translate([side * wpitch1 / 2, i * pitch1 - (pins - 1) * pitch1 / 2, height]) | |
cube([hole, hole, eps], center = true); | |
translate([side * wpitch2 / 2, i * pitch2 - (pins - 1) * pitch2 / 2, 0]) | |
cube([hole2, hole2, eps], center = true); | |
} | |
} | |
} | |
ESP12F_carrier_stl(); |
The only notable thing is the squeezed wall definition, see my previous post.