Waveshare 2.9v2 works, but 1.54v2 shows noisy image

Hey everyone,

after getting a 2.9inV2 display by waveshare to work (besides the partial refresh bug), I tried out the 1.54inV2 one in order to get something with a working partial refresh. While the 2.9 one shoes a crispy clear image, the 1.54 one looks super “noisy” or “checkered”:


(1.54 upper left, 2.9 lower right)

Same ESP32 (doit devkit 30pin), same power supply (usb from laptop), identical code besides obviously the display part:

2.9 (working):

display:
  - platform: waveshare_epaper
    cs_pin: 21
    dc_pin: 3
    busy_pin: 22
    reset_pin: 1
    model: 2.90inv2
    rotation: 90°
    update_interval: 15s
    full_update_every: 1
    #reset_duration: 2ms
    id: eink
    lambda: |-
      it.image(0, 92, id(otter_icon));
      it.printf(150, 0, id(font1), "Hey, it is");
      if (id(outside_temperature).has_state()) {
      it.printf(190, 20, id(font2), "%.1f", id(outside_temperature).state);
      }
      it.printf(150, 50, id(font1), "degrees outside");
      it.printf(150, 70, id(font1), "and it is");
      if (id(outside_weather).has_state()) {
      it.printf(150, 90, id(font2), "%s", id(outside_weather).state.c_str());
      }

1.54 (noisy image):

display:
  - platform: waveshare_epaper
    cs_pin: 21
    dc_pin: 3
    busy_pin: 22
    reset_pin: 1
    model: 1.54inv2
    rotation: 90°
    update_interval: 15s
    full_update_every: 1
    #reset_duration: 2ms
    id: eink
    lambda: |-
      it.image(0, 164, id(otter_icon));
      if (id(outside_temperature).has_state()) {
      it.printf(10, 10, id(font2), "%.1f", id(outside_temperature).state);
      }
      if (id(outside_weather).has_state()) {
      it.printf(10, 30, id(font2), "%s", id(outside_weather).state.c_str());
      }

I actually sent back the first 1.54 that I had as I thought it was a hardware issue, but now I get the same behaviour with the next one i ordered.

Anyone got any ideas what could be the issue?
Thanks a lot in advance! :slight_smile:

Okay, after more digging I found the original github link for the added support of the v2 of the display (Add support for waveshare_epaper 1.54v2 by geoffdavis · Pull Request #1843 · esphome/esphome · GitHub), and the example code there switches full_update to 30 and doesn’t use update_interval at all. With those changes the display works like a charm.
I guess on_time is now the better way to update the display content from time to time, right? Sorry for the beginners question. Again. :slight_smile:

1 Like