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
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!