GxEPD2 powerOff Current Draw

Hello, @ZinggJM I saw your post here about higher than normal power draw after using powerOff() or hibernate(). You mentioned the need to close the SPI connection, and I saw that you released a version (1.5.2) that handles this (which I am using).

However, I still see a ~7ma current draw from the display after running powerOff. The 7ma goes away when I unplug the display from my ESP8266. What additional steps do I need to take/implement for the current draw to drop to the advertised <1uA? You only mentioned looking at the resistor on the diagram but I am lost as to how to proceed knowing that information. Is it a matter of replacing that resistor or should I look into some power-switching circuitry to disconnect Vcc completely? This is going to be battery operated so it is crucial that I get the power draw down to advertised

@XLVision, hi, welcome to the forum!

If you give complete information about your setup, devices used (links) and their interconnection, then I may be able to give an answer.

Please also read How to get the best out of this forum.

I use a wemos d1 mini that I put into deep sleep after I do what is necessary to turn off display. I have the 5.65” wave share 7 color display and use the recommended wiring for the d1 mini in your spiffs example on GitHub

You would need to be more specific. You could post your code.

Do you call display.end() before putting the ESP8266 to sleep?
I don't know if ESP8266 releases all pins during sleep.

The "clever" reset circuit of the Waveshare board switches off VCC completely, if RST isn't pulled high. But any connected active high data pin will supply current through the protection diodes of the level converter chip.

That's all I am willing to provide. I hate the "clever" reset circuit of Waveshare boards and HATs.
For low power use with 3.3V processors I recommend the DESPI-C02 connection module.

Sorry I should have clarified, I am trying to figure out what is necessary to turn off the display. Right now I just call display.hibernate() but I will try display.end() later today.

Here is my setup() function. All of the methods referenced are from the WiFi example on your GitHub.

  Serial.begin(115200);
  Serial.println();
  Serial.println("GxEPD2_WiFi_Example");

  //display.init(115200); // default 10ms reset pulse, e.g. for bare panels with DESPI-C02
  display.init(115200, true, 2, false); // USE THIS for Waveshare boards with "clever" reset circuit, 2ms reset pulse


  if (!WiFi.getAutoConnect() || ( WiFi.getMode() != WIFI_STA) || ((WiFi.SSID() != ssid) && String(ssid) != "........"))
  {
    Serial.println();
    Serial.print("WiFi.getAutoConnect() = ");
    Serial.println(WiFi.getAutoConnect());
    Serial.print("WiFi.SSID() = ");
    Serial.println(WiFi.SSID());
    WiFi.mode(WIFI_STA); // switch off AP
    Serial.print("Connecting to ");
    Serial.println(ssid);
    WiFi.begin(ssid, password);
  }
  int ConnectTimeout = 30; // 15 seconds
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
    Serial.print(WiFi.status());
    if (--ConnectTimeout <= 0)
    {
      Serial.println();
      Serial.println("WiFi connect timeout");
      return;
    }
  }
  Serial.println();
  Serial.println("WiFi connected");

  // Print the IP address
  Serial.println(WiFi.localIP());


  showBitmapFrom_HTTP_Buffered("192.168.1.196", "/api/today", 0 , 0, true);

  display.hibernate();
  ESP.deepSleep(20);

I discovered the issue. It turns out all of the ESP's pins get released to their default boot states (held high/low) when it goes into sleep mode. I disabled sleep and just held the pins low and the current dropped to 0. Of course, the ESP is still on consuming power so I think I will need to setup a transistor to turn the display on and off. Thanks for your help!

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