lowest power m5paper?
-
hello
m5paper's display does not need power to keep displaying... i only want to update the info on screen every so often (e.g. every 10s)
i am using the light sleep right now:
gpio_hold_en((gpio_num_t)M5EPD_MAIN_PWR_PIN); esp_sleep_enable_timer_wakeup(10 * 1000000); esp_light_sleep_start();
i read somewhere that the power to the screen can be disabled with M5.disableEPDPower(). that seems to work but how do you get i back on? there is M5.enableEPDPower() but that doesnot seem to be enough?
also: i have a gps attached and i see that that is still powered. is there a way to power down port.C?
any other things that can be powered down?
when this all works and is still nog good enough i will try to store state in eeprom and actually power down...
thanks
frank -
Hello @frank_b
Re enable power to the screen: what do you mean
M5.enableEPDPower()
isn't enough?Re Groove ports: you can only turn off all three ports together. Try
M5.disableEXTPower()
.BTW: Only fully powering down M5Paper will give you
lowest
power. At the time I did some measurements. You can find them here.Thanks
Felix -
@felmue said in lowest power m5paper?:
M5.disableEXTPower()
hi felix,
turning off external power works. great!
about turning back on the screen, please see code and screen pictures below. without M5.disableEPDPower() and M5.enableEPDPower() it all works nicely. with turning on/off the screen i do see sort of that it is running but the screen does not "work" properly - i.e. i do not see the number increasing. (and "the noise" is getting worse over time). what am i doing wrong?
thanks
frank#include <M5EPD.h> #include <EEPROM.h> // m5paper M5EPD_Canvas canvas(&M5.EPD); int count; int boot; void setup() { M5.begin(); M5.EPD.SetRotation(0); // cleanig the screen by alternating all pixels set, all pixels reset M5.EPD.Clear(true); // use rtc M5.RTC.begin(); canvas.createCanvas(960, 540); canvas.setTextSize(8); canvas.clear(); canvas.drawString("Sleep Test...", 50, 50); canvas.pushCanvas(0, 0, UPDATE_MODE_DU4); delay(1000); EEPROM.begin(10); boot = EEPROM.read(0); boot++; EEPROM.write(0,boot); EEPROM.commit(); count = 0; } void loop() { canvas.clear(); char printBuffer[64]; sprintf(printBuffer, "b=%d, c=%d",boot, count); canvas.drawString(printBuffer, 50, 50); canvas.pushCanvas(0, 0, UPDATE_MODE_DU4); count++; delay(1000); gpio_hold_en((gpio_num_t)M5EPD_MAIN_PWR_PIN); esp_sleep_enable_timer_wakeup(5 * 1000000); // turn off power to screen // M5.disableEPDPower(); // turn off power to ports M5.disableEXTPower(); // sleeps, wakesup and continues esp_light_sleep_start(); // sleeps, wakesup and restarts // esp_deep_sleep_start(); // shutsdown // M5.shutdown(5); // turn on power to screen // M5.enableEPDPower(); // turn on power to ports M5.disableEXTPower(); }
without turning off/on power to screen:
with turning off/on power to screen:
-
-
@felmue: nice!
just added a redraw of the screen and it all works:
// turn on power to screen M5.enableEPDPower(); // redraw screen canvas.pushCanvas(0, 0, UPDATE_MODE_DU4); // turn on power to ports M5.enableEXTPower();
the screen does get a bit of greyish line pattern over time:
-
@frank_b normally with EInk you have to make a HV write to set the ink on the screen then you can switch the device off while still keeping the image or text on screen. If you do a normal write then the content will fade or just vanish when powered off.
-