Which esp8266 for 20uA in deep sleep?

Hello,

When I first read that esp8266 could reach 20uA (and even less) in deep sleep mode, I realized it was not possible to reach such a low intensity for all of them.
At that time, I had a 8266 NodeMCU and I could only reach 10mM at best. After reading a bit, I understood why.
I also had an ESP-01, but when I realized the soldering I had to do to wake it up, I gave up with this one. I don't have any talent for soldering.
So I know I need to have the GPIO16 accessible. I'm pretty sure the 12F could be a good option. Could you please give me any advice or a reference (on Amazon for example) to make sure I'm choosing the right one this time.
What about these guys:

or

Thank a lot for your help
Laurent

Why?

I found that deep sleep current at 12 mA is due to DC-DC switching regulator (10 mA) and flash (2 mA)

From your reading are those internal to the ESP8266?

The NodeMCU doesn't have a switching DCDC converter.
Also, when entering deep-sleep, the FLASH-ROM consumes almost no current.

It is possible that the NodeMCU has not been deep-sleeped correctly.
This board can be able to reduce standby current to μA-order.

Yes, sorry, you're right. It was actually for the ESP32.

I might have done something wrong. But I read a few articles where people also had 10mA in deep sleep mode.
My sketch is basically getting values from different sensors, connecting to wifi to send data to a server via ftp (based on the SurferTim's FTP code (Arduino Playground - FTP)). It is pretty long and I don't want to bother you with that. Actually, I used a simple sketch I found on the web which just blink the led on the esp, and even with this one, I had 10mA in deep sleep mode :

#include <ESP8266WiFi.h>

// Edit "secret" ssid and password below
const char* ssid = "XXXXXXX";
const char* password = "XXXXXXXXXXX";
int count = 0;

void setup() {
  disableWiFi();

  pinMode(2, OUTPUT);  // GPIO02 on ESP-12 module is linked to on-board LED
  Serial.begin(9600);
  delay(10);

  wakeupWiFiModem();
  connectToWiFi();
}

void loop() {
  if (WiFi.status() == WL_CONNECTED) {
    blink(5);
  }

  sleepAndWakeupWithRadioDisabled();
}

void disableWiFi() {
  WiFi.mode(WIFI_OFF);

  WiFi.forceSleepBegin();
  delay(1);

  return;
}

void wakeupWiFiModem() {
  WiFi.forceSleepWake();  // wakeup WiFi modem
  delay(1);

  WiFi.mode(WIFI_STA);

  WiFi.begin(ssid, password);

  return;
}

void connectToWiFi() {
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    count++;
    Serial.print(".");

    if (count > 20) {
      Serial.println("WiFi connection failed");
      break;
    }
  }

  if (WiFi.status() == WL_CONNECTED) {
    Serial.print("WiFi connected. IP address: ");
    Serial.println(WiFi.localIP());
  }
}

void blink(int count) {
  for (int i = 0; i < count; i++) {
    Serial.println("BLINK");
    digitalWrite(2, HIGH);
    delay(1000);
    digitalWrite(2, LOW);
    delay(1000);
  }
}

void sleepAndWakeupWithRadioDisabled() {
  Serial.println("Deep sleeping for 5 seconds...");
  Serial.println("Wakeup without WiFi next time");

  WiFi.disconnect(true);
  delay(1);
  ESP.deepSleep(5000000, WAKE_RF_DISABLED);  // radio disabled after wakeup
}

Any idea what's wrong? I really need this project to go fast and I'm blocked here.
Thanks so much for your help

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.