ESP8266 packaging issues
One of the first challenges to overcome when you get a bare module ESP8266-12 SoC is how to connect this unit to a circuit. It comes without header pins and the pin pitch is less than the standard 2.54 used on solder-less and copper breadboards. Clearly, it is not ready to use out-of-the-box like, for example, any of the Arduino options.
My first circuit used a 16-pin DIP package with short jumper wires soldered between the ESP8266 pin holes and the DIP. This assembly was then plugged directly on a solder-less breadboard. While this gave me a quick start into the ESP8266 world, the setup was messy and even worse – unstable.
Disappointed and often frustrated by the poor performance of the setup, my next setup used a copper plated breadboard. The ESP8266 was mounted to the board using thin (28 AWG) bare wires. These wires were soldered between the ESP8266 through-holes and the breadboard pads. This was a vast improvement in terms of stability. I currently have a system that has been running for over 2 weeks now with no resets or system crashes. The real-time data collected with this system is displayed publicly on ThingSpeak for independent verification.
But with this setup, the tiny interface wires require a lot of time to initially assemble.
That’s where this adapter plate really shines…
Yes, it really made things easier when I stumbled upon a clean and inexpensive adapter for the ESP8266-7/12 modules. For just 28 cents (AliExpress), you get a PWB plate with pre-soldered mounting pads and a 10k pull-up connected to the chip enable (CH_PD).
A 10K resistor is also included that pulls-down GPIO15 to ground. This resistor is way to large to be of any value for that purpose. For proper boot operation, you must add a connection between GPIO15 and ground.
Finally, the fix is in – the pin labels for GPIO4 and GPIO5 have been corrected on this plate. No more confusion for that until now overlooked ESP8266-12 module design error.
The circuit has come together quite nicely. So far, it has proven to be a very dependable configuration. Boots without errors and flashes reliably the first time, every time. We shall see if this remains true as more the flash cycles are performed.
This begs the question… Why not mount all the parts on a plate like this & eliminate the original carrier board?
A few design considerations
- Notice the 0.1uF decoupling capacitor added close to the ESP8266 assembly. Positioning this essential capacitor there…directly across the ESP8266 VCC and Gnd pins, is absolutely critical for stable operation.
- The header pins were mounted backwards so the longer posts are facing upwards. This will be useful should it be necessary to connect female jumpers directly to any ESP8266 pin.
- The USB to serial adapter cable connections are split between two terminal sections. The right two terminals connect USB 5V and Ground. The left two terminals, serial transmit and receive, are only used when flashing the firmware. Once deployed, the left two terminals are disconnected and the 5V and ground connections are attached to a USB cable. This supports power sourced from a USB wall or car adapter as well as a USB battery.
- The ESP serial receive pin has a 100 ohm series resistor included from the serial transmit source. In addition, a 3.3V zener diode clamps the input voltage into the ESP8266. Many ESP8266 users omit these parts. This is not advisable. Exceeding the specified input range will likely degrade the system performance and possibly introduce hard to find latent defects! For long-term reliable operation, these common, readily available components should be included in every interface circuit.
- An AMS1117 voltage regulator converts the 5V to 3.3V for the ESP8266 supply. This is mounted on the breadboard copper side of the breadboard so the heat sink built into the regulator can be soldered to the board.
- To minimize instabilities from voltage ripple, two 470 uF capacitors are used, one across the 5V source and one across the 3.3V ESP8266 supply.
In my experience, while cheap, feature rich and full of promise, unwanted system resets, flash failures and crashes have been the curse when working with the ESP8266.
But there is hope…
This recently introduced adapter plate, along with the hardware interface features presented here will help mitigate these undesirable outcomes.
Hope you find this information useful…
A little tip!
On the bottom of the white PCB adapter you can solder the AMS1117 (SMD). The extra hole on the PCB can be connected to a power source. Then the Vcc pin has 3.3v.
Careful!!! The pads on the back of the carrier are not in the pin order of most AMS1117 or LM1117 regulators, specifically the center pad is Vin not Vout.
The regulator is a XC6206P332A better known as a 6206A in SOT89 package. Pinouts are from left Vss, Vin and Vout. You will have to remove the middle resistor on the board to get it to work.
I think that the regulator should be a XC6206P332PR in SOT89 package. On these from left to right is Vss, Vin and Vout
I recently watched a video where a HT7333 regulator was used with this board.
Yes, the HT7333 has a much lower quiescent current (4 uA as opposed to the 5 mA of the AMS1117). It's better suited for use with batteries since it drains significantly less energy.
2mm to 2,54mm adapter board
Thanks for sharing this information.
Nice blog first of all. i want to ask you some questions. i have ESP 8266 12e Wifi module, but somehow i am unable to download the program in my device. sometimes it is get uploaded, but due to some rst causes it is unable to run the output in my device. i’ve tried several methods and i have 3 Pcs of 12e modules and also FTDI232 and CP2102 programmers, and other required components, but i am still not successful to write the program and run the output in my wifi module. so please help me. and please send me a diagram and configuration information if possible to powerup my device, to flash the firmware, and to run the device and see the output. i have nodemcu flasher and espflasher both, and also have ESPlorer to run the device. i am stucked between. please help me out. thanks and regards.
Thanks for your comment.
Resets can be frustrating. Fortunately your 12e module includes input pull-ups, a power supply voltage regulator and serial link level shifters. My typical setup shown in this post required these components to be added. Of course, the sensors on the left side of the schematic or not necessary for ESP8266 operation.
Here are a few things I would be sure to include to eliminate the possibility of undesirable module resets.
1. Make sure you use a PWB with soldered connections for your circuit. DO NOT use a white breadboard with jumper wires as they are vulnerable to intermittent connections; resulting in resets.
2. Use a large (470uF or larger) capacitor across the input power rails on your PWB. While the 12e can accept a range of input voltages, I assume you are using a 5V supply, probably from your USB to serial device.
3. In addition to the pull-up resistor connected to your reset pin, add a 0.1 uF capacitor from the reset pin to ground.
It is a good idea to start simple. Verify the basics are working first. You should make sure you can upload the basic AT firmware and verify you get the “OK” message out of the serial port before moving on to any other firmware uploads. My “Getting Started” article is here. Start with Step 3 as steps 1 & 2 are now obsolete.
I've written a detailed tutorial on how to get the ESP-12E connected through and Arduino UNO. Replacing the UNO with the FTDI232 is simple enough (if you need more instructions on this, I can help you).
Have a look and let me know if you need more help: https://www.instructables.com/member/Tstef/
Also, give us a few more details on the rst — what do you see exactly in the serial monitor?
How would you go about adding a power switch to this circuit? Where would you place it? Thanks.
It can be placed in series between the 5V USB cable output and the left 470uF capacitor or in series on either side of the LM117 regulator. I would not place a power switch after the 3.3V conversion as it could create circuit damaging transients.
If the USB power source is a battery, switch the power when it enters the circuit on the left so there is no current drawn when the switch is in the "power-off" position (open).
Thanks a lot.
Hi. Great Article. I had a weird experience today, where in my ESP8266-01 flashed with micropython suddenly wouldn't work when there was power outage for half an hour, and just after the power came back up. I suspect the power spike may have caused flash to go corrupt? All this seems like murphy's law to me, but I want to know if you have had similar experience. I have 0.1uF cap between Vcc and GND of 8266. I'm using external breadboard supply (https://www.amazon.in/Retails-Supply-Module-Arduino-Raspberry/dp/1838331301?tag=googinhydr18418-21&tag=googinkenshoo-21&ascsubtag=2053f763-8797-456a-bf57-f4fb2ec8f7e1) to power up my ESP.
I assume you also has a larger capacitor (470uF) across vcc/gnd where the external power wires enter your breadboard. The larger cap smooths out the effect of power disruption transients.
I did experience the flash going bad on an early breadboard setup, probably as result of a sloppy layout. I ended up getting a set of replacement flash memory chips and replacing the one that went bad. But as you can see in the following post, the root cause may have been from the messy layout.
"This begs the question… Why not mount all the parts on a plate like this & eliminate the original carrier board?"
I'm assuming this is because the 12S package is designed to be directly soldered onto other PCBs. And at times limited space is an issue, so this compact form factor is useful. In my project I use the 12S because I can't find another board less van 2cm in width.
Thanks for that valuable tip.