Unable to get multiple e-Paper modules to operate with Arduino UNO R3 or R4

Hello Everyone,

I have been trying for several days to use various E-Paper modules with an Arduino UNO R3 and an Arduino R4 WiFi. It's been an incredibly frustrating experience as I'm not having any luck with any of the modules.

The E-Paper modules I've been attempting to use are as follows:

Waveshare 1.54" E-Paper black & white module

Waveshare 2.9" E-Paper black & while module

WeAct Studio 2.9" E-Paper black & white module

Waveshare 4.2" E-Paper black & white module

The connections I'm using between the Waveshare modules and Arduino are as follows:

|Waveshare | Arduino UNO|
|VCC | 3.3V|
|GND | GND|
|DIN | D11|
|CLK | D13|
|CS | D10|
|DC | D9|
|RST | D8|
|BUSY | D7|

The connections I'm using for the WeAct Studio module and Arduino are as follows:

|WeAct Studio | Arduino UNO |
|VCC | 3.3V |
|GND | GND |
|DIN | D11 |
|SCL | D13 |
|SDA | D10 |
|DC | D9 |
|RST | D8 |
|BUSY | D7 |

I've attempted to use the example sketches provided by both Waveshare and WeAct Studio. The sketches compile and upload to either of the Arduino's with no errors, but yet nothing whatsoever happens with any of the display modules.

In addition, I've also tried using the GxEPD2 library found on GitHub without any success either.

To further explain my attempts using the GxEPD2 library, as per the example sketch (GxEPD2_HelloWorld.ino), the instructions state to:

// select the display class and display driver class in the following file (new style):
#include "GxEPD2_display_selection_new_style.h"

In the file GxEPD2_display_selection_new_style.h, the display class for the type of modules I'm using was already uncommented:

#define GxEPD2_DISPLAY_CLASS GxEPD2_BW

For the display driver class, using the Waveshare 2.9" module as an example, I have uncommented each of the following (one each time) in my attempts to make some progress, but nothing happens to the display regardless of the line I uncomment:

//#define GxEPD2_DRIVER_CLASS GxEPD2_290 // GDEH029A1 128x296, SSD1608 (IL3820), (E029A01-FPC-A1 SYX1553)
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5 // GDEW029T5 128x296, UC8151 (IL0373), (WFT0290CZ10)
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5D // GDEW029T5D 128x296, UC8151D, (WFT0290CZ10)
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_I6FD // GDEW029I6FD 128x296, UC8151D, (WFT0290CZ10)
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b)
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94_V2 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b), Waveshare 2.9" V2 variant
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_BS // DEPG0290BS 128x296, SSD1680, (FPC-7519 rev.b)
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_M06 // GDEW029M06 128x296, UC8151D, (WFT0290CZ10)
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T94 // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)

I don't believe either of my Arduino UNOs are defective as I'm able to successfully run any other example sketches (not involving e-Paper modules) I tried. And I have also swapped out the jumpers I'm using to connect the e-Paper modules with the Arduino's in case those might have been defective for some reason.

I really don't know what else to try. I've double and triple checked my connections between the E-Paper modules and the Arduino UNO's and I've already exhausted all options I can think of with the sketches I've tried using.

If anyone might have an idea of something I haven't yet tried or considered, I'd really appreciate reading about it.

Thanks!

Daniel

Would you be up for trying one more time? Dronebotworkshop has done a lot of good instructional pages with accompanying videos.

@xfpd,

Thanks for the reply and the site suggestion for DroneBot Workshop. Unfortunately, it doesn't really provide any additional information then what I've already seen on other sites. I did attempt to use the "soonuse" files that were linked on the site, but they also didn't make any difference with the E-Paper modules I have - in other words, nothing happens at all to the displays.

Daniel

Could you please post the full code you are using, and pictures of your wiring?

It'll make it a lot easier for people to catch any small mistakes that have slipped through.

If all the combinations of hardware, libraries and software do not work... what is left? (1) power requirements, (2) wiring and (3) your insisting you have done everything right. When you get to the "nothing works" stage, it is time to understand how to look critically at your own work (obviously you have something wrong), then show your work for others to scrutinize. I would concentrate on you being the critic of your own work. You will be happy at the result when you can do this.

Hi Daniel, welcome to the forum!

GxEPD2 has a default or suggested wiring for every processor/board supported by the examples.
See GxEPD2_wiring_examples.h.
The wiring suggestion for AVR processors differs from the Waveshare examples, DC and RST are swapped:

// mapping suggestion for AVR, UNO, NANO etc.
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11

You need to make sure that your wiring corresponds to the constructor parameters.
You can either change your wiring, or the constructor parameters in GxEPD2_display_selection_new_style.h in line 216:

// adapt the constructor parameters to your wiring
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));

Good Luck!
-jz-

@toddnz,

I have attached some photos of my connections here.



As for the code, I'm really not sure how to post it. The full code is comprised of six separate files. I was hoping I could upload it all as a ZIP file, but new users are not able to do that.

Thank you,

Daniel

1 Like

@ZinggJM,

Thank you for the welcome.

Rather than changing my connections, I have swapped the DC and RST in the GxEPD2_display_selection_new_style.h file as you suggested.

I tried again after changing line 216, but still not having any luck.

At this point, I'm very much lost.

Thanks again!

Daniel

Thank you for going to the trouble.

One thing that stands out straight away: the label on the back of the WeAct board reads "I/O" 3.3V, but I believe Uno R3 and R4 both have 5V I/O(?) Are you trying to connect directly to the display, or is there a level-shifter in between?

I would maybe suggest that you try to get the Waveshare displays working first, as GxEPD2 specifically supports that brand.

(Edit: just a quick note - unlike the WeAct display, I believe you can also use 5V IO directly from the Uno with the Waveshare displays; a compelling reason to work with them instead)

The user above, ZinggJM is the author of the GxEPD2 library: pay close attention to his comments, nobody is better informed on the code. I won't get in the way here and will leave you in peace to work on the issue.

Best of luck!

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