robweber / omni-epd

An EPD (electronic paper display) class abstraction to simplify communications across multiple display types.
GNU General Public License v3.0
75 stars 16 forks source link

Waveshare 6" e-Paper #51

Closed grkngls closed 2 years ago

grkngls commented 2 years ago

Will be there a driver for the Waveshare 6inch (1448×1072) e-Paper (https://www.waveshare.com/6inch-HD-e-Paper-HAT.htm)?

So it could be used with the SlowMovie Player.

robweber commented 2 years ago

There have been a few requests for this. The biggest hurdle currently is the lack of an official Python driver for that device, since that is what this project and most supplementary projects (like SlowMovie) use to interface with the EPD device.

In #48 I did reference a third-party library that attempts to make a Python lib for communicating with IT8951 devices. On paper at least, integrating this with omni-epd should be possible. The main issue comes down to testing. I don't have access to one of these devices which makes adding it difficult. I did flag that issue as help wanted should anyone want to tackle it.

micheledicosmo commented 2 years ago

@robweber I do have an IT8951 B running on an (old) Raspberry Pi with a Waveshare 7.8 1872 x 1404 resolution, and was trying to make your project work with it so that I can run SlowMovie. Do you want to join efforts?

robweber commented 2 years ago

I would definitely be interested in merging in anything you can put together that would integrate the IT8951 devices with this library. I don't own one of those devices myself but I could assist with trying to get the right file structure and build process figured out in the final project. Do you already have something started?

If you have a good handle on how to interact with the device the key to integration will be to create the VirtualEPD class where you can translate those methods to the common calls needed by this library. I could create a branch and stub out that child class so you could take the implementation from there if that works?

micheledicosmo commented 2 years ago

I tried to make https://github.com/GregDMeyer/IT8951 work with my 7.8'' Waveshare device, but with no luck. I'll keep trying but I fear I might need to adapt the original WaveShare C example code, or at least get a good understanding of how it works to make it work.

At the moment I am getting a generic "connection failed" error right at the beginning of the library code, when it queries the display information, and a no-response/all-zeroes response is received.

micheledicosmo commented 2 years ago

Nevermind, I managed to connect, will keep working on making the library behave OK and get back to you. Ta!

micheledicosmo commented 2 years ago

Ok I managed to make it work. I would be very happy if you created a stub in a branch for me. Thanks!

robweber commented 2 years ago

I'll definitely do that - I'll post back here. Thanks for working on this.

robweber commented 2 years ago

I added a new branch here: https://github.com/robweber/omni-epd/tree/it8951. If you want to clone that and submit any changes as PR that would be great.

The main file you'll want to work on is the IT8951Display class file. This is really just a copy of the Mock class file. For the device name I used _waveshareepd.it8951. Go ahead and change that if it makes sense to do so. You can run omni-epd-test with that device name so at least the hooks are in place to load the device by name.

Hopefully by looking at some of the other implemented classes this will be enough to get the device working in this framework. Let me know if you need me to do anything.

robweber commented 2 years ago

I've attempted a start at doing this but need testers as I currently do not have a device. My implementation is based of examples in the repo. Those interested please see #57.