Go Down

Topic: Good Dispay ePaper for Arduino (Read 110099 times) previous topic - next topic

tropic

There is no more sun, I will try tomorrow morning. Thanks

Bjack795

News: e-paper displays with DES technology

I just discovered this Power Point presentation from Good Display about (their) new technology:

Display Electronic Slurry(DES) Introduction

1.54 inch DES e-paper display high resolution 200x200 partial refresh GDEW0154M09

Jean-Marc

Hi!
It seems very interesting, I'm glad that there are some researches going on in this field.
I've seen the presentation but they didn't mention speed improvements.
Anyways I'm impressed by the colours of the 6" full colour screen with the Dragon Ball image.

Regards

mutexx

I'm using the partial refresh mode with several refresh as you advise in a previous post. But the screen goes clear after few seconds under the sunlight.
Have same problem with GDEH0213B73 and GxEPD2. The image disappears from the screen completely to white, even if I try to partial refresh a small part of it. If I do a full screen update, the behavior is the opposite, black areas remain black and white areas turn to gray. The image remains readable but the contrast is low. After a full screen refresh, I tried calling display.hibernate () but nothing changes

axelleap

Hi,

My NodeMCU seems not to be rebooting properly. I know this is not a NodeMCU forum, but I believe the issue to be connected to the way I have connected my ePaper to the NodeMCU some how.

My project is to create a temperature sensor that displays the current temperature on an ePaper screen.
I use a NodeMCU to command the temp sensor and the ePaper screen. Temperature sensor and ePaper are therefore connected to the NodeMCU.

I program my NodeMCU using Arduino IDE, compile the sketch, disconnect D8/CS (orange cable of the ePaper screen) for upload to happen, then connect it back. The program works fine: the temperature is read from the sensor, and displayed nicely on the ePaper screen.

Now, I unplug the USB cable that powers my NodeMCU to move it to another room. There, I power it up (via USB). Nothing happens! I try to disconnect/connect CS just in case, nothing.

My setup:
  • NodeMCU v3.4
  • ePaper module 1.54'', black and white. I use this: #include <GxGDEP015OC1/GxGDEP015OC1.h>
  • Temperature sensor is DS18B20. I put a 4.7 kOhm resistor between Vcc and Data pin.


I use GxEPD.
For the connection to the between the NodeMCU and the ePaper, this is how I mapped it (I believe it is quite common):

Code: [Select]

GxIO_Class io(SPI, SS/* CS */,  D3/* DC */,  D4/* RST */);
GxEPD_Class display(io /*RST=D4*/ /*BUSY=D2*/); // default selection of D4(=2), D2(=4)


Note: I used to try the same setup with a Wemo D1 mini, and people told me to try other pins but I was short of pins. So I tried with a NodeMCU. But both Wemo  and NodeMCU behave the same way with regards to my project: it works fine when I upload from arduino. As soon as I power off, something happens and either the NodeMCU does not boot properly again, or the program is erased in between (?) or else.

If you have solutions, I'd love to hear. Also if you have a possible explanation of what is happening, because I don't understand, nor have a clue how to debug.

Thanks!



ZinggJM

@axelleap,

it would be clearer if you would provide a link to the e-paper module you use.

The 1.54" e-paper panel connected through a DESPI-C02 to ESP8266 usually doesn't produce this issue.

But if you use a board or adapter board or HAT with level converters, you may get this issue.

The GPIO15 which is usually defined for SS also serves as strapping pin for boot mode.
If this pin is not near zero at processor reset, you get the wrong boot mode.
You can see this in Serial Monitor, if you select bitrate 78400.

Maybe a pull-down resistor of 3.3k helps. Otherwise you need to re-arrange pins.

Jean-Marc
No personal message please; any question may be useful for other users. Use code tags for code. Make links clickable with URL tags. Provide links to the product in question.

axelleap

Hi Jean-Marc, thanks for answering!

@axelleap,

it would be clearer if you would provide a link to the e-paper module you use.
@ZinggJM The ePaper I have is marked "1.54inch e-Paper Module", I don't have any more information. On one side, I have a connector with a strap of 8 cables.
I looks exactly like this one, and on the other side you have the screen.

The 1.54" e-paper panel connected through a DESPI-C02 to ESP8266 usually doesn't produce this issue.
I confirm I do not have that.


The GPIO15 which is usually defined for SS also serves as strapping pin for boot mode.
If this pin is not near zero at processor reset, you get the wrong boot mode.
You can see this in Serial Monitor, if you select bitrate 78400.
I didn't notice anything when setting bitrate to 74880.

Maybe a pull-down resistor of 3.3k helps. Otherwise you need to re-arrange pins.
I'd prefer to re-arrange pins if possible, rather than use an additional resistor. Can I use something different for SS? I'm afraid I don't understand what pin I can use, or not.

Code: [Select]

GxIO_Class io(SPI, /*CS=D8*/ SS, ...

ZinggJM

@axelleap,

Compare the backside of the board. If it looks the same, you have a Waveshare board with LDO and level converters.
This is known to produce the boot mode problem on GPIO15.
It even looks like the newest version of Waveshare connection circuits, with the "clever" reset circuit that cuts power to the panel on reset. This is known to not work reliable with GxEPD or GxEPD2.

The ESP8266 used to report initial boot messages with bitrate 74880 on Serial. Maybe your connections inhibit boot at all.

You can use any pin for CS, but you can't use SS for anything else, if you use HW SPI, as with GxEPD or GxEPD2.
But you need to be cautious with strapping pins and with pins that are also used for flash or serial RAM of the processor.

Note that the NodeMCU doesn't have more usable pins than e.g. a Wemos D1 mini, as the additional pins are used for flash and RAM.

I recently learnt that MISO no longer can be read with digitalRead(MISO), so you can't use it for BUSY.

The ESP8266 simply doesn't have enough free pins, if you need additional connections. I can't help.
I would use an ESP32 in this case.

Jean-Marc
No personal message please; any question may be useful for other users. Use code tags for code. Make links clickable with URL tags. Provide links to the product in question.

axelleap

Yes!!! So happy: I found one available that works: D0 !

Code: [Select]

GxIO_Class io(SPI, /*CS=D0*/D0, /*DC=D3*/ 0, /*RST=D4*/ 2);


FYI, as expected, D6 did not work. Neither did D1.

Thanks!

-- Axelle.

nickjantz

I have a TTGO T5 V2.3, trying to flash to the onboard memory(or a SD card but that seems more difficult now) and I'm having difficulty. I load an example, uncomment the lines for my driver board(GDEH0213B72) and then upload to the device. It says done uploading, but the device does not change the display. Is there a way to power it via the usb in my computer and have the display change or do I have to use an external battery only to have it display what is in the sketch?

Thank you for all the help and work on this project!

ZinggJM

@nickjantz

The answer is: I don't know. And I don't really understand your post.

I have a box with several boards from TTGO. All of them have erratic upload behavior.
Sometimes upload works, sometimes not. Sometimes lower bitrate helps.
I decided to not waste time with these boards and put them away.

So please pardon me that I don't like posts concerning boards from TTGO.

You should observe diagnostic output in Serial Monitor.
The processor will inform you about the boot mode and success.
And GxEPD or GxEPD2 will produce diagnostic output, if started.

Please tell which library you use, and always post links to the product in question.

BTW: welcome to the forum! Did you read
General Guidance and How to use the Forum
?

Jean-Marc
No personal message please; any question may be useful for other users. Use code tags for code. Make links clickable with URL tags. Provide links to the product in question.

nickjantz

Please tell which library you use, and always post links to the product in question.


I will try to explain my question better as I'm not very familiar with Arduino in general. I mostly bought this board on a whim because it was cheap and figured if it doesn't work it's not a huge loss. I have done some other work with an ESP01, and I know there's 2 different modes, a 'run' mode and a flash mode, where if the device is in flash mode when it turns on it won't run the program on the board, just be available to flash from a USB. I was wondering if by turning this device(listed below) on through the USB it is maybe in flash mode and that's why it's not working. I will plug a battery into it later today and see if it does behave differently.

I am on this board:
https://www.aliexpress.com/item/32869729970.html

Using the GxEPD2 library, with ESP32 Dev Board as my board in Arduino IDE, all the other settings left the same as that is via the sellers instructions.

I will also watch the serial monitor during flash and do some more research here as to what may be going on.

In general I am looking to get my feet wet with e-paper and liked the idea of a board with integrated chipset, it looks like with this library the waveshare boards are preferred correct? With all the work you've put into this I will likely look at some of their boards if they work better anyways.

Thanks again for all your help, this community and support are great!

ZinggJM

#401
Aug 15, 2020, 05:00 pm Last Edit: Aug 15, 2020, 05:56 pm by ZinggJM
@nickjantz,

I have an early version of a black TTGO T5 with 2.9" b/w display. It must have worked, as there is still "Hello World!" on its screen.

But I have thrown out the wiring and constructor values for it from my examples. So I don't know what pin they use for DC, it is not on their picture on the web site https://www.aliexpress.com/item/32869729970.html

They use 17 for DC, like my suggested wiring. See: https://github.com/LilyGO/TTGO-T5-ePaper1.54

I don't want to spend time on this now.

But I have seen a customer comment on this site related to your issue:

https://www.aliexpress.com/item/32850386996.html

See also last sentence of README.md: https://github.com/espressif/arduino-esp32

Jean-Marc
No personal message please; any question may be useful for other users. Use code tags for code. Make links clickable with URL tags. Provide links to the product in question.

johan_forsvoll

#402
Aug 20, 2020, 12:59 pm Last Edit: Aug 20, 2020, 03:11 pm by johan_forsvoll
@ZinggJM


*** Bug report  ***

First of all: Thanks for a great framework/library for the displays. Saved me a lot of work!

I created a new driver for the new 3-color 2.9" (using the new SSD1680 controller replacing the previous IL0373 from August 2020). The code is based on Good Display samle code and from GxEPD2 display drivers using SSD1680/SSD1681 in github. GxEPD2_154_D67.h/cpp was used as a template.

Panel: GDEM029C90
Panel spec.: http://www.good-display.com/companyfile/GDEM029C90-Specification-322.html
Controller: SSD1680
Controller spec: http://www.e-paper-display.com/download_detail/downloadsId=960.html
Controller spec (new site): http://www.good-display.com/companyfile/101.html

I am running the same code on a ESP8266 and a ESP32 and noticed that the content were mirrored on the ESP32... After some debugging, and a lot of Serial.print(), I managed to pinpoint the bug to GxEPD2_3C.h

It seems that the internal variable '_mirror' is never initialized, not in the c-tor and ont in init().

Workaround: make a call to <GxEPD2_3C>.mirror(false) during setup/initialization of the display object.

ZinggJM

Version 1.2.12 of library GxEPD2 is available through Library Manager.

- fixed GxEPD2_MinimumExample.ino to draw black on white (white on white was invisible)
- added example GxEPD2_HelloWorld.ino
- updated wiring info and constructor parameters for the actual Waveshare e-Paper ESP8266 Driver Board
- added some missing explicit initializers (nobody noticed as compilers usually initialize simple members)

The update for the actual Waveshare e-Paper ESP8266 Driver Board is thanks to a board donated by Lukas, @luki_v11.

Jean-Marc
No personal message please; any question may be useful for other users. Use code tags for code. Make links clickable with URL tags. Provide links to the product in question.

armadillo98

I really need some help with my new epaper modules.  I'm not sure whether I've bought some bad epaper or my coding is bad.

I wasn't able to get the whites to stay whites. 

I have attached images here.  Right after the code finished setup, the display was perfect, white being white, black being black and yellow being good-enough.  but a few seconds after that, you can see the yellow particles started appearing on the display (left hand side) and in less than 10 seconds, all the whites became yellowish.  I tried different patterns, drawing bitmaps etc, but the edges always started turning yellowish and then all the whites ended up very yellowish after around 10 sec.

FYI,  I am using D1 mini (Esp8266), wired up with dupont / breadboard to the DESPI-C02 display driver directly (no resister or anything in between).  Wiring was exactly the same way as the suggested wiring in GxEPD2 library ( BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, SCK -> D5, SDI -> D7, GND -> GND, 3.3V -> 3.3V ).  The display is a 2.9" B/W/Yellow GDEW029C32.

For power, I tried both with my laptop USB port as well as a 5V3.1A USB charger socket. Same problem.  also, I bought and tried 2 modules , both displayed the same problem.

The code I used is as follows.  I tried hibernate() instead of powerOff() or not doing powerOff at all. Nothing helped.

I feel very frustrated, any help would be greatly appreciated.  Thanks.

Code: [Select]

#define ENABLE_GxEPD2_GFX 0
#include <GxEPD2_3C.h>

#define MAX_DISPLAY_BUFFER_SIZE 800
#define MAX_HEIGHT_3C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));


#include <Fonts/FreeMonoBold12pt7b.h>
#include <Fonts/FreeMonoBold24pt7b.h> 



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

  display.setFullWindow();
  //display.firstPage();
  display.fillScreen(GxEPD_WHITE);


  display.setRotation(1);
  display.fillRect(0, 0, 296, 30, GxEPD_BLACK);
  display.fillRect(0, 32, 128, 128, GxEPD_RED);


  display.setTextColor(GxEPD_WHITE);
  display.setFont(&FreeMonoBold12pt7b);
  display.setCursor(0, 0);
  display.println();
  display.println("Very expensive stuff");

  display.setCursor(0, 24);
  display.setFont(&FreeMonoBold24pt7b);
  display.println();
  display.println(" ON ");
  display.println("SALE");

  display.setCursor(150, 90);
  display.setTextColor(GxEPD_BLACK);
  display.println("$100");



  //while (display.nextPage());
  display.display();
  display.powerOff();
  Serial.println("done");

}

void loop() {};

Go Up