Waveshare e-ink 7.5 with Waveshare ESP32-WROOM-32 controler?

Hi

Did someone succeeded to figure out the exact wiring of that controler ? I get different informations between the board schema and the user manual supplied for it by Waveshare :frowning: or I read them wrong :confused:

Thanks

Vincèn

No one on this ? Thanks

Vincèn

Have you managed to connect it? After couple hours of reading datasheets I managed to wire 4.2in one - using waveshare provided esp8266 driver board. Pins have different names of course…

For 4.2in:

spi:
  clk_pin: 14
  mosi_pin: 13

  - platform: waveshare_epaper
    cs_pin: 15
    dc_pin: 4
    busy_pin: 16
    reset_pin: 5
    model: 4.20in

Oups thanks for reminder and yep I succeeded to get it to work :wink: Here is my code with some text I display on it :wink: Had not time yet to display icons or stuffs like that !

spi:
  clk_pin: GPIO13
  mosi_pin: GPIO14

font:
  - file: "Comic_Sans_MS.ttf"
    id: my_font
    size: 20

sensor:
  - platform: homeassistant
    entity_id: sensor.outside_temperature_weather_service
    id: outside_temperature
    internal: true
  - platform: homeassistant
    entity_id: sensor.living_room_temperature_2
    id: flat_temperature
    internal: true
  - platform: homeassistant
    entity_id: sensor.living_room_humidity_2
    id: flat_humidity
    internal: true
  - platform: homeassistant
    entity_id: sensor.plex_lausanne
    id: plex_users
    internal: true

text_sensor:
  - platform: homeassistant
    entity_id: sensor.next_departure_sallaz
    id: next_departure
    internal: true
  - platform: homeassistant
    entity_id: sensor.second_next_departure_sallaz
    id: second_next_departure
    internal: true
    
display:
  - platform: waveshare_epaper
    cs_pin: GPIO15
    dc_pin: GPIO27
    busy_pin: GPIO25
    reset_pin: GPIO26
    model: 7.50in
    update_interval: 10s
    lambda: |-
      it.printf(0, 0, id(my_font), TextAlign::TOP_LEFT , "Next Bus: %2.2s", id(next_departure).state);
      it.printf(0, 30, id(my_font), TextAlign::TOP_LEFT , "Second Next Bus: %2.2s", id(second_next_departure).state);
      it.printf(0, 60, id(my_font), TextAlign::TOP_LEFT , "Outside Temperature: %.2f°C", id(outside_temperature).state);
      it.printf(0, 90, id(my_font), TextAlign::TOP_LEFT , "Flat Temperature: %.2f°C", id(flat_temperature).state);
      it.printf(0, 120, id(my_font), TextAlign::TOP_LEFT , "Flat Humidity: %.2f%%", id(flat_humidity).state);
      it.printf(0, 150, id(my_font), TextAlign::TOP_LEFT , "Plex Users: %.0f", id(plex_users).state);
    
      // it.line(0, 0, 100, 50);
      // it.rectangle(50, 60, 30, 42);
      // it.filled_rectangle(50, 60, 30, 42);

      // it.circle(25, 25, 10);
      // it.filled_circle(25, 25, 10);
4 Likes

may I ask which board type you have chosen when flashing ESPHome? thanks

The list is here https://docs.platformio.org/en/latest/platforms/espressif32.html#boards but it is hard to say from the description given - Waveshare ESP32-WROOM-32.

Based on this https://www.waveshare.com/w/upload/4/4a/E-Paper_ESP32_Driver_Board_user_manual_en.pdf (page 9) I would choose Espressif ESP32 Dev Module (ie esp32dev)

thanks, that would also have been my first idea.
but maybe @vincen is so kind and tells us what he used to succeed :slight_smile:

Sure here is full copy of my yaml file for it :wink:

esphome:
  name: e_ink_display
  platform: esp32
  board: esp-wrover-kit

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_passwd
  fast_connect: true
  manual_ip:
    static_ip: !secret ip_esp_e_ink
    gateway: 192.168.1.1
    subnet: 255.255.252.0
  
  ap:
    ssid: "E-Ink Display"
    password: !secret wifi_passwd
    ap_timeout: 3min

api:

logger:

ota: 

web_server:

spi:
  clk_pin: GPIO13
  mosi_pin: GPIO14

font:
  - file: "Comic_Sans_MS.ttf"
    id: my_font
    size: 20

sensor:
  - platform: homeassistant
    entity_id: sensor.outside_temperature_weather_service
    id: outside_temperature
    internal: true
  - platform: homeassistant
    entity_id: sensor.living_room_temperature_2
    id: flat_temperature
    internal: true
  - platform: homeassistant
    entity_id: sensor.living_room_humidity_2
    id: flat_humidity
    internal: true
  - platform: homeassistant
    entity_id: sensor.plex_lausanne
    id: plex_users
    internal: true

text_sensor:
  - platform: homeassistant
    entity_id: sensor.next_departure_sallaz
    id: next_departure
    internal: true
  - platform: homeassistant
    entity_id: sensor.second_next_departure_sallaz
    id: second_next_departure
    internal: true
    
display:
  - platform: waveshare_epaper
    cs_pin: GPIO15
    dc_pin: GPIO27
    busy_pin: GPIO25
    reset_pin: GPIO26
    model: 7.50in
    update_interval: 10s
    lambda: |-
      it.printf(0, 0, id(my_font), TextAlign::TOP_LEFT , "Next Bus: %2.2s", id(next_departure).state);
      it.printf(0, 30, id(my_font), TextAlign::TOP_LEFT , "Second Next Bus: %2.2s", id(second_next_departure).state);
      it.printf(0, 60, id(my_font), TextAlign::TOP_LEFT , "Outside Temperature: %.2f°C", id(outside_temperature).state);
      it.printf(0, 90, id(my_font), TextAlign::TOP_LEFT , "Flat Temperature: %.2f°C", id(flat_temperature).state);
      it.printf(0, 120, id(my_font), TextAlign::TOP_LEFT , "Flat Humidity: %.2f%%", id(flat_humidity).state);
      it.printf(0, 150, id(my_font), TextAlign::TOP_LEFT , "Plex Users: %.0f", id(plex_users).state);
    
      // it.line(0, 0, 100, 50);
      // it.rectangle(50, 60, 30, 42);
      // it.filled_rectangle(50, 60, 30, 42);

      // it.circle(25, 25, 10);
      // it.filled_circle(25, 25, 10);
1 Like

Thanks a lot!
Esp32dev also works and was today confirmed by waveshares support.

Looking forward to play with this.

Have fun, just don’t expect great refresh as ESPHome doesn’t really implement it well for now unhappy but it still works well for displaying infos not updating all time like time, weather, temperature…

Thanks.
Well yes got that from the YouTube videos I watched. It should show some sensor data, weather forecast and upcoming google calendar entries. Refreshed whenever some value changes, which is not that often.

And if it annoys me too much I can also implement something on my own

Hello, I have the 7.5inch V2 epaper from Waveshare and i cant get it to work. I see that Vincen’s code helped many people but not to me. I am new in Home Assistant and epaper too so please keep that in mind. Here is my really simplyfied code to just display anything. The display works with example code for arduino IDE but i can’t get it to work through esphome. I use ESP32-WROOM32 DEVKIT V1. Can someone tell me what am i doing wrong please?

Did you ever get this working @Mangee ? I picked up a 7.5inV2, and I can get it working fine with Raspberry Pi examples, but have yet to get it going with ESP32. I’ve tried many pinout combos (including verbatim what is shown in this thread) but no joy.

Sadly, I didn’t get it to work. I spent many hours on it and still don’t know where is the problem. But would love to have it working.

I’ve been trying to figure this out as well. No joy getting the 7.5v2 working with ESPHome either. My 4.2" works just fine…

I’ve been messing with the 7.50inV2 some time ago. This was my latest abomination that worked: https://pastebin.com/5DShVCGT
I just checked, last time the eink display was on was on 4.4.2021. Perks of e-ink displays, it shows when I last worked on the project :stuck_out_tongue:

I know I had problems with finding correct pins to use for specific “jobs”. After figuring them out, display started working with no problems.
The last compiled version that I have was made with ESPHome 1.16.2.
Unfortunately I never finished the project as… Life happened :confused:

Hope this helps someone :slight_smile:

1 Like

@nejccc - thank you for another reference point on a configuration that used to work. I used all of your settings with my ESP32 and it still didn’t work. This one seems hard to track down… either something changed in the HAT/hardware - or the driver software. I’ll do the work to get this to work with the demo software that doesn’t use ESPHome and validate that the hardware works. I did grab some July 2020 ESPHome wavepaper files to see if that helped. :slight_smile: But it didn’t - which is why I’m leaning more towards something changing in the hardware recently…

buenas noches
alguien me puede decir como obtengo el cs y dc?

gracias

I’ll translate

can someone tell me how to get the cs and dc

English next time please.

Has anybody had any luck getting the v3 of the e-ink display working with ESPHome using the Waveshare ESP32 board?

I’ve tried every combination of display type and dip switches etc to no avail - display works fine with the RPi hat

substitutions:
  esp_name: "waveshare-eink"
  ip_address: 192.168.1.201
  ip_gw: 192.168.1.1
  ip_netmask: 255.255.255.0

esphome:
  name: ${esp_name}

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip:
    static_ip: ${ip_address}
    gateway: ${ip_gw}
    subnet: ${ip_netmask}

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esphome-Web-Dd96F4"
    password: "glu23pmoBYMF"

captive_portal:

web_server:
  port: 80
  include_internal: true

time:
  - platform: homeassistant
    timezone: Australia/Sydney  
    id: current_time
    on_time_sync:
      - component.update: uptime_timestamp
    
switch:
  - platform: restart
    name: "${esp_name} Restart"    
    
text_sensor:
  - platform: wifi_info
    ip_address:
      name: "${esp_name} IP Address"
      id: ip_address
      icon: mdi:wifi
      entity_category: diagnostic
    ssid:
      name: "${esp_name} Connected SSID"
      id: ssid
      icon: mdi:wifi-strength-2
      entity_category: diagnostic
    bssid:
      name: "${esp_name} Connected BSSID"
      id: bssid
      icon: mdi:wifi-strength-2
      entity_category: diagnostic

  - platform: template
    name: "${esp_name} Uptime"
    id: uptime_human
    icon: mdi:clock-start    

  - platform: version
    name: "${esp_name} ESPHome Version"
    entity_category: diagnostic
    
sensor:
  - platform: uptime
    name: "${esp_name} Uptime Sec"
    id: uptime_sec
    internal: true

  - platform: wifi_signal
    name: "${esp_name} WiFi Signal"
    id: wifisignal
    update_interval: 60s
  

  - platform: template
    id: uptime_timestamp
    name: "${esp_name}  Uptime"
    device_class: "timestamp"
    accuracy_decimals: 0
    update_interval: never
    lambda: |-
      static float timestamp = (
        id(current_time).utcnow().timestamp - id(uptime_sec).state
      );
      return timestamp;    
    

font:
  - file: "fonts/GoogleSans-Medium.ttf"
    id: main_sensor_unit
    size: 20
    glyphs: |-
      !"%()+=,-_.:°/|0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz'

spi:
  clk_pin: GPIO13
  mosi_pin: GPIO14

display:
  - platform: waveshare_epaper
    cs_pin: GPIO15
    dc_pin: GPIO27
    busy_pin: GPIO25
    reset_pin: GPIO26
    model: 7.50inV2
    update_interval: 1min
    rotation: 90°
    lambda: |-
      it.fill(COLOR_OFF);
      it.print(0,0,id(main_sensor_unit), "Hello, World!");