ESP8266 not responding with rst pin pulled high?


I've been struggling for a while now trying to hook up a reliable Connection with esp8266. My problem is that as soon as I pull the rst pin high the esp8266 stops responding. If i keep it floating it works for a while and then hangs. What I really would like to do is to keep the rst pin high using a pin on the arduino and then pull it low if I want to make a hard reset, but since the module doesn't resond when rst pin is pulled high I don't know what to do? Anyone with suggestion to why this is happening or any suggestion on how I can hook the esp rst to an arduino pin to toggle the reset pin?? Answers, suggestions or discussion is welcome!!

Hi Niclas73

Which ESP8266 module are you using? Most of them work on 3.3V, so if you are using a 5V Arduino (such as a Uno), you will need a level converter between them.

Can you post a diagram of how you have the Arduino and ESP8266 connected? A photo of a hand drawn diagram is ok.



VCC - 3.3V (Separate supply up to 1A) GND - GND (Common with Arduino) TX - RX (Arduino) RX - TX (Arduino) through voltage divider with 1k and 2k resistor to provide 3.3V at esp GPIO0 - 3.3V with 3.3k pull-up GPIO2 - 3.3V with 3.3k pull-up

CH_PD - 3.3V (Separate supply up to 1A) RST - 3.3V from Arduino D2 over voltage divider 1k and 2k

I was hoping to be able to Control the reset by pulling the D2 pin either high or low depending on if I want to "run" or reset...

I also added a 0.1uF tantalum cap on the VCC Close to the module...

Thanks, Niclas.

My problem is that as soon as I pull the rst pin high the esp8266 stops responding. If i keep it floating it works for a while and then hangs.

To eliminate the ESP8266, try disconnecting RST from the voltage divider and connect it to 3.3V through a pullup resistor. Does the ESP8266 run reliably or does it hang after a while?

And I'm sure you have it right :) but just to check, the voltage divider has the 1K resistor connected to the Arduino, the 2K resistor to GND with the ESP8266 connected to where the resistors join?

As soon as I connect rst with the pull-up resistor the esp stops responding, just a constant glow of the red diode. And yes the order of the resistors is correct :slight_smile:

Ok now it is up and running (bad soldering :-) ).... So now I have connected rst, and both GPIO to 3.3V with 3.3k pull-ups... Unfortunately it is very unreliable and only run for a couple of reguests before it hangs... I had the best result with rst, and both GPIO floating, but still not ok and I know that this is not the way to do it.... Do you have any other suggestions?

Sounds like you may, unfortunately, have a faulty ESP8266. I normally run with RST floating, but I have tried it with RST tied to 3.3V and there is no difference.

What firmware do you have on the ESP8266? The default AT command interface?

Yes, most recent default AT command interface.... The thing is that I have bought 10 modules on different occasions from different suppliers and they all act the same...flaky!

You are right - 10 modules all with the same fault sounds unlikely.

Are there other common factors? Are you using the same breadboard and jumpers to test them on? Same power supply?

Everything is soldered on a PCB ordered from DirtyPCB… I have nine more… Maybe I should make a new one?

Is the ESP8266 soldered to the PCB or plugged into a socket on the PCB?

Worth trying a different one. Sometimes PCBs come back with tiny traces of copper joining tracks or pads that should be isolated.

It is plugged in... I tried the same setup on a "real" arduino with the esp on a breadboard with it's own Power supply... Same result :-(

I saw Another thing when using the home made PCB. If I read a floating analog pin that is not connected to anything I get readings between 1.4-2.2V. When I i try the exact same sketch on the "real arduino" I get a constant value of 1.6V.... Does this mean anything regarding the PCB??? Don't know if this has anything to do with my problems???

Same result

Not working at all or works for a while and then stops?

Can you post the code you are running on the real Arduino?

I can provide a simple solution. The OP is right, I have tried it. It stalls. You may use an NPN BJT transistor to make a simple NOT gate like this . The pin to control the RST being connected to gate. The RST pin is connected to the collector. The emitter to GND. And use the gate connected pin as a pulse. The idea is that the RST pin must be left floating and not connected to 3.3V.

Oh. After I have tried it, it seemed not to be working perfect. For instance do not choose D7 (NodeMCU pin) because D7 likes to be "load supplying" (believe me, it is like so, when there is a load it supplies it, when there is no load it is probably floating or 0V) when the esp8266 turns on. This means you won't have the chance to set D7 to Low (remember we're using NOT gate) because you will be activating RST right at first. A workaround is to use one of the 2 pins "Tx" or "Rx" (which are D10 and D9 on NodeMCU) with 2 successive NOT gates. That is because these 2 pins like to be 3.3V right when the NodeMCU is turns ON.

Finally, finally, I believe the best solution is not to use the NOT gate at all. It is to connect either the Tx or Rx pins in series with 1K (not 10K) resistor and to the RST pin right away.

For me ESP8266 works best if I connect 33kOhm between RST and GND. With RST floating the ESP8266 is unstable. To actually invoke the reset function RST has to be shorted to GND. I have not tested it, but I would try the NOT transistor suggested above in parallel with 33kOhm.