peterhinch / micropython-nano-gui

A lightweight MicroPython GUI library for display drivers based on framebuf class
MIT License
511 stars 88 forks source link

4.2" EPD V1 discontinued, Pico now shipping with V2 #68

Closed ZedOud closed 4 months ago

ZedOud commented 4 months ago

Hello, after I saw this PR request #64 I was concerned. As I understand, Good Display (the EPD supplier to Waveshare) is a, euphemistically speaking, "forward looking company" (meaning they discontinue product versions they see as obsolete).

If you look at (one of the many) storefronts for Good Display, they no longer list the V1 version (lacking fast refresh), and if you have a direct link to the product listing for v1 displays, some of those storefronts still had some in-stock last I checked, but the V1s are clearly discontinued. My understanding is that the Pico package from Waveshare was the only remaining way to purchase the V1 displays (my speculation: a higher quality binned version). They have hence run out of stock.

To confirm this, I just (June 25, 2024) purchased 2x of each format of the BW 4.2" Waveshare EPD: Pico (SKU 20344), module (SKU 13353), and bare (SKU 13186). All of them arrived (June 28, 2024) with the V2 sticker on the back.

The last time, a while ago, when I purchased the 4.2" Pico format from this link that you provide on your compatibility page I received V1 displays. Now however, I have received only V2 displays.

A few months ago, I purchased and received the V2 bare displays (and used them with the Waveshare Pico-ePaper-Driver-Board and Adafruit ThinkInk EPD Pico/RP2040 adaptor boards) and I can report they have the same if not better partial refresh clarity and (edit: I actually should test all the units with the Waveshare partial refresh code for V2) better contrast (V2 has a more consistent whiter white across all units so far).

I'd be happy to answer any questions about my research into the availability of the V1 4.2" EPD displays, the quality difference between the various version of 4.2" EPDs (I have most of them: the bare & module V1 Yellow; the bare & module & Pico versions of BW V1 & BW V2; Pico V2 Red; the bare integrated touch with front-light), or any other questions about the situation you might have.

peterhinch commented 4 months ago

Thanks for the information. I would appreciate some clarification. You bought displays from this link and received V2 displays. Questions:

I'll reopen the PR - I guess I'm going to have to buy one of these things as I can't support code without the ability to test it. I much prefer Adafruit products as they have lower levels of version churn.

ZedOud commented 4 months ago
  1. The V1 and V2 bare Displays are nearly identical to the point of being difficult to distinguish a nicer V1 from a V2 (V1 whites aren't as white). The PCB color is slightly different on the Pico and Module versions than even a recent Pico Red V2 I had ordered a few months ago. You can see on the spot the version stickers go, the V2 PCB no longer list "B/W/Y" because Yellow has been discontinued too I think (or at least Waveshare has dropped Yellow).

  2. I used the Waveshare's vanilla micropython implementation. I will post my version of the file. I have not tested PR #64, I'll post back here once I have.

  3. The V2 partial screen refresh is very clean. In my version of Waveshare's vanilla uPy code I tested this partial screen refresh in three ways:

    • a spinning line that overlaps itself (much like a minute hand)
    • an overlapping box that steadily moves across itself
    • two sets of numbers incrementing to 30.

I ran my example code on Pico Waveshare board and the Adafruit ThinkInk board with identical results.

I attempted to get a side-by-side of the equivalent code running on a V1 display, but Waveshare's vanilla uPy implementation of Partial for V1 is bad (as a comment in their own code asserts). Waveshare's V2 nano-GUI driver implementation doesn't seem to have implemented partial screen refresh. I compared my experiments to your partial screen refresh clock and the ghosting is similarly minimal. I've actually had a Pico V1 display running your micro-GUI async demo for weeks without full-screen refreshing and the ghosting doesn't prevent it from being read, it's very nice. I'll try to set up a visually similar experiment with the V2 displays.

Also, the V2's new fast refresh mode looks just as good as a full screen refresh.

The code: Pico-ePaper-4.2_V2-partial-test.py.zip

Pictures from a microscope, front-lit, of the 3 partial refresh tests. IMG_4932 IMG_4933 IMG_4934 IMG_4935

This picture is both showing the results of the partial screen refresh experiment, as well as showing it perfectly overlapping with the V1 bare display it is sitting on. IMG_4939

The V1 display is interesting in how it is more see-through from behind. IMG_4943

Finally, here is a layout of all the versions of the 4.2" EPD I have. I highly recommend the Adafruit ThinkInk, my code includes the pin numbers and SPI settings for using it. IMG_4942

ZedOud commented 4 months ago

About an hour ago I got the V2 to display the micro-GUI epaper demo properly once with a few tweaks of hardware_setup.py and tweaks of PR #64 from this download of it (presumably the same as the PR code?) but I haven't been able to reproduce that success since. I'll be working on this tomorrow, so I'll keep this updated. You can see in this picture, below the noise, the remnants of the micro_GUI epaper demo on the V2 display.

IMG_4947

peterhinch commented 4 months ago

@ZedOud Thanks for that. Waveshare don't make it easy to distinguish their products. However there is an obvious silk screen difference between V1 and V2. My usual supplier only has V1 boards so I've ordered one direct from Waveshare EU. Hopefully I'll get a V2 board soon.

kingtimm commented 4 months ago

About an hour ago I got the V2 to display the micro-GUI epaper demo properly once with a few tweaks of hardware_setup.py and tweaks of PR #64 from this download of it (presumably the same as the PR code?) but I haven't been able to reproduce that success since. I'll be working on this tomorrow, so I'll keep this updated. You can see in this picture, below the noise, the remnants of the micro_GUI epaper demo on the V2 display.

IMG_4947

64 gives that staticy screen display due to it mapping PIN8 to PIN7 instead. I'm on mobile right now, but the author made a note why. It works with either changing the driver or changing on your pin header.

peterhinch commented 4 months ago

There is now a driver for the V2 display contributed by Michael Surdouski which we have tested on micro-gui, so closing this. Please open a new issue if you require support.