Low power ePaper displays

running an esp32 display from battery long term

After experimenting with solar power over the last decade it became obvious that for some applications if you can get the power draw low enough battery power is enough to run that application for potential years. A information display would need some kind of connectivity and I had looked into running an ESP32 with low power a couple of years earlier.

That time I ran into the issue that the LDO I used and that were included in most dev boards ate up about 1mA constantly and that limited the possible runtime for my projects to days on battery power alone. I had bought some better DC-DC converters at the time but they were a bit pricey to have in larger numbers in stock and a hassle to get to boot.

I then had a new idea: a voltage converter mainly keeps the voltage in a suitable range for the electronics but what if you simply use a battery that is basically in that range over most of its useful charge curve.

Batteries with a chemistry that matches the voltage range an ESP32 runs at and are readily available enough are LiFePO4 batteries. They top out at 3.65v and drop just below 3v at the end of their charge curve.

This means that you can just run an ESP32-variant directly from it and be reasonably sure it will just work(tm). Of course you need to handle low voltage with an auto-cutoff and a brownout watchdog at around 3.0v but you would have needed that in any case.

I then made a prototype of a display that would show the local weather and a countdown to the days when the trash had to be taken out. I used a PCB for ESP32-S2 modules I had made at jlcpcb for this. It has a place for a watch crystal to keep the sleep reasonably consistent over the hours it will deep sleep each time. I used a longsleep/shortsleep approach to hit midnight accurately since I value that it updates just after midnight.

Using a 3-color ePaper might be a bit of a disadvantage if you aim for the longest battery runtime. This display could not do partial updates and was super slow in updating anyway but I value the option to add RED as a color for important information. Such as “hey the paper trash is TODAY if you don’t put it out you have to wait a month”.

I mestimated a runtime of about 20 months for this display from the 1400mAh LiFePo4 cell and there was nothing for it but to start using it and see when it ran out. I ran into several bugs that embarrassingly drained the battery and learned a few things for the next version. Mostly that its not a good idea to do much processing on the device itself even if it can do it. It is too much of a pain to re-flash the device for minor changes on websites you do not control directly.

For the next version a year later I wanted more of everything - but mostly I was confident enough to buy a larger epaper screen for the project. I again went with a 3-color one since I felt that I absolutely needed the added color. I considered adjusting the drive curves of the display to allow partial updates of black and white information but chose not to in the end.

This turned out to be a good decision because experiments I ran later damaged a smaller paper display. I up-sized my case and gave it a “handle” where the LiFePo4 cell and its micro-usb charger as well as a relatively chunky reset button was located. The “handle” turned out to be so “handy” I considered making an e-reader from this pattern for a second.

The display has been doing its thing (interrupted by me finding more bugs) for the last year and a half. I am very happy with how this turned out and I see myself making more of these as time goes on. The firmware is sadly not in a state I want to release it since its far to specialized for the application.