ESPHOME - Waveshare 7.5 inch E-Ink E-Paper Display

I know, old thread, but did anyone solve this?
I’ve tried both 7.50inV2 and 7.50inV2alt and also tried with and without reset_duration: 2ms but so far all combinations look terrible.
The 7.50inV2 is very very faint, hardly readable. The alt version is “stronger” but extremely grainy.

I also noticed when drawing some lines the the vertical ones are very clear but the horizontal ones the faint ones.

1 Like

I still have the same issues with current hardware (waveshare control board as posted before).

I still need to try @doubleU suggestion, but have not got around to buy new hardware.

I seem to have another unique issue with this display. I have the 7.5" B/W V2 with a sticker on the back saying “075BN-T7”. The date code is “2021072601”. I am using a ESP32 DevKit with the Waveshare RPi HAT. I have all the lines connected, including Busy and Reset. The reset_duration is set to 2ms.

If I set the model to 7.50inv2, then the display looks good, but it only works after a restart. If I unplug my ESP32 and then plug it back in, the display does not work. I have to use the restart switch in ESPHome after the first initial boot, the display works. The text is crisp and fully dark.

If I set the model to 7.50inv2alt, then the display works, but the image is grainy and not fully dark. From far away it isn’t noticeable, but looking at it closely it is visible. Also, it seems the refresh cycle is a bit different and 1sec quicker.

I have a similar problem
after the refresh of the display all dots are black, but get grainy then.

I use a V2 display.
My code:

display:
  - platform: waveshare_epaper
    id: epaper
    cs_pin: 15
    busy_pin: 25
    reset_pin: 26
    dc_pin: 27
    model: 7.50inV2
    #model: 7.50inV2alt
    rotation: 0°
    # full_update_every: 30
    update_interval: 24h
    reset_duration: 100ms
    lambda: |

Result:

Any solution?

1 Like

I don’t have a full-on solution/explanation yet, but I want to at least document my observations, maybe it helps someone else to nail it down in the future.

I bought the V2 version of this display, together with the Pi HAT board. First I tried it via SPI interface with my “usual” esp32 dev kit model, but I didn’t get it to do anything at all. No matter which board version I used in the YAML config or which switch setting I used on the HAT.

Then I bought the “official” waveshare esp32 driver board (which was set to “B” by default), connected it directly to the panel, and flashed a simple yaml file (model: 7.50inv2alt) with a line of text, a few straight lines and circles and rectangles, and got a perfect image with strong black. (for update_jnterval 30 seconds and 5 minutes)
Then I got “cocky” and added a 400x300 pixel 2-bit file of our cat to the config, which immediately made the whole image quality VERY grainy.
When I removed the image again and added more lines of text instead, I achieved a “medium grainyness”, and when I then went back to the original test yaml (one line of text, a few graph lines, …), I got almost the full black contrasty version of the image quality back, but not completely.

I then flipped the switch to “A”, tried out the test YAML with a lot of text right away, and got a really good result. Trying the cat photo again gave me a REALLY good result, although with quite a bit of dark grey areas where it should be complete black, but way better than with the first tryout with the same photo.

I find it really weird that initially the image quality degraded the more objects I added to the screen. I don’t know enough about the technology behind epaper displays, but it “felt” as if when the display has to switch more pixels to black, the more it messed up the image in the first tests.

What I want to do next is to install the arduino example codes provided by waveshare (https://www.waveshare.com/wiki/E-Paper_ESP32_Driver_Board). If those generate a crispy image all the time, I guess the esphome integration might be a bit buggy still for certain scenarios. But let’s see.

By the way: I’m using the official power supply from my Pi3 from 2016 for this at the moment, so I think I can rule out issues with a weak power plug.

1 Like

Hi Lakini,
Did you have the chance to test the arduino example code, or find a definitive solution on ESPHome?
Regards, Mathieu.

The project is laying on the shelf at the moment :-/ I got it to work quite acceptable with the waveshare board and left it run with a demo setup (some sensor values, 2 images, some lines and circles) for a week, to see how it keeps up. The image quality degraded over time, and after 5 or 6 days the panel didn’t update anymore, with a greyish image left. Rebooting does nothing to the panel, I vaguely suspect it burnt out/in over time. I might try the arduino approach once the utter frustration wears off some day…

There was an update today to esphome and one of the things that is fixed is grainy image on the 7.5 inch v2. Give it a go!

3 Likes

This helped my 7.5v2. It’s weird because I had a previous 7.5v2, that worked fine w/ the dip switch in B.

can anyone help me? i see no information on my screen, i dont know why. i have also a 4.2 display, that works

esphome:
  name: display-7-5
  friendly_name: Display_7_5

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "ZVlr5******************"

ota:
  password: "0d1d*****************"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Display-7-5 Fallback Hotspot"
    password: "******"

captive_portal:

font:
  - file: 'fonts/ConsolaMono-Bold.ttf'
    id: consolaMono_bold_15
    size: 15
    glyphs:
      ['&', '@', '!', ',', '.', '"', '%', '(', ')', '+', '-', '_', ':', '°', '0',
       '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E',
       'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
       'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
       'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
       'u', 'v', 'w', 'x', 'y', 'z','å', 'ä', 'ö', '/','º','µ','³']
       
spi:
  clk_pin: GPIO13
  mosi_pin: GPIO14

display:
  - platform: waveshare_epaper
    id: epaperdisplay
    cs_pin: GPIO15
    dc_pin: GPIO27
    busy_pin: GPIO25
    reset_pin: GPIO26
    model: 7.50inv2
    update_interval: 30s
    lambda: |-
      it.printf(155,295, id(consolaMono_bold_15), TextAlign::BASELINE_CENTER, "HomeAssistant");

When you power on, the display is flashing black & white three times?

No… see nothing

but my 4.2 display also does not flashing and that works

Flash Log:

INFO ESPHome 2023.8.2
INFO Reading configuration /config/esphome/display-7-5.yaml...
WARNING GPIO15 is a Strapping PIN and should be avoided.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins
INFO Generating C++ source...
INFO Compiling app...
Processing display-7-5 (board: esp32dev; framework: arduino; platform: platformio/[email protected])
--------------------------------------------------------------------------------
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
 - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
Dependency Graph
|-- AsyncTCP-esphome @ 1.2.2
|-- WiFi @ 2.0.0
|-- FS @ 2.0.0
|-- Update @ 2.0.0
|-- ESPAsyncWebServer-esphome @ 2.1.0
|-- DNSServer @ 2.0.0
|-- ESPmDNS @ 2.0.0
|-- noise-c @ 0.1.4
|-- SPI @ 2.0.0
Compiling /data/display-7-5/.pioenvs/display-7-5/src/main.cpp.o
Linking /data/display-7-5/.pioenvs/display-7-5/firmware.elf
RAM:   [=         ]  12.4% (used 40672 bytes from 327680 bytes)
Flash: [=====     ]  50.1% (used 919889 bytes from 1835008 bytes)
Building /data/display-7-5/.pioenvs/display-7-5/firmware.bin
Creating esp32 image...
Successfully created esp32 image.
esp32_create_combined_bin(["/data/display-7-5/.pioenvs/display-7-5/firmware.bin"], ["/data/display-7-5/.pioenvs/display-7-5/firmware.elf"])
Wrote 0xf1fe0 bytes to file /data/display-7-5/.pioenvs/display-7-5/firmware-factory.bin, ready to flash to offset 0x0
========================= [SUCCESS] Took 47.72 seconds =========================
INFO Successfully compiled program.
INFO Resolving IP address of display-7-5.local
INFO  -> 192.168.1.162
INFO Uploading /data/display-7-5/.pioenvs/display-7-5/firmware.bin (925664 bytes)
Uploading: [============================================================] 100% Done...

INFO Waiting for result...
INFO OTA successful
INFO Successfully uploaded program.
INFO Starting log output from display-7-5.local using esphome API
INFO Successfully connected to display-7-5.local
[11:24:12][I][app:102]: ESPHome version 2023.8.2 compiled on Aug 29 2023, 11:23:10
[11:24:12][C][wifi:543]: WiFi:
[11:24:12][C][wifi:379]:   Local MAC: xx:86:xx:FD:xx:C8
[11:24:12][C][wifi:380]:   SSID: [redacted]
[11:24:12][C][wifi:381]:   IP Address: 192.168.1.162
[11:24:12][C][wifi:383]:   BSSID: [redacted]
[11:24:12][C][wifi:384]:   Hostname: 'display-7-5'
[11:24:12][C][wifi:386]:   Signal strength: -63 dB ▂▄▆█
[11:24:12][C][wifi:390]:   Channel: 1
[11:24:12][C][wifi:391]:   Subnet: 255.255.255.0
[11:24:12][C][wifi:392]:   Gateway: 192.168.1.1
[11:24:12][C][wifi:393]:   DNS1: 192.168.1.9
[11:24:12][C][wifi:394]:   DNS2: 0.0.0.0
[11:24:13][C][logger:301]: Logger:
[11:24:13][C][logger:302]:   Level: DEBUG
[11:24:13][C][logger:303]:   Log Baud Rate: 115200
[11:24:13][C][logger:305]:   Hardware UART: UART0
[11:24:13][C][spi:125]: SPI bus:
[11:24:13][C][spi:126]:   CLK Pin: GPIO13
[11:24:13][C][spi:128]:   MOSI Pin: GPIO14
[11:24:13][C][spi:130]:   Using HW SPI: YES
[11:24:13][C][waveshare_epaper:1614]: Waveshare E-Paper
[11:24:13][C][waveshare_epaper:1614]:   Rotations: 0 °
[11:24:13][C][waveshare_epaper:1614]:   Dimensions: 800px x 480px
[11:24:13][C][waveshare_epaper:1615]:   Model: 7.5inV2rev2
[11:24:13][C][waveshare_epaper:1616]:   Reset Pin: GPIO26
[11:24:13][C][waveshare_epaper:1617]:   DC Pin: GPIO27
[11:24:13][C][waveshare_epaper:1618]:   Busy Pin: GPIO25
[11:24:13][C][waveshare_epaper:1619]:   Update Interval: 30.0s
[11:24:13][C][captive_portal:088]: Captive Portal:
[11:24:13][C][mdns:112]: mDNS:
[11:24:13][C][mdns:113]:   Hostname: display-7-5
[11:24:13][C][ota:093]: Over-The-Air Updates:
[11:24:13][C][ota:094]:   Address: display-7-5.local:3232
[11:24:13][C][ota:097]:   Using Password.
[11:24:13][C][api:138]: API Server:
[11:24:13][C][api:139]:   Address: display-7-5.local:6053
[11:24:13][C][api:141]:   Using noise encryption: YES
[11:24:27][W][component:204]: Component waveshare_epaper.display took a long time for an operation (1.04 s).
[11:24:27][W][component:205]: Components should block for at most 20-30ms

Try to change the model in 7.50inV2alt

My Waveshare 800×480, 7.5inch E-Ink display, is piloted by a ESP32 with this pinout config:

spi:
  clk_pin: GPIO33
  mosi_pin: GPIO32

display:
- platform: waveshare_epaper
  id: epaper75_01
  cs_pin: GPIO25
  dc_pin: GPIO26
  busy_pin: GPIO14
  reset_pin: GPIO27
  model: 7.50inV2alt
  reset_duration: 2ms
  update_interval: 300s
  rotation: 270°
1 Like

thx… works now with 7.50inV2alt

1 Like

Here is my version of this:
https://oshwlab.com/jeroennl85/e-paper-display

Only thing i would like to get working is the colors or partial update.
I found a module from someone who made the colors work, but updating the screen takes 20seconds with that, so for now its just black and white.

Also partial updates would be better so i only have to change the values.
Has anyone got that working ?

My two Waveshare 7,5inch displays are working very well since the patch against the former display problems. Only thing is that I am having kind of a burn in effect (lots of static elements on the screen), any idea on how to blank the screen correctly? Should be possible on an epaper…

How long are you running them by now? I had played around with one before that patch, earlier this year, and while i got it to work with a quite okay display quality, after a bit over a week of constant usage, the image quality got worse and worse and in the end was a grey/black/grainy mess that didnt display any changes anymore

Since February this year. Image quality is good but it burns in. Waveshare told me that I neee to use the deep sleep mode, but I tried that before and didnt get any updates afterwards…

I’ve been playing around with 3 different waveshare screens with esphome, and the only one I got working reliably was the 2.9inch version. I always had the gut feeling that the arduino libraries work better than the esphome implementations, but I don’t have the coding experience to properly digg into it.
One “funny” example: I originally played around with the 1.54inch display 1.5 years ago, but it never worked reliably. After reading your post, I googled a bit again, and YESTERDAY someone fixed the bug with the missing deep sleep for that display: Add deep sleep between updates for waveshare epaper 1.54in and 1.54inv2 by mathieu-mp · Pull Request #5961 · esphome/esphome · GitHub

This thread here is a bit broader: Some Waveshare ePaper Screens are always powered on · Issue #4739 · esphome/issues · GitHub

Long story short: I’m super jealous of the people who get their waveshare displays beyond the 2.9inch one to work reliably and long-term using esphome, but I don’t really trust the esphome implementations at this point in time. And buying a new 7.5inch panel just to “check” if that bugfix now really did the trick for my setup is a bit of an expensive endevour…

1 Like