Hello Community,
I am having problems getting a Waveshare Black/White/Red 2.9-inch V4 to work with ESPHome.
The problem
The problem is, the display only responds with the models “2.90inv2” and “2.90inv2-r2.”
The display does not respond at all with any other models.
However, with “2.90inv2” and “2.90inv2-r2,” the screen display is completely wrong:
Sometimes half of the display has a white background and the other half has a red background.
The text that should be red is black.
Sometimes it’s grainy, sometimes it’s not.
To rule out a defect, I loaded the original software onto the driver board again, so that I could try out the demo from Waveshare.
It worked perfectly with the demo firmware. (Also shortly before this post.)
I’ve been researching for almost the entire day, but I can’t find a solution.
That’s why I’m turning to you… What am I doing wrong?
I would be very thankful for any help or tips!
The hardware:
The ESP32 is an “E-Paper ESP32 Driver Board” (https://www.waveshare.com/wiki/E-Paper_ESP32_Driver_Board), to which I connected the display directly via a ribbon cable.
As I said, the display is a Waveshare 2.9-inch (black/white/red),
and there is a round silver sticker on the back with the inscription “V4”
(296x128, 2.9inch E-Ink raw display, SPI interface, three-color, without PCB | WFT0290CZ10)
The YAML
esphome:
name: esp32-e-ink-01
friendly_name: ESP32-E-Ink-01
esp32:
board: esp32dev
framework:
type: arduino
logger:
level: WARN
api:
encryption:
key: "my_secret!"
ota:
- platform: esphome
password: "my_secret!"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
font:
- file: gfonts://Goldman
id: roboto
size: 24
spi:
clk_pin: GPIO13
mosi_pin: GPIO14
color:
- id: color_black
red: 0%
green: 0%
blue: 0%
white: 0%
- id: color_red
red: 100%
green: 0%
blue: 0%
white: 0%
display:
- platform: waveshare_epaper
model: 2.90inv2
cs_pin: GPIO15
dc_pin: GPIO27
busy_pin: GPIO25
reset_pin: GPIO26
update_interval: 60s
full_update_every: 1
rotation: 90
lambda: |-
it.print(0, 0, id(roboto), color_red, "Hello World!");
it.print(0, 100, id(roboto), color_red, "Hello World!");