Waveshare 1.54" on ESP32 with GxEPD2

Dear all,
I'm new to e-inks and as a first step, I got myself a Waveshare 1.54 display.
I am using the Hello World example.

I connected it up like this:

Pin ESP32 Description
VCC 3V3 Power input (3.3V)
GND GND Ground
DIN P14 SPI MOSI pin, data input
SCLK P13 SPI CLK pin, clock signal input
CS P15 Chip selection, low active
DC P27 Data/command, low for commands, high for data
RST P26 Reset, low active
BUSY P25 Busy status output pin (means busy)

I uncommented this line in GxEPD2_display_selection_new_style.h:

#define GxEPD2_DRIVER_CLASS GxEPD2_154     // GDEP015OC1  200x200, IL3829, (WFC0000CZ07), no longer available

When running the code, the display stays blank and I get the following output o the serial monitor:

_Update_Full : 1
_Update_Part : 1
_Update_Full : 1
_PowerOff : 1
_PowerOff : 1

I'm afraid this doesn't tell me much.

I have also tried to uncomment other variants, but then I get even less in the serial monitor.

any idea what might be wrong?

@viktak, Hi, welcome to the forum!

I suggest you try with this line (if it is a recent Waveshare version):

//#define GxEPD2_DRIVER_CLASS GxEPD2_150_BN  // DEPG0150BN 200x200, SSD1681, (FPC8101), TTGO T5 V2.4.1

else report the inking found on the flex connector.

I suggest you use the suggested wiring:

// mapping suggestion for ESP32, e.g. LOLIN32, see .../variants/.../pins_arduino.h for your board
// NOTE: there are variants with different pins for SPI ! CHECK SPI PINS OF YOUR BOARD
// BUSY -> 4, RST -> 16, DC -> 17, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V

else report why you use a different wiring, and the board selected to compile for.
-jz-

Thank you for your quick and precise reply! I just implemented both changes you sugested and it worked immediately. Thank you!

And this is its log:

_PowerOn : 94000
_Update_Full : 3328000
_PowerOff : 139000
_PowerOn : 94000
_Update_Part : 733000
_PowerOff : 139000

For the sake of others who might end up here later in the same shoes, hereis the flex connector:

Finally a quick question: If I wanted to use multiple (similar) displays in a project, can I simply add them (all using a different CS and BUSY line)? Is your library prepared for that?

Thank you!!!!

1 Like

...and using a separate display instance for each. This is the straightforward solution. Also:

// create display class instances for each display, each instance with different CS line, each instance with RST disabled,
// (or use separate RST pins for each display),

If you run out of pins, or if you want to use common functions for different driver classes, you could take a look at GxEPD2_MultiDisplayExample.ino.

Thank you, that's what I thought.
Awesome library, thanks for your work!!!

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