Go Down

Topic: Waveshare e-paper displays with SPI (Read 356931 times) previous topic - next topic

ZinggJM

Dear @ZinggJM, Does your library support 5.65inch ACeP seven colors module? If not, Waveshare provides technical specification and Application note reference design documents. Do you need some other things to have initial support for it? Do you have one or plan to have one (Edit: I prepared my post before, and just saw your last message talking about that display)?

I'm currently struggling to have some support for this screen module on esp32 hardware, and especially Arduino IDE. Their Arduino code doesn't support it, neither the code for their esp32 driver board... I could only test with a RPi, which is not the target platform I would like to use...

Thanks for your help. Best regards.

Nicolas
Hi Nicolas,

please take a look at README.md of GxEPD2

Quote
### Supported SPI e-paper panels from Good Display:
- GDEP015OC1     1.54" b/w
- GDEH0154D67    1.54" b/w, replacement for GDEP015OC1
- GDEW0154T8     1.54" b/w 152x152
- GDEW0154M09    1.54" b/w 200x200
- GDEW0154M10    1.54" b/w 152x152 DES
- GDEW0154Z04    1.54" b/w/r 200x200
- GDE0213B1      2.13" b/w
- GDEH0213B72    2.13" b/w, replacement for GDE0213B1
- GDEH0213B73    2.13" b/w, new replacement for GDE0213B1, GDEH0213B72
- GDEW0213I5F    2.13" b/w flexible
- GDEW0213Z16    2.13" b/w/r
- GDEH029A1      2.9" b/w
- GDEW029T5      2.9" b/w
- GDEW029Z10     2.9" b/w/r
- GDEW026T0      2.6" b/w
- GDEW027C44     2.7" b/w/r
- GDEW027W3      2.7" b/w
- GDEW0371W7     3.7" b/w
- GDEW042T2      4.2" b/w
- GDEW042Z15     4.2" b/w/r
- ACeP565        5.65" Waveshare 5.65" 7-color e-paper display 600x448
- GDEW0583T7     5.83" b/w
- GDEW0583T8     5.83" b/w 648x460
- GDEW075T8      7.5" b/w
- GDEW075T7      7.5" b/w 800x480
- GDEW075Z09     7.5" b/w/r
- GDEW075Z08     7.5" b/w/r 800x480
- GDEH075Z90     7.5" b/w/r 880x528
- GDEW1248T3    12.48 b/w 1304x984
Quote
#### Version 1.2.11
- added support for Waveshare 5.65" 7-color e-paper display 600x448
- the unknown controller of this display doesn't support partial update, as far as known
- 7-color graphics support is available with class GxEPD2_7C
- 7-color graphics support requires paging even on ESP32
- 7-color graphics support causes heavy paging on Arduino UNO, gets very slow
- refresh is quite fast for a color e-paper display: 12 seconds
BTW: welcome to the forum! Did you already 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.

kalon33

Hi Nicolas,

please take a look at README.md of GxEPD2

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

Jean-Marc

Thanks for your answer, I was looking for the wrong GxEPD version (https://github.com/ZinggJM/GxEPD), sorry. Do you refer the General Guidance because I sent some links?

ZinggJM

@kalon33,

Quote
Do you refer the General Guidance because I sent some links?
No. I started to greet all newcomers to the forum, and to point them to this topic, to make sure they know it. It helps to reduce the number of posts needed to resolve questions.

But yes, thank you for the clickable links. I should have congratulated you. Now I have clicked on the last one, thank you, I had not noticed this application note before.
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.

ZinggJM

Version 1.2.13 of library GxEPD2 is available through Library Manager.

- added support for GDEH0154Z90 1.54" 200x200 b/w/r, replacement for GDEW0154Z04
- GDEH0154Z90 has partial window addressing, but no partial window refresh
- added some missing constructor examples, e.g. for IT8951 Driver HAT on Due
- cleaned-up wiring information in the examples

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.

hudejo

hi

Thanks for this excellent library @ZinggJM
I got a waveshare 6" ePaper (the 800x600 resolution one) with the HAT ( https://www.waveshare.com/6inch-e-paper-hat.htm ) as I see your GxEPD2 library supports it with ESP32 boards.
How well is it supported? Are there any issues (e.g. I see on Github that deep sleep is not working? "uses 3.3V data lines, but 5V supply (~80mA active, ~20mA stand-by, sleep doesn't work)" )

I'm interested that would it be possible to run ESP32 connected to such a display on batteries for weeks/months so it spends most of its time sleeping.

Thanks!

BTW I think it would be a good idea to enable issues in your Github repo, then such questions would be easily searchable.

ZinggJM

@hudejo,

I have disabled issues on my GitHub repositories, because issues were misused for questions and discussions. I don't like issues, as I had worked in an environment where "quality reports" were misused for feature request, because of different budget positions.

Now I am retired and have the full freedom to do what I like! And my customers (users) have to live with what they get.

The e-paper hat is made for use with Raspberry Pi. So power consumption is not of concern.
It has an SPI connection capability, so it can be used with ESP32, ESP8266, or other Arduino board.

I don't recommend it for use with battery operation. And yes, there aren't many users of it with my library, so it isn't well tested.

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.

Cocorico

#2106
Oct 07, 2020, 09:32 am Last Edit: Oct 07, 2020, 09:41 am by Cocorico
Hello JM,

Thanks for your libraries.

I have an issue with GxEPD. I have a 4'2 epaper display from waveshare controlled by an ESP8266 running on batteries.
To save battery, I put the ESP into deepsleep mod for about 1 min. After that, I just want to update the time on screen and do a partial update, which works great with use on "delay" instead of deepsleep. But when I try to do the partial update, the screen becomes "snowy". I search on the internet about this pb but can't find anything.
Is there anything to do to make it works ? Maybe GxEPD2 works better for this purpose ? Any advice ?

You can find my code here (it's not complicated), just pretend DEBUG is not defined : https://github.com/CorentinPacaud/station_meteo/blob/master/station_meteo_ind/station_meteo_ind.ino

Thanks

CP.

ZinggJM

@Cocorico,

I am too lazy to analyze your code in detail.

But I got the impression you do a partial update to full screen with a buffer content that has not been initialized after processor reset (after deep sleep), line 269.

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.

miraculix200

#2108
Oct 07, 2020, 02:43 pm Last Edit: Oct 07, 2020, 03:00 pm by miraculix200
Didn't find any answer to my question in this thread: Is it possible to send the processor (ATmega328 in my case) to sleep during paged updates, or while it is waiting for the display to be completely updated? Or is it sending data extremely slowly to the display?

Also, is it normal that the circuit needs >2mA when the reset pin is connected? I have to use an NPN transistor controlled by another GPIO pin to cut the reset connection, to make it use 13uA in deep sleep.

Using the 3 color 2.9" board from Waveshare:
https://imgur.com/a/h2poBM6

ZinggJM

#2109
Oct 07, 2020, 03:00 pm Last Edit: Oct 07, 2020, 03:11 pm by ZinggJM
Didn't find any answer to my question in this thread: Is it possible to send the processor (ATmega328 in my case) to sleep during paged updates, or while it is waiting for the display to be completely updated? Or is it sending data extremely slowly to the display?
No, not with any of my libraries.

Might be done during refresh. But for subsequent partial updates, the screens contents need be re-sent after refresh for differential updates. Therefore this is not feasible for paged drawing combined with differential update.
Some newer controllers have the N2OCP feature (copy new to old (buffer) after refresh); for these it would be feasible.
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.

miraculix200

#2110
Oct 07, 2020, 03:20 pm Last Edit: Oct 07, 2020, 03:23 pm by miraculix200
I'm not using partial updates, because it looks weird (background color in updated area being lighter than in the rest of the display). Or with partial update you mean the page updates?

So to make it sleep during refresh I'd have to change this to something else?     
Quote
} while (display.nextPage());
Or I have to change the nextpage function in the library? If you point me at the right direction I'll probably figure it out myself.

I'm intending to create my own controller PCB with ATmega328 and NRF24L01+. Would I need a seperate IC to include the N2OCP feature?

ZinggJM

@miraculix200,

I should not give a quick answer before having asked for the details. Now I know that you have a 3-color e-paper.

3-color e-paper displays don't have differential refresh. There is no "old" buffer to make equal. The "old" buffer is the color buffer instead.

So the refresh is at the end. You can comment out the _waitWhileBusy() after the refresh, if you make sure the controller isn't busy when you send the next command.

But note that I am not willing to help with such abusive modifications of my library.
You better use GxEPD instead of GxEPD2 for this, as the modification would be local to the 2.9" 3-color class only.
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.

miraculix200

So the refresh is at the end. You can comment out the _waitWhileBusy() after the refresh, if you make sure the controller isn't busy when you send the next command.
I'll have a look at it later. To find out if the controller is busy I just have to read the status of the busy pin?

What would be different if I used the GxEPD2_BW class instead? I don't really need the red color.

ZinggJM

Quote
What would be different if I used the GxEPD2_BW class instead?
I have never tried, as it makes no sense. Might work, but no difference in refresh times.
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.

miraculix200

#2114
Oct 07, 2020, 05:08 pm Last Edit: Oct 07, 2020, 05:09 pm by miraculix200
I have never tried, as it makes no sense. Might work, but no difference in refresh times.
Actually the refresh times are different. I was using that class before, and it took like 5 seconds to refresh the display (full screen). With the 3 color class it takes 15 seconds to refresh. Though I'm using 400 buffer size for the 3 color class, and 800 buffer size for the BW class.

Will probably use the BW class again, but I'd still prefer to increase battery life by making the ATmega deep sleep these 5 seconds.

Go Up