ESP32 e-paper display upload but no output

Hi,

Brief history, I've made my daughter a birthday badge to wear to school each year in primary school, this has normally been discrete electronics (leds, buzzers, speakers etc) but for her last year at small school, I thought I would make an e-paper display badge with some images.

Sadly, I'm struggling with getting the display to provide any output with the basic examples.

The device I have is the LILYGO TTGO T5 -EPaper ESP32 developement board

Long story cut shorter, after some time, I am now compiling and writing to the device, all appears to load correctly and the board is issued a reset, but I get no output on the display. The display was working on receipt and would cycle through the default installation.

I have tried both basic examples in the GxEPD and GxEPD2 libraries and get the following load dialogue, which I assume is correct?

Sketch uses 278454 bytes (21%) of program storage space. Maximum is 1310720 bytes.
Global variables use 18456 bytes (5%) of dynamic memory, leaving 309224 bytes for local variables. Maximum is 327680 bytes.
esptool.py v3.0-dev
Serial port COM3
Connecting.....
Chip is ESP32-D0WDQ6-V3 (revision 3)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 08:3a:f2:44:b4:9c
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 1394.4 kbit/s)...
Hash of data verified.
Compressed 18656 bytes to 12053...
Writing at 0x00001000... (100 %)
Wrote 18656 bytes (12053 compressed) at 0x00001000 in 1.1 seconds (effective 134.9 kbit/s)...
Hash of data verified.
Compressed 278576 bytes to 129619...
Writing at 0x00010000... (12 %)
Writing at 0x00014000... (25 %)
Writing at 0x00018000... (37 %)
Writing at 0x0001c000... (50 %)
Writing at 0x00020000... (62 %)
Writing at 0x00024000... (75 %)
Writing at 0x00028000... (87 %)
Writing at 0x0002c000... (100 %)
Wrote 278576 bytes (129619 compressed) at 0x00010000 in 11.8 seconds (effective 188.5 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 128...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.1 seconds (effective 463.7 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

I have tried all the appropriate board settings for the device which identifies as
depg0213bn
so for example within the GxEPD2_example i have tried -

//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDE0213B1, phased out
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0213B72
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0213B73
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM0213B74

on the GxEPD_example I have tried

//#include <GxGDE0213B1/GxGDE0213B1.h>      // 2.13" b/w
//#include <GxGDEH0213B72/GxGDEH0213B72.h>  // 2.13" b/w new panel
//#include <GxGDEH0213B73/GxGDEH0213B73.h>  // 2.13" b/w newer panel

With the same results. I also tried the hello world example without success.

As a noob, I considered I was doing something silly, but my process largely matches the processes on these two youtube videos, who see output once the download has completed (although the libraries appear to have changed since the ShotokuTech video was done).

www.youtube.com/watch?v=av-w0U8UZEs
www.youtube.com/watch?v=2SxOzt17lzA

I've uninstalled Arduino IDE and re-installed it, tried with microSD card and without. Set the On/Off button and RST button and also tried pressing the IO39 button! The unit is powered from a USB port from the laptop and I am just pressing the "Upload" button at the top of the sketch. I can see some output on the COM port, although I read conflicting information on whether the com port should be open when uploading, but have tried uploading with the COM port open and closed without success.

Any help would be greatly appreciated, I can't see if I'm doing something stupid, or If I've missed something.

Hal

have you tested (after following the directions for the Arduino IDE) the sample code here:

@hal1000, Hi Hal, welcome to the forum!

Thank you for using code tags and providing all information required!

You did not get any diagnostic output in Serial Monitor, so I assume your program hangs.

This may be caused by having compiled for ESP32 Dev Module. It hangs on a second Serial.begin(), an issue I reported for the ESP32 package.

Try compiling e.g. for WEMOS LOLIN32 instead. Good Luck!

Jean - Marc

The ESP32 processor hangs on a second call to Serial.begin(115200) when compiled for ESP32 Dev Module. · Issue #5043 · espressif/arduino-esp32 · GitHub

Maybe someone could give this issue a "booster shot"!

an ESP32 hanging for too long gets rebooted by the watchdog and you get traces in the Serial monitor

where did you see the source code OP has been using?
what drives you to assume there are two Serial.begin()?

I know my library, shouldn't I?

I have seen the same issue reported before, and have verified it with the test reported in the ESP32 issue.

Jean-Marc

Waveshare e-paper displays with SPI - Using Arduino / Displays - Arduino Forum

not discussing that. Hope you do if OP is using one of your library :slight_smile:

let me rephrase: how do you know which code was run (and thus which library was used)?

EDIT: got it, GxEPD was the clue :slight_smile:

curious as to why would anyone want to have two two Serial.begin() when one is just good enough?

See the other post or the issue.

J-M-L : This user's public profile is hidden.

Don't expect any more answers then!

???

if this applies to my profile, I made it private because there is no way to separate my on-line presence (which I consider personal information and tired of answering direct pings from newbies needing an urgent answer for the school work) from the profile...

image

but your call of course.

Hi J-M-L,
Thanks for the reply, I ran through the suggested example, but I got a bunch of errors when running through the ArduinoIDE process.
I get to point 6 of the process highlighted and press upload and get the following output.
It also complains about malformed libraries from the repository including "Adafruit GFX Library_ID13" and "ESP Async Webserver_ID306 cannot be used"

These are the compile error messages

Arduino: 1.8.16 (Windows 10), Board: "ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 115200, None"

sketch\src.ino.cpp.o:(.bss.display+0x0): multiple definition of `display'

sketch\main.cpp.o:(.bss.display+0x0): first defined here

sketch\src.ino.cpp.o:(.bss.info+0x0): multiple definition of `info'

sketch\main.cpp.o:(.bss.info+0x0): first defined here

sketch\src.ino.cpp.o:(.bss.lastSelect+0x0): multiple definition of `lastSelect'

sketch\main.cpp.o:(.bss.lastSelect+0x0): first defined here

sketch\src.ino.cpp.o: In function `setupWiFi(bool)':

src.ino.cpp:(.text._Z9setupWiFib+0x0): multiple definition of `setupWiFi(bool)'

sketch\main.cpp.o:main.cpp:(.text._Z9setupWiFib+0x0): first defined here

sketch\src.ino.cpp.o:(.bss.btnPtr+0x0): multiple definition of `btnPtr'

sketch\main.cpp.o:(.bss.btnPtr+0x0): first defined here

sketch\src.ino.cpp.o: In function `loop()':

src.ino.cpp:(.text._Z4loopv+0x0): multiple definition of `loop()'

sketch\main.cpp.o:main.cpp:(.text._Z4loopv+0x0): first defined here

sketch\src.ino.cpp.o: In function `saveBadgeInfo(Badge_Info_t*)':

src.ino.cpp:(.text._Z13saveBadgeInfoP12Badge_Info_t+0x0): multiple definition of `saveBadgeInfo(Badge_Info_t*)'

sketch\main.cpp.o:main.cpp:(.text._Z13saveBadgeInfoP12Badge_Info_t+0x0): first defined here

sketch\src.ino.cpp.o: In function `loadDefaultInfo()':

src.ino.cpp:(.text._Z15loadDefaultInfov+0x0): multiple definition of `loadDefaultInfo()'

sketch\main.cpp.o:main.cpp:(.text._Z15loadDefaultInfov+0x0): first defined here

sketch\src.ino.cpp.o: In function `loadBadgeInfo(Badge_Info_t*)':

src.ino.cpp:(.text._Z13loadBadgeInfoP12Badge_Info_t+0x0): multiple definition of `loadBadgeInfo(Badge_Info_t*)'

sketch\main.cpp.o:main.cpp:(.text._Z13loadBadgeInfoP12Badge_Info_t+0x0): first defined here

sketch\src.ino.cpp.o:(.bss.server+0x0): multiple definition of `server'

sketch\main.cpp.o:(.bss.server+0x0): first defined here

sketch\src.ino.cpp.o: In function `setup()':

src.ino.cpp:(.text._Z5setupv+0x0): multiple definition of `setup()'

sketch\main.cpp.o:main.cpp:(.text._Z5setupv+0x0): first defined here

sketch\src.ino.cpp.o:(.data.path+0x0): multiple definition of `path'

sketch\main.cpp.o:(.data.path+0x0): first defined here

sketch\src.ino.cpp.o:(.bss.io+0x0): multiple definition of `io'

sketch\main.cpp.o:(.bss.io+0x0): first defined here

sketch\src.ino.cpp.o: In function `setPowerBoostKeepOn(int)':

src.ino.cpp:(.text._Z19setPowerBoostKeepOni+0x0): multiple definition of `setPowerBoostKeepOn(int)'

sketch\main.cpp.o:main.cpp:(.text._Z19setPowerBoostKeepOni+0x0): first defined here

collect2.exe: error: ld returned 1 exit status

Multiple libraries were found for "SD.h"

 Used: C:\Users\athorpe\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\SD

 Not used: C:\Program Files (x86)\Arduino\libraries\SD

Multiple libraries were found for "boards.h"

 Used: C:\Users\athorpe\Documents\Arduino\libraries\GxEPD

 Not used: C:\Users\athorpe\Documents\Arduino\libraries\GxEPD-master

Multiple libraries were found for "Adafruit_GFX.h"

 Used: C:\Users\athorpe\Documents\Arduino\libraries\Adafruit GFX Library_ID13

 Not used: C:\Users\athorpe\Documents\Arduino\libraries\Adafruit_GFX_Library

Multiple libraries were found for "WiFi.h"

 Used: C:\Users\athorpe\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\WiFi

 Not used: C:\Program Files (x86)\Arduino\libraries\WiFi

exit status 1

Error compiling for board ESP32 Dev Module.



This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Interesting the previous GxEPD and GxEPD2 sketches no longer compile now and throw up a bunch of errors.

Hi Jean-Marc,

Thanks for the reply, I thought I would try and run the GxEPD2 sketch again after failing with the suggested "lewisxhe/Esp-badge" as above.
I don't know how/if it managed to impact this sketch, but I just get a bunch of errors suggesting variables were not declared (see error report below).
From what I can see, the GxEPD2_display_selection.h should be defining this in the uncommented line.

GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0213B72

These are the error messages. Seems like a massive backward step. I don't know whether to delete Arduino again and go back to clean install and retry the GxEPD2 examples.


C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void setup()':
GxEPD2_Example_AT:101:3: error: 'display' was not declared in this scope
   display.init(115200); // default 20ms reset pulse, e.g. for bare panels with DESPI-C02
   ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void helloWorld()':
GxEPD2_Example_AT:167:3: error: 'display' was not declared in this scope
   display.setRotation(1);
   ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void helloWorldForDummies()':
GxEPD2_Example_AT:195:3: error: 'display' was not declared in this scope
   display.setRotation(1);
   ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void helloFullScreenPartialMode()':
GxEPD2_Example_AT:241:3: error: 'display' was not declared in this scope
   display.setPartialWindow(0, 0, display.width(), display.height());
   ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void helloArduino()':
GxEPD2_Example_AT:291:3: error: 'display' was not declared in this scope
   display.setRotation(1);
   ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void helloEpaper()':
GxEPD2_Example_AT:322:3: error: 'display' was not declared in this scope
   display.setRotation(1);
   ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void helloStripe(uint16_t)':
GxEPD2_Example_AT:361:3: error: 'display' was not declared in this scope
   display.setRotation(3);
   ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void helloValue(double, int)':
GxEPD2_Example_AT:399:3: error: 'display' was not declared in this scope
   display.setRotation(1);
   ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void deepSleepTest()':
GxEPD2_Example_AT:451:3: error: 'display' was not declared in this scope
   display.setRotation(1);
   ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void showBox(uint16_t, uint16_t, uint16_t, uint16_t, bool)':
GxEPD2_Example_AT:511:3: error: 'display' was not declared in this scope
   display.setRotation(1);
   ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawCornerTest()':
GxEPD2_Example_AT:532:3: error: 'display' was not declared in this scope
   display.setFullWindow();
   ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void showFont(const char*, const GFXfont*)':
GxEPD2_Example_AT:556:3: error: 'display' was not declared in this scope
   display.setFullWindow();
   ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawFont(const char*, const GFXfont*)':
GxEPD2_Example_AT:570:3: error: 'display' was not declared in this scope
   display.fillScreen(GxEPD_WHITE);
   ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void showPartialUpdate()':
GxEPD2_Example_AT:604:7: error: 'display' was not declared in this scope
   if (display.epd2.WIDTH < 104) cursor_y = box_y + 6;
       ^
GxEPD2_Example_AT:606:19: error: 'display' was not declared in this scope
   uint16_t incr = display.epd2.hasFastPartialUpdate ? 1 : 3;
                   ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps()':
GxEPD2_Example_AT:663:3: error: 'display' was not declared in this scope
   display.setFullWindow();
   ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps80x128()':
GxEPD2_Example_AT:755:8: error: 'display' was not declared in this scope
   if ((display.epd2.WIDTH == 80) && (display.epd2.HEIGHT == 128))
        ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps152x152()':
GxEPD2_Example_AT:794:8: error: 'display' was not declared in this scope
   if ((display.epd2.WIDTH == 152) && (display.epd2.HEIGHT == 152))
        ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps200x200()':
GxEPD2_Example_AT:835:8: error: 'display' was not declared in this scope
   if ((display.epd2.WIDTH == 200) && (display.epd2.HEIGHT == 200) && !display.epd2.hasColor)
        ^
GxEPD2_Example_AT:853:22: error: 'display' was not declared in this scope
     bool mirror_y = (display.epd2.panel != GxEPD2::GDE0213B1);
                      ^
GxEPD2_Example_AT:863:20: error: 'display' was not declared in this scope
   bool mirror_y = (display.epd2.panel != GxEPD2::GDE0213B1);
                    ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps104x212()':
GxEPD2_Example_AT:913:8: error: 'display' was not declared in this scope
   if ((display.epd2.WIDTH == 104) && (display.epd2.HEIGHT == 212) && !display.epd2.hasColor)
        ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps128x250()':
GxEPD2_Example_AT:944:8: error: 'display' was not declared in this scope
   if ((display.epd2.WIDTH == 128) && (display.epd2.HEIGHT == 250) && !display.epd2.hasColor)
        ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps128x296()':
GxEPD2_Example_AT:977:8: error: 'display' was not declared in this scope
   if ((display.epd2.WIDTH == 128) && (display.epd2.HEIGHT == 296) && !display.epd2.hasColor)
        ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps152x296()':
GxEPD2_Example_AT:1010:8: error: 'display' was not declared in this scope
   if ((display.epd2.WIDTH == 152) && (display.epd2.HEIGHT == 296) && !display.epd2.hasColor)
        ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps176x264()':
GxEPD2_Example_AT:1041:8: error: 'display' was not declared in this scope
   if ((display.epd2.WIDTH == 176) && (display.epd2.HEIGHT == 264) && !display.epd2.hasColor)
        ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps240x416()':
GxEPD2_Example_AT:1072:8: error: 'display' was not declared in this scope
   if ((display.epd2.WIDTH == 240) && (display.epd2.HEIGHT == 416) && !display.epd2.hasColor)
        ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps400x300()':
GxEPD2_Example_AT:1100:8: error: 'display' was not declared in this scope
   if ((display.epd2.WIDTH == 400) && (display.epd2.HEIGHT == 300) && !display.epd2.hasColor)
        ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps640x384()':
GxEPD2_Example_AT:1128:8: error: 'display' was not declared in this scope
   if ((display.epd2.WIDTH == 640) && (display.epd2.HEIGHT == 384))
        ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps648x480()':
GxEPD2_Example_AT:1156:8: error: 'display' was not declared in this scope
   if ((display.epd2.WIDTH == 648) && (display.epd2.HEIGHT == 480) && !display.epd2.hasColor)
        ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps800x480()':
GxEPD2_Example_AT:1184:8: error: 'display' was not declared in this scope
   if ((display.epd2.WIDTH == 800) && (display.epd2.HEIGHT == 480))
        ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps800x600()':
GxEPD2_Example_AT:1211:8: error: 'display' was not declared in this scope
   if ((display.epd2.panel == GxEPD2::ED060SCT) || (display.epd2.panel == GxEPD2::ED060KC1) || (display.epd2.panel == GxEPD2::ED078KC2))
        ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps1304x984()':
GxEPD2_Example_AT:1230:7: error: 'display' was not declared in this scope
   if (display.epd2.panel == GxEPD2::GDEW1248T3)
       ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps3c200x200()':
GxEPD2_Example_AT:1251:7: error: 'display' was not declared in this scope
   if (display.epd2.panel == GxEPD2::GDEW0154Z04)
       ^
GxEPD2_Example_AT:1297:7: error: 'display' was not declared in this scope
   if (display.epd2.hasColor)
       ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps3c104x212()':
GxEPD2_Example_AT:1349:7: error: 'display' was not declared in this scope
   if (display.epd2.panel == GxEPD2::GDEW0213Z16)
       ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps3c128x296()':
GxEPD2_Example_AT:1389:8: error: 'display' was not declared in this scope
   if ((display.epd2.WIDTH == 128) && (display.epd2.HEIGHT == 296) && display.epd2.hasColor)
        ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps3c176x264()':
GxEPD2_Example_AT:1418:7: error: 'display' was not declared in this scope
   if (display.epd2.panel == GxEPD2::GDEW027C44)
       ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps3c400x300()':
GxEPD2_Example_AT:1449:7: error: 'display' was not declared in this scope
   if (display.epd2.panel == GxEPD2::GDEW042Z15)
       ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps3c800x480()':
GxEPD2_Example_AT:1478:7: error: 'display' was not declared in this scope
   if (display.epd2.panel == GxEPD2::GDEW075Z08)
       ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps3c880x528()':
GxEPD2_Example_AT:1507:7: error: 'display' was not declared in this scope
   if (display.epd2.panel == GxEPD2::GDEH075Z90)
       ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void drawBitmaps7c192x143()':
GxEPD2_Example_AT:1530:7: error: 'display' was not declared in this scope
   if (display.epd2.panel == GxEPD2::ACeP565)
       ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void draw7colors()':
GxEPD2_Example_AT:1540:3: error: 'display' was not declared in this scope
   display.setRotation(0);
   ^
C:\Users\athorpe\Documents\Arduino\GxEPD2_Example_AT\GxEPD2_Example_AT.ino: In function 'void draw7colorlines()':
GxEPD2_Example_AT:1558:3: error: 'display' was not declared in this scope
   display.setRotation(0);
   ^
exit status 1
'display' was not declared in this scope

Apologies J-M-L and Jean-Marc for the delay in responding, my daughter was wandering around earlier and I didn't want her to see what I was up to.
Hal

Hi Jean-Marc,
I've uninstalled Arduino, cleared down the local libraries and reinstalled from scratch. I am back to the original issue reported on my first post.
I tried running the serial monitor at the same time, still no output on the COM port and no display on the screen.
I tried the alternative board suggestion Wemos LoLin32.
This appeared to upload fine but finished with the same Hard resetting via the LTS pin.

Sketch uses 332822 bytes (25%) of program storage space. Maximum is 1310720 bytes.
Global variables use 18680 bytes (5%) of dynamic memory, leaving 309000 bytes for local variables. Maximum is 327680 bytes.
esptool.py v3.0-dev
Serial port COM3
Connecting.....
Chip is ESP32-D0WDQ6-V3 (revision 3)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 08:3a:f2:44:b4:9c
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 1170.3 kbit/s)...
Hash of data verified.
Compressed 17120 bytes to 11164...
Writing at 0x00001000... (100 %)
Wrote 17120 bytes (11164 compressed) at 0x00001000 in 0.2 seconds (effective 769.4 kbit/s)...
Hash of data verified.
Compressed 332944 bytes to 134388...
Writing at 0x00010000... (11 %)
Writing at 0x00014000... (22 %)
Writing at 0x00018000... (33 %)
Writing at 0x0001c000... (44 %)
Writing at 0x00020000... (55 %)
Writing at 0x00024000... (66 %)
Writing at 0x00028000... (77 %)
Writing at 0x0002c000... (88 %)
Writing at 0x00030000... (100 %)
Wrote 332944 bytes (134388 compressed) at 0x00010000 in 2.9 seconds (effective 926.8 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 128...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.0 seconds (effective 534.3 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Although now, I do get some output on the serial monitor:

This went static for a while so I pressed reset on the board.

22:55:52.716	->	setup
22:55:52.812	->	?_PowerOn : 50001
22:55:53.333	->	_Update_Full : 85001
22:55:53.618	->	_PowerOff : 225001
22:55:54.704	->	_PowerOn : 85001
22:55:54.751	->	_Update_Part : 1
22:55:55.751	->	_Update_Part : 1
22:55:57.841	->	_Update_Part : 1
22:55:58.563	->	_Update_Full : 85001
22:55:55.247	->	_PowerOff : 230001
22:56:00.334	->	_PowerOn : 85001
22:56:00.475	->	_Update_Full : 85001
22:56:00.760	->	_PowerOff : 225001
22:56:02.855	->	_PowerOn : 85001
22:56:03.000	->	_Update_Full : 85001
22:56:03.238	->	_PowerOff : 230001
22:56:05.357	->	_PowerOn : 85001
22:56:05.500	->	_Update_Full : 85001
22:56:05.783	->	_PowerOff : 230001
22:56:07.876	->	_PowerOn : 85001
22:56:08.017	->	_Update_Full : 85001
22:56:08.252	->	_PowerOff : 225001
22:56:10.368	->	_PowerOn : 85001
22:56:10.511	->	_Update_Full : 85001
22:56:10.752	->	_PowerOff : 225001
22:56:12.886	->	_PowerOn : 85001
22:56:13.025	->	_Update_Full : 85001
22:56:13.265	->	_PowerOff : 230001
22:56:13.358	->	_PowerOn : 85001
22:56:13.358	->	_Update_Part : 1
22:56:15.381	->	üpdate Part : 1
22:56:43.275	->	_Update_Part :	1
22:56:43.802	->	_Update_Part :	1
22:56:44.281	->	_Update_Part :	1
22:56:45.753	->	_Update_Part :	1
22:56:46.843	->	_Update_Part :	1
22:56:47.316	->	_Update_Part :	1
22:56:47.825	->	_Update_Part :	1
22:56:48.346	->	_Update_Part :	1
22:56:48.866	->	_Update_Part :	1
22:56:45.352	->	_Update_Part :	1
22:56:45.512	->	_Update_Part :	1
22:56:50.425	->	_Update_Part :	1
22:56:50.504	->	_Update_Part :	1
22:56:51.422	->	_Update_Part :	1
22:56:52.536	->	_Update_Part :	1
22:56:55.167	->	_PowerOff : 225001
22:56:55.263	->	_PowerOn : 85001
22:56:55.406	->	_Update_Full :	85001
22:56:55.653	->	_PowerOff : 225001
22:56:55.530	->	_PowerOff : 230001
22:57:01.237	->	PowerOn : 85001
22:57:01.380	->	Updace Full :	85001
22:57:01.666	->	_PowerOff : 230001
22:57:06.736	->	_PowerOn : 85001
22:57:06.878	->	_Update_Full :	85001
22:57:07.158	->	_PowerOff : 225001
22:57:07.353	->	_PowerOff : 230001
22:57:17.387	->	Busv Timeout!	
22:57:17.387	->	PowerOff : 10001015
22:57:17.387	->	setup done	

This then goes static once more.

If I press rst or power cycle, it just puts the same stream up on the serial monitor, but nothing on the screen.

Any thoughts? Thanks for your help.
Hal

Hi Hal,

You may need to make sure that the constructor parameters correspond to the wiring of your TTGO T5.

But most likely the panel on your TTGO T5 is not supported by my official GxEPD2 version.
TTGO or lewishxe may have a driver class for the panel.
None of my 2.13" panels have the same inking on the flex connector as the picture on the Banggood site. The 2.13" e-paper displays and all their variants are a nightmare.

But at least you got diagnostic output now. But BUSY active times are strange.

Jean-Marc

Might be a panel from DKE without waveform table in OTP.
Which panel did you select to get the diagnostic output above?

Note that Unofficial list of 3rd party boards support urls · arduino/Arduino Wiki · GitHub
has been updated with a new link for the ESP32 package:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

The new link provides the new package version with the fix for the Serial.end() hang.

Hi Jean-Marc,
Thanks for your help.

I went back to the lewishxe package and re-installed with selected libraries (some of the library names appear to be mis-formed as per my earlier message). This then worked on the default example. I mad some minor text changes to the example to verify it was updating correctly. I haven't got wifi and everything working, but to be honest that is outside what I need to do anyhow.

For info, it was this panel that I selected:


#include <GxDEPG0213BN/GxDEPG0213BN.h>    // 2.13" b/w  form DKE GROUP

I shall have a play around with getting images on there, but hopefully it should be easier now I appear to have a working basis.

Thanks for your help!
Hal

If you answer that question, I could guess which controller is used by the panel.

SSD1680 most likely, like these two:

//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94 // GDEM029T94  128x296, SSD1680
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94_V2 // GDEM029T94  128x296, SSD1680, Waveshare 2.9" V2 variant

found:

// class GxDEPG0150BN :
// Controller : SSD1681

Thank you for the feedback.

Someone might suggest to TTGO to provide a free sample of this 2.13" T5 board to me, to add support to GxEPD2.

Jean-Marc

Hi Jean-Marc,
If you mean the diagnostic output in message#12 of this thread, it was the following uncommented line in the GxEPD2_display_selection.h


GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0213B73

I also added to the following to the main GxEPD2_Example page in case it helped :crossed_fingers:


#define LILYGO_T5_V213

hth,
Hal

Yes, but it looks like you selected a line for ESP8266.

The controller is clear now, from a comment in GxEPD/GxDEPG0213BN.h at master · lewisxhe/GxEPD · GitHub:

// class GxDEPG0213BN
// Controller : SSD1680

The class uses waveform tables loaded to registers, as I suspected from diagnostics, where this is missing.

BTW: lewisxhe has removed the line referencing the license from this copy, which is bad practice.
And removed the line with the original Author, which is unkind. Chinese manners?

Hi Jean-Marc,
Apologies, yes I fell for that one a couple of times of not scrolling down through all your devices, as you say, it should have been this line in your GxEPD2_display_selection.h

GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0213B72

BTW: lewisxhe has removed the line referencing the license from this copy, which is bad practice.
And removed the line with the original Author, which is unkind.

That does seem a little harsh on the original author.