3

I have found a number of other posts from people with the same problem but I can't find an answer.

I have a small batch of ESP-01 boards, sold by Inland, and I wish to use deep sleep mode on them.

I soldered a small copper wire from pin 8 (i.e. GPIO 16) to RST. On one board I soldered it directly, on another I soldered pin 8 and RST to two sides of a 2 pin header so I could use jumper in case I wanted to disconnet GPIO 16 from RST.

I am flashing the following simple code (using Arduino IDE 1.8.12), which is about the simplest test of the deep sleep mode that I can think of.

void setup() 
{
   Serial.begin(74880);
   Serial.setTimeout(2000);

   while(!Serial) { }
  
   Serial.println(
     "I'm awake, but I'm going into deep sleep mode for 15 seconds");

   ESP.deepSleep(15e6); 
}

void loop() {
}

On starting the serial monitor shows

ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 3664, room 16 
tail 0
chksum 0xee
csum 0xee
v39c79d9b
~ld
I'm awake, but I'm going into deep sleep mode for 15 seconds

After 15 seconds the serial monitor shows

ets Jan  8 2013,rst cause:2, boot mode:(3,6)

and nothing else. After that the thing hangs and nothing further happens.

So, it appears that the setup runs, the serial monitor prints the message, the mc goes into deep sleep, after 15 seconds it wakes up by a reset, but doesn't go through set up again, hence doesn't print the message or go back sleep.

Here are some comments. The problem has nothing to do with Wifi, MQTT etc, I have tried many fancy sketches using all of these, I have same problem no matter what, the above sketched is my distillation to the simplest demonstration of the deep sleep problem.

I have flashed the program with Arduino IDE, Platform IO, and esptool.py from a command line. It doesn't make a difference.

There may be a problem with my soldering job, but I'm pretty good at soldering and SMD rework, and I have repeated the job on a number of these ESP-01 modules, inspected and tested with multimeter, etc. all with the same outcome.

I don't see a problem with my code or IDE, I have a batch of Lolin Nodemcu boards, and this sketch works perfectly on all of those. In that case I simply connect GPIO 16 to RST with a jumper wire, the program prints the message, sleeps for 15s, wakes up, prints it again, goes back to sleep for 15s more, etc. etc.

Are these just bad boards? I have read some things that say the flash chips might be lousy, and if I replace those it might help? I'm tempted to trash these boards and buy some D1 mini's, but I've seen a number of posts from people who say they've had the same problem with D1 minis. If the board is the problem, are there any recommendations for manufacturers or vendors that sell better quality?

9
  • 1) Do you happened to have anything connect to reset pin, for example, from the USB-TTL serial adaptor? 2) Try to use CH_PD instead of RESET pin to see if it works? For CH_PD, it will depends on whether you have ESP-01 or ESP-01S (which already has a pull resistor on CH_PD). – hcheung Sep 22 '20 at 3:22
  • 1
    while(!Serial) { } does nothing on esp. why do you have Serial.setTimeout(2000);? let the esp start completely before going to sleep. I guess it is still in process of autoconnecting to last remembered AP. – Juraj Sep 22 '20 at 5:33
  • @hcheung The board is an ESP-01, not an ESP-01S. I'm programming it with a simple USB-TTL flasher also sold by Inland, plugged into the USB port of my Macbook. When the board is plugged into the flasher the RST pin is pulled up to 3v3 by a 12K resistor. So I should try connecting GPIO 16 or CH_PD instead of RST and see what happens? – RobT Sep 22 '20 at 5:54
  • @Juraj Good question! I"m not sure, I copied the code since I'm not quite sure what I'm doing. I commented out the lines with while(!Serial)... and Serial.setTimout.... and the result didn't change. As I mentioned, I can run the exact same sketch on several ESP8266 Nodemcu boards and it works fine, so I figured the problem wasn't with the software. – RobT Sep 22 '20 at 5:57
  • I need to amend one thing: I said "after 15 seconds it wakes up by a reset, but ....". This isn't totally clear. As an experiment, I ran the sketch on a nodemcu board (where it works perfectly), but I did NOT connect GPIO 16 to RST with the jumper. The result is exactly the same it goes to sleep, then after 15 seconds prints ets Jan 8 2013,rst cause:2, boot mode:(3,6), and nothing else, and then hangs. In other words the ESP-01 board is behaving exactly as if GPIO 16 is NOT connected to RST. – RobT Sep 22 '20 at 5:59
3

Not necessarily an answer, but something to look at: check the Manufacturer ID of the Flash on your board. My suspicion is that when some Flash chips come out of suspend, they're in lower drive mode than on initial power-up. At least one person fixed his 'zombie mode' by replacing the Flash with a different vendor. Nobody else has attempted it yet.

I have an Inland ESP-01S that's reporting MID = 0x5E (supposedly Zbit) and it comes out of Deep Sleep repeatedly. Here's all of the Manufacturer IDs I know of or have seen:

Winbond EF GigaDevice C8 Puya 85 Bright Moon 53 BergMicro E0 XMC 20 XTX 0B Eon 1C Shanghai Fundan A1 Macronix C2 Hua Hong Zhixin 68 ISSI 9D Paragon E0 (same as Berg - oopsie or clone?) Zbit 5E Zetta BA

esptool.py --port /dev/ttyUSB0 flash_id (linux) esptool.py -p COMx flash_id (Windoze)

Note: the cheap D1 Mini boards with no-name ESP-12F modules flooding eBay, Aliexpress and other places report XTX Flash, and they have a 5.6K pull-up on EXT_RSTB which will shorten the RST pulse from GPIO16, as well as making it hard to hit the level to be detected as a LOW due to the series 470 ohm resistor. We're unsure whether it's the Flash or the low value pull-up (typically 10 or 12K on other boards/modules) that's causing issues with those boards. Normally if RST isn't seen as LOW after Deep Sleep then you'll get an "ets_main.c" message at boot before it hangs.

I have a clone D1 Mini Pro that has a Flash that reports MID = EF (Winbond), although the marking on the Flash is nothing I can find on Winbond's site, only on places selling cheap Flash. Luckily the D1 Mini Pro also exits Deep Sleep successfully.

1

I have come to the conclusion that these boards are bad. I wrote a simple sketch that turns an LED on for 3 seconds, then goes into deep sleep for 12 seconds, then wakes up. I have a batch of 3 Lolin ESP8266 nodemcu boards and the sketch works fine on all of them. The LED goes on for 3s, then goes off for 12s, then goes back on, etc. Furthermore using an ammeter I measure a current draw of around 80 mA while the LED is on, and around 4 mA while it's off, repeatedly.

However --- I have another batch of five ESP-01 boards. I soldered a fine copper wire to GPIO 16 and to the reset pin, used the same code, same set up, power supply, LED, etc. The light goes on for 3s then goes off for 12s, then comes back on and stays on and then there is no further change. Furthermore, the current draw during the first 3s is around 80 mA, but when the light comes back on and the controller hangs, the current draw is around 40mA.

Incidentally, I tested the nodemcu boards,the ones that work fine, with this sketch but disconnecting the jumper from GPIO 16 or RST, and it behaves exactly the same as the ESP-01 boards, including the 40mA current draw in the zombie state. So it would appear that the problem on the ESP-01 boards is that the GPIO 16 pin is just not connected to RST. However I have soldered all five of these things multiple times, and I have become pretty darned proficient at soldering that little pin, and I am 99.999999% sure that I have the wire soldered to the pin, with no bridges, didn't fry anything, etc.

1
  • I was wrong: I have an Inland ESP-01. The package was marked ESP-01S... Yep, I got screwed. There's no pull-up resistor on EN, GPIO0 or GPIO2, and GPIO15 is shorted to GND on the board which is generally a Bad Idea with a GPIO. Looks like a 12K resistor to 3V3 and possibly a .1uF cap on RST. It works OK with Deep Sleep as long as it's in that USB converter board, I'd have to attach the program mode resistors to get it to run free-floating. Here's a photo of what Inland is selling marked as "ESP-01S": i.imgur.com/2OFr8r9.jpg Yeah, NOT! Don't buy it if you're expecting ESP-01S. – Krazy OldGuy Dec 19 '20 at 21:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.