Hello,
I am working on an ESP32 Weatherdisplay using an E-Ink Display. I had my Display working before but have since run into some issues. Since this will be kind of a long post I will try to structure it into different sections. This is my first time posting here but I spent a lot time writing this so I hope it's fine.
1. Hardware / Software
Waveshare 800×480, 7.5inch E-Ink display HAT
Waveshare e-Paper Driver HAT Rev2.2
uPesy ESP32 Wroom Low Power DevKit
Hello World from Library GxEPD2 @ 1.5.2
I use the GxEPD2_display_selection_new_style.h where I tried both
#define GxEPD2_DRIVER_CLASS GxEPD2_750_T7 // GDEW075T7 800x480, EK79655 (GD7965), (WFT0583CZ61)
and
#define GxEPD2_DRIVER_CLASS GxEPD2_750_YT7 // GDEY075T7 800x480, UC8179 (GD7965), (FPC-C001 20.8.20)
since I was not sure which to select. But both of them worked at some point before i ran into the issues.
I used the suggested wiring for the ESP32 CS=5 (VSPI CS), DC= 17, RST=16, BUSY= 4, DIN=23 (VSPI_MISO), CLK= 18 (VSPI_CLK)
2. Symptoms of the Problem
Running the Hello World Program gives the following output in the Serial Monitor:
03:22:43.447 -> Busy Timeout!
03:22:43.447 -> _PowerOn : 10001039
03:22:53.762 -> Busy Timeout!
03:22:53.762 -> _Update_Full : 10001035
03:23:03.756 -> Busy Timeout!
03:23:03.756 -> _PowerOff : 10001035
The Display will refresh, in the last step of the refresh the text is clearly visible with high contrast.
However after maybe half a second it fades and becomes almost unreadable.
Some additional observations I made:
When running only the init function
display.init(115200, true, 2, false);
The display seems to initialize correctly. With my oscilloscope I have verified the duration of the reset pule (2ms) and also observed the display becoming busy for a very short time (Busy = 0V) and then becoming ready again (Busy about 3V).
When running
display.init(115200, true, 2, false);
display.refresh();
the display will become busy for a few seconds and then ready again (seems like expected behavior).
When writing to the ScreenBuffer the display becomes busy indefinitely.
Writing black to the whole screen results in a perfectly black screen without contrast issues (but still busy issue).
3. Weird history behind the problems
I am doing this as part of a university project together with a partner. That means we both got the same Hardware. When the Hardware first arrived, we had no problems setting everything up and writing our first test programs with GxEPD2 in the Arduino IDE. Everything worked fine. After some time we switched to PlatformIO but still used the same libraries, again everything still fine. One day my partner came to me and told me his display does not work anymore. As we suspected some hardware fault we loaded his software onto my Hardware thinking nothing of it.
After flashing his program my Display did some weird looking refreshes and we pulled the power (maybe that was a mistake). After that my display stopped working, always saying Busy Timeout and not able to display anything at all (even worse than it is now). Even the unchanged programs from earlier did not work.
Fast forward a few days and many attempts trying different pin combinations, HSPI, GxEPD, Waveshare examples,ESP from a different brand, and a few day of the display being unpowered, I got the display to refresh on accident after connecting it to different pins but forgetting to flash the program using the new pins beforehand (it showed nothing useful but atleast refreshed). After that I switched to another ESP32, GxEPD2 Hello World and the suggested wiring and the display worked perfectly again. Even when switching back to the uPesy ESP it still worked with perfect contrast.
After that we tried the following things in order (always disconnecting power before changing the setup):
I. My ESP + my e-Paper Driver HAT + my display -> working perfectly
II. My ESP + his e-Paper Driver HAT + his display -> not refreshing, just busy
III. Again my ESP + my e-Paper Driver HAT + my display -> working perfectly
IV. My ESP + my e-Paper Driver HAT + his display -> not refreshing, just busy
V. Again my ESP + my e-Paper Driver HAT + my display -> condition described in section 2. of the Thread
During this we never connected my display to his driver or ESP since we did not want to risk breaking it. Still somehow his display broke my driver?? I did not believe that would even be possible.
Thinking back we might have also connected his display to my driver before switching back to my display and flashing his software the first time my display "broke".
The GxEPD2 Readme mentions
note that 7.5" e-paper displays don't work reliable if fed from 3.3V Arduino pin
so maybe all the problems are connected to that.
Thank you for your time reading this!
Kind regards
Stephan