ATmega1284P + WaveShare 1.54" eInk V2 power consumption

Hi All,

I have an interesting issue with the V2 1.54" eInk displays.
I have made a weather station using the 'previous' version of the displays and it is working fine. Each sensor contains 2xAA, SHT21, RFM69W and the 1.54" eink. So far it runs on batteries for 3 years and the unit with most refreshes still has 30% battery left.
I've decided to build more sensors for another rooms and when I ordered new displays directly from WaveShare, I've noticed they are V2 and need different libraries to communicate.
I've modified my program to use GxEPD2 library (using GxEPD2_154_D67 as a replacement for GDEH0154D67 in the original GxEPD library).

And here comes the problem.
In my previous program I didn't do any tricks with the display, Just a partial update to refresh the change (if any) and then the MCU went to deepSleep. The overall consumption are just microamps.
However, with the Rev2 e-ink I've noticed that the display is consuming 3mA on the RST pin.
display.sleep() or display.powerDown() commands don't help. It is constant 3mA.
When I unplug the RST pin - the overall current drops to microamps (expected behaviour) but the screen gets the blacks washed out, it fades immediatelly.
After connecting the RST back - I'm getting rubbish on the screen, probably didn't get it in the right moment of the program run :slight_smile:
I've tried changing the pinMode to INPUT, INPUT_PULLUP, OUTPUT LOW, etc. The screen becomes unresponsive and I can't wake it back/getting rubbish on screen.
This is not a problem with a faulty display, I've ordered bunch of them and they all behave the same way.

Any ideas how to disconnect the RST pin programatically, not use it at all or put the screen into a proper sleep mode that the current drop to 'zero'?

Thanks and regards,

@lwinkler, Hi, welcome to the forum!

Sorry that I give you a very short answer: take a look at the schematics of your display.
The "clever" reset circuit has a 1k resistor to the base of a transistor from the RST line.

I don't want to waste any more time than absolutely necessary on this issue.

But you can find quite some posts if you search for "clever" reset circuit in this forum.


Thanks @ZinggJM,

Found the shortened times in the "clever" reset circuit posts you mentioned and changed the program to:

  digitalWrite(DISP_RST_PIN, LOW);

Also, after waking up I've added display.display(true); just to poke the screen - it wasn't needed in my 'old' program (GDEH0154D67) with the GxEPD library.
I keep however, the display.display(false); every 2000 partial updates - I've noticed that when redrawing single digit (I have battery percentage, voltage, temperature, humidity, number of packets sent, etc. so I only update the digits that have changed since last wake up 64s ago) there is a little ghosting problem - I draw a white rectangular and then I draw my digit (the same size bitmap as the rectangular). Still, after 2000+ updates you can see a shadow behind the digit so a full refresh cycle gets rid of it.

It is now drawing 7uA while sleeping. - thanks again.