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