GxEPD2_4G supports gdey075t7?

Hello, I have been working with a FireBeetle 2 ESP32-E and a Waveshare 7.5in e-paper (v2) for the last few days. Thanks to @lmarzen :slight_smile:

After some time I had to realize that the GxEPD2 library only supports black and white and no greyscale. Coming from a Kindle KT3, I am of course very spoiled when it comes to image quality.

During my research I came across the GxEPD2_4G library from @ZinggJM and I think I will try to use it. Unfortunately, the matching display GDEW075T7 is no longer available and seems to have been replaced by the GDEY075T7.

Can you tell me if the GDEY075T7 is identical to the GDEW075T7 and therefore supported by GxEPD2_4G?

I can operate the FireBeetle 2 ESP32-E with the display and the GxEPD2_4G without any problems, right?

Thank you in advance!
Please bear with me, I have done very little in this area so far.

See https://github.com/ZinggJM/GxEPD2_4G/blob/master/README.md:

Supported SPI e-paper panels from Good Display:

  • GDEY0154D67 1.54" b/w 200x200, SSD1681
  • GDEW0213I5F 2.13" b/w 104x212, UC8151 (IL0373), flexible
  • GDEY0213B74 2.13" b/w 122x250, SSD1680
  • GDEW027W3 2.7" b/w 176x264, EK79652 (IL91874)
  • GDEW029T5 2.9" b/w 128x296, UC8151 (IL0373)
  • GDEW029T5D 2.9" b/w 128x296, UC8151D
  • GDEW029I6FD 2.9" b/w 128x296, UC8151D, flexible
  • GDEM029T94 2.9" b/w 128x296, SSD1680
  • GDEW0371W7 3.7" b/w 240x416, UC8171 (IL0324)
  • GDEW042T2 4.2" b/w 400x300, UC8176 (IL0398)
  • GDEY042T81 4.2" b/w 400x300, SSD1683
  • GDEQ0426T82 4.26" b/w 800x480, SSD1677
  • GDEW075T7 7.5" b/w 800x480, EK79655 (GD7965)

Don't think so, but seems to have the same controller. Give it a try.

Hello again. Unfortunately it does not seem to work. :frowning:

Hardware:

  • FireBeetle 2 ESP32-E
  • DESPI-C02
  • Good Display GDEY075T7

GxEPD2_4G does not seem to work with the new 800x480 model GDEY075T7 (4 grayscales) from Good Display.

GxEPD2 works without problems, GxEPD2_4G does not - of course no PINs changed.

Here is my code:

#include <Fonts/FreeMonoBold9pt7b.h>
//#define ENABLE_GxEPD2_GFX 1

const uint8_t PIN_EPD_BUSY  = 14;
const uint8_t PIN_EPD_CS    = 13;
const uint8_t PIN_EPD_RST   = 21;
const uint8_t PIN_EPD_DC    = 22;

#define MAX_DISPLAY_BUFFER_SIZE 65536ul // e.g.

////
//// Testing with GxEPD2 without Grayscale 
////
//#include <GxEPD2_BW.h>
//#define GxEPD2_DISPLAY_CLASS GxEPD2_BW
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_T7
//#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
////

////
//// GxEPD2_4G
////
#include <GxEPD2_4G_4G.h>
#define GxEPD2_DISPLAY_CLASS GxEPD2_4G_4G
#define GxEPD2_DRIVER_CLASS GxEPD2_750_T7
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 4) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 4))
////

GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, 
    MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display
        (GxEPD2_DRIVER_CLASS(PIN_EPD_CS,
            PIN_EPD_DC,
            PIN_EPD_RST,
            PIN_EPD_BUSY));

#undef MAX_DISPLAY_BUFFER_SIZE
#undef MAX_HEIGHT

void setup() {
    Serial.begin(115200);
    Serial.println();
    Serial.println("setup");
    delay(100);

    display.init(115200);
    display.setRotation(0);
    display.setFont(&FreeMonoBold9pt7b);  
    display.fillScreen(GxEPD_WHITE);
    display.setTextColor(GxEPD_BLACK);

    Serial.printf("Display Width: %d\n", display.width());
    Serial.printf("Display Height: %d\n", display.height());

    const char HelloWorld[] = "Hello World!";
    int16_t tbx, tby; uint16_t tbw, tbh;
    display.getTextBounds(HelloWorld, 0, 0, &tbx, &tby, &tbw, &tbh);
    uint16_t hwx = ((display.width() - tbw) / 2) - tbx;
    uint16_t hwy = ((display.height() - tbh) / 2) - tby;
    
    display.setFullWindow();
    display.firstPage();
    do
    {
        display.setCursor(hwx, hwy);
        display.print(HelloWorld);
    } while (display.nextPage());
}

void loop() {
}

Here is the error on the serial monitor:

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13232
load:0x40080400,len:3028
entry 0x400805e4

setup
Display Width: 800
Display Height: 480
Guru Meditation Error: Core  1 panic'ed (InstrFetchProhibited). Exception was unhandled.

Core  1 register dump:
PC      : 0x1e000105  PS      : 0x00060830  A0      : 0x800d40b1  A1      : 0x3ffb2230  
A2      : 0x1e000105  A3      : 0x3ffd1b91  A4      : 0x3ffd1b98  A5      : 0x00000000
A6      : 0x3ffd1ba0  A7      : 0x3ffd1b9e  A8      : 0x800d1813  A9      : 0x3ffb2210  
A10     : 0x3ffd1ba8  A11     : 0x00000000  A12     : 0x00000000  A13     : 0x3ffb225c
A14     : 0x3ffb2256  A15     : 0x3ffb2258  SAR     : 0x00000010  EXCCAUSE: 0x00000014  
EXCVADDR: 0x1e000104  LBEG    : 0x40085e6d  LEND    : 0x40085e8f  LCOUNT  : 0xffffffff

Backtrace: 0x1e000102:0x3ffb2230 0x400d40ae:0x3ffb2290
ELF file SHA256: 6b761d0ce2d85524

The problem is caused by "display.firstPage();", that's all I could find out.

Can you @ZinggJM do something about it? I would be frustrated if I / you / we could not get the display to work with grayscale.

Greetings from Germany.


7.5 inch e-ink screen 800x480 electronic paper display, GDEY075T7_Good Display (good-display.com)

Isn't advertised as supporting 4 grey levels. Is it?

:sweat_smile: GDEY075T7: This is a 7.5 inch e-ink screen with 800x480 resolution, UC8179, SPI interface, and the electronic paper display supports 4 grayscale.

What I don't understand, according to Good Display GDEW075T7 has a UC8179 interface and GDEY075T7 too - so it should actually work.

No, I can't. I work on GxEPD2_4G or related investigations only if I have time to spare.
This is not the case, currently.
-jz-

This is a 7.5 inch e-ink screen with 800x480 resolution, UC8179, SPI interface, and the electronic paper display supports 4 grayscale.

Is in contradiction to the details description. A leftover?

1 Like

Hmm, I ordered it because of the grayscale. The Aliexpress article page also says 4 shades of gray.

But, in my opinion, we should trust the official product sheet: GDEY075T7 Specification_Good Display

The product video at least also looks like grayscale: https://www.good-display.com/product/396.html

No, I can't. I work on GxEPD2_4G or related investigations only if I have time to spare.
This is not the case, currently.

That's too bad for me - otherwise there is no display that is 7.5 inch and supported by your GxEPD2_4G library and available (not eol or out of stock). Thanks for your support though!

If any of the community still has old GDEW075T7s in the basement, I'd like to buy two of them.

Best regards

Please note that I don't like personal messages for technical questions.

And I even less like to get private e-mails for Arduino related questions.
I don't publish my e-mail address, but of course it can be guessed.

I would have taken a look at the effort needed to add GDEY075T7 to GxEPD2_4G, maybe in the next two weeks. But now I lost all motivation for doing that.

1 Like

I apologize for that. I just wanted to provide you with as much information as possible that you need. But the wrong way. Sorry.

I found out that the GitHub user "ljezny" uses the same display as me and had also created a pull request: Fixes VDH and VDL voltages for 750_T7 displays by ljezny ยท Pull Request #1 ยท ZinggJM/GxEPD2_4G ยท GitHub

But his changes don't explain my current problem. So it looks like you don't need to make many additional adjustments to your code.

I think I have an error in my code. Have I forgotten an include? Am I initializing the display incorrectly? Is something missing? Could you take a look at my code and see if anything is obvious? SPI?

As I said, I am an absolute newcomer to C++, ESP32 and e-paper displays.

Thanks and sorry again.

I have solved the problem.

The problem was that the "GxEPD2" library was still in the "platformio\.pio\libdeps\dfrobot_firebeetle2_esp32e" folder.

Folder GxEPD2 deleted, "platformio.ini" edited (lib_deps), rebuilt, uploaded, running!

I don't understand why this was used, although there is no "include" in my code, probably a normal behavior of PIO. Probably some functions in GxEPD2 are duplicated with those in GxEPD2_4G and thus caused my problem.

Thanks to everyone who helped me!

Hello again, a few hours have passed and my wife and children are really annoyed with me.

Hour after hour, I've got a little further and further, and in the end I just couldn't explain some of the problems any more. That's why I have dismantled everything and started in a very rudimentary way. I noticed that I have problems when displaying "more complex" bitmaps. I have stripes from top to bottom on the display when an image is inverted or when it is not inverted, the upper area is very slightly visible and then simply runs out.

I have to say that during the display refresh, the image is sometimes displayed correctly for half a second before it ends up looking like my pictures.

However, I can display the example bitmap "Bitmaps4g800x480.h" with display.epd2.drawImage_4G without any problems.

Here are a few pictures:

My own example 1-bit bitmap, works, but without greyscale (display.drawImage)

Example 2-bit bitmap with graysacle looks good (display.epd2.drawImage_4G)

My own example 2-bit bitmap, the upper area is very slightly visible and then simply runs out (display.epd2.drawImage_4G); when inverted, stripes from top to bottom

Example 2-bit bitmap from florian-senn @ github (display.epd2.drawImage_4G)

I have uploaded the example code and the bitmaps used here, should anyone want to recreate it or help me.

I can rule out a bug in GxEPD2_4G, I have also tried older versions.

  • Perhaps there is still more to adapt for the GDEY075T7? @ZinggJM
  • Could it be a hardware problem or a bad solder joint?

I would appreciate any help.

Best regards

I would just like to briefly inform you that I was able to solve the problem a few days ago. It was due to additional parameters for the initialization of the GDEY075T7 display.

Here is my fork of the GxEDP2_4G: GitHub - nicoh88/GxEPD2_4G

Here is my whole project which I finished a few minutes ago:

All the best and best wishes from Germany,
Nico

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.