WeAct Studio ePaper Screens

Various posts on this forum have been for the WeAct Studio ePaper screens. In particular I found the 2.9" BWR screen here and was able to get mine working almost immediately.

Trying to add to my ePaper collection, I saw the WeAct 4.2" screens and went to give them a go only to find that it also required some special steps and it seemed to only be for the BW screen and not the BWR. Lot’s of searching later and I didn’t find a driver for the BWR screen.

To wrap this up and give back to the community I have created a WeAct Studio ePaper repository located at (that maybe one day will just get implemented into ESPHome…but, until then)

This repository/code covers:

ESPHome pull request #6209 by MrMDavidson for the WeAct Studio 4.2" BW screen.

ESPHome pull request #6226 by jbergler for the WeAct Studio 2.9" BWR screen.

And…my implementation of the WeAct Studio 4.2" BWR screen which is technically just a modification of the code jbergler provided to work with the larger screen.

In addition…as of the time of this post, it also includes all the current WaveShare ePaper models as well (so using this code, for the moment, won’t take away support for any other WaveShare ePaper screens you may be using).

If anyone has any additional WeAct Studio ePaper models they have working (and is not currently included in what the public has available to it) or, knows of any additional custom PR implementations needed to get one to work, I would be happy to add it to the repository for all to use (just let me know).

4 Likes

What about the 1,54" WeAct Escreen?

I don’t have one to test…do you? Have you tried any of the existing 1.54" WaveShare screen models with it?

The Waveshare is 1.54 for the WeAct is working fine.

Thank you very much @RaceNJason great job ! If anyone interested I can post my config for a weather forecast usage

Although this is a deviation from the ESPHome code, I added an additional function in the waveshare_epaper.h file (in my repository that is) as follows:

int is_display_busy() { return (this->busy_pin_ == nullptr ? 0 : this->busy_pin_->digital_read()); }

The purpose was to immediately go to deep sleep the moment the display was done updating. Without outside access to the busy pin (and I didn’t want to waste another pin jumpering it just to read it), this wasn’t possible and using a timer to ‘guess’ wasn’t ideal. This function perfectly solves the problem and optimizes my battery usage.

Would be nice if this function was implemented into the main esphome code, but…I’m not sure if any of the WeAct screen code will be, so this is as good as it gets for now.

Thanks @RaceNJason this looks so good that i thought it was time I tried to get my head around building with Esp-32s, so have ordered the WeAct 2.9 screen to have a go!

Problem is I am now lost as to where to start - I had some success with Arduino bits years ago - but very rusty now tbh!

So far I have added my ESP32 into ESPHomeBuilder, so it’s there and online. I’ve copied the GitHub folder across to ESPHome too …but what code do I put where …which pins do I connect the screen too, and where do i specify which I’m using in the code …I really need a “How to for dummies” I think - if anyone can point me in the direction of one?

In no way am I’m trying to be mean in this response…but, selecting a particular post and then asking the people involved in that post to teach you basics is not a good way to proceed regardless of your skill level. In essence you need to start with basics to learn and understand the concepts and yaml programming language first and foremost. The number one reason this is important is because you can take all sorts of examples out on the internet and apply them to your setup…but, what do you do when you want to modify it or when something goes wrong? Continually going back to the source and asking everyone else will quickly get you ignored when everyone sees that you are not willing to put forth any effort other then to ask someone else to fix it. In simple terms…the level of questions you are asking means you have done very little to research this yourself (i.e. I’m pretty sure on my Git repository for this, there is an example yaml file…it ONLY shows the key lines for the ePaper component because it assumes you already know how to create a project and then copy over those elements).

Go to Google and search for “ESPHome ePaper”. Read the whole article and follow it closely (Waveshare E-Paper Display - ESPHome - Smart Home Made Simple). Also important to follow this component’s parent class Display Component - ESPHome - Smart Home Made Simple since that explains drawing and other stuff. Plenty to learn and play with…if you take the time to read it. ESPHome component pages is absolutely the first place to start when implementing a device.

Go to ESP32 Development Boards List - Detailed Information, look up your board and see what pins are available. Use this resource for all future projects in regards to what pins you can use (learn this, not all pins on a ESP32 dev board are really available to use).

The 2.9" BW screen I’m pretty sure does not require any custom components since it is supported in the native ESPHome ePaper component…which means you don’t need to copy anything from anything I’ve done and can use the examples ESPHome provides on their component page. If you have the BWR screen then you need the custom component (but…I think you can actually still use the original BW driver and just won’t get Red).

If you have a single question after implementation, go ahead and post it. Otherwise, you may want to just try something with ESPHome that doesn’t require attaching a device to it. Or better yet, start with blinking an LED as most do. Going from nothing to ePaper display is a bigger jump than nothing to blinking an LED.

Thanks for links that’s fantastic - I genuinely appreciate you taking the time to post them.

I wasn’t looking to be spoon fed or waste your time, so apologies if that wasn’t clear in my original post - just my Googling sent me round in circles and didn’t turn up the resources you’ve kindly recommended. Hopefully your post will help any future hobbyists who like me want to learn something new and stumble across this thread too.

Thanks again