Waveshare e-Paper ESP32 Driver Board Rev3 Pinout

Hallo, ich habe in meinem ESPHome ein 4.2’’ ePaper Display und das e-Paper ESP32 Driver Board Rev3 von Waveshare. Ich bekomme aber nicht zum laufen. Am ende kommt immer der Fehler

[16:10:22][W][component:237]: Component display took a long time for an operation (141 ms).
[16:10:22][W][component:238]: Components should block for at most 30 ms.

Ich suche für das Driver Board in der Rev 3 jetzt das genaue Pinout. Hat da jemand eine Funktionierende Config und kann mir dazu mehr sagen?

Die Pinbelegung ist unter E-Paper ESP32 Driver Board - Waveshare Wiki zu finden, aber nur die Pins also zb P14 - ich vermute aber, das P14 nicht gleich GPIO14 ist. Daher die Frage ob jemand eine funktionsfähige Config hat für dieses Bord. Danke schonmal.

Wenn hier keiner eine funktionsfähige Yaml Datei für dich hat könnte es trotzdem helfen, wenn du deinen Code posten würdest. Vielleicht sieht ja irgendjemand einen Fehler.

Hast du das Beispiel unter “Waveshare E-Paper Cloud module | devices.esphome.io” schon probiert?

Hallo, danke für den Hinweis. Die Pinbelegung hab ich schon mit verschiedenen Vorlagen aus dem Netz ausprobiert, auch ChatGPT hab ich drüber laufen lassen und die Vorschläge zur Fehlerbehebung umgesetzt bzw getestet. Aber gern hier trotzdem mal meinen Aktuellen Code:

esphome:
  name: epaper-neu
  friendly_name: epaper_neu

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:
  level: VERY_VERBOSE


# Enable Home Assistant API
api:
  encryption:
    key: "xx"

ota:
  - platform: esphome
    password: "xx"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Epaper-Neu Fallback Hotspot"
    password: "xx"

captive_portal:
  
font:
  - file: "fonts/Roboto.ttf"
    id: roboto
    size: 20

# Setup SPI

spi:
  clk_pin: GPIO13
  mosi_pin: GPIO14

display:
  - platform: waveshare_epaper
    cs_pin: GPIO15
    dc_pin: GPIO27
    busy_pin: GPIO25
    reset_pin: GPIO26
    model: 4.20in
    update_interval: 30s
    reset_duration: 100ms
    #full_update_every: 1
    lambda: |-
      it.fill(COLOR_OFF);
      it.print(0, 0, id(roboto), "Hello World! 123");   

Sieht für mich erst einmal OK aus und deckt sich mit den Beispielen aus dem Internet.
Wenn das Flachbandkabel zum Display richtig eingesteckt ist, dann bin ich erst einmal ratlos.

Deswegen hatte ich die Hoffnung jemand hat noch das gleiche Board im Einsatz. Ich hab mich grad nochmal im Wiki bei waveshare belesen, auf dem Board sind 2 Schalter, ggf muss ich dort nochmal die Schalterstellung ändern und testen. Kann ich aber erst morgen.

Bin trotzdem noch für andere Hinweise Dankbar falls jemand noch eine Idee hat.

Update:
Ich bin einen Schritt weiter. Wenn ich die Config auf z.b ein 2.9Inch Display umstelle, dann reagiert das Display und zeigt etwas an, zwar mit Rauschen aber es reagiert und Zeigt keine Fehler mehr. Vielleicht hat dazu jemand noch ne idee?

:crayon:by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)

Bist Du mit dem Problem schon weiter gekommen?

Hallo, ich hab mir das ganze jetzt nochmal vor genommen. Einer der Hauptfehler war wohl der Punkt bei OTA, dort habe ich ja

eingegeben aber der - platform Eintrag ist falsch, dort muss das ganze ohne “-” sein. Sonst sieht es zwar so aus, als ob er das ganze OTA macht aber er kann es dann nicht schreiben somit änder sich der Code auf dem ESP nicht. Ich hab die GPIO’s nochmal abgeglichen und geändert laut Doku vom Display und ich hab das model auf “4.20in-v2” umgestellt.
Das hat in soweit geholfen, das er jetzt im Log keine Fehler mal produziert und auch laut dem Log richtig arbeitet.
Das Display macht aber immer noch nix, es zeigt nur Schnee an.
Ich vermute mal, das es jetzt wohl am ehesten ein Fehler an der Hardware ist. (Display, Kabel,…)

Ich habe jetzt nach noch mehr versuchen und viel ChatGPT endlich eine Lösung mit der es funktioniert:

esphome:
  name: epaper-neu
  friendly_name: epaper_neu

esp32:
  board: esp32dev
  framework:
    type: arduino

logger:
  level: INFO

api:
  encryption:
    key: ""

ota:
  platform: esphome
  password: ""

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

  ap:
    ssid: "Epaper-Neu Fallback Hotspot"
    password: ""

external_components:
  - source: github://pr#6209
    components: [ waveshare_epaper ]

captive_portal:

font:
  - file: "fonts/Roboto.ttf"
    id: roboto
    size: 20

spi:
  clk_pin: GPIO13
  mosi_pin: GPIO14

display:
  - platform: waveshare_epaper
    model: 4.20in-v2
    id: epaper_display
    cs_pin: GPIO15
    dc_pin: GPIO27
    reset_pin: GPIO26
    busy_pin: GPIO25
    rotation: 270
    update_interval: 30s
    lambda: |-
      it.print(10, 10, id(roboto), "Hallo Welt!");

Hmm … vom Prinzip her, war das fast genau das, was ich auch versucht habe.
Ist das bei Dir auch ein 4-farbiges Display?
Meine habe ich allerdings wieder zurückgeschickt.

Nein das was ich habe macht nur s/w soweit ich das sehe. Reicht aber auch für meinen Anwendungsfall. Bin auf jeden Fall froh, das es jetzt funktioniert. Jetzt muss ich nur noch alle Daten drauf packen.

Ich habe mal etwas mit meinem 2.13 Schwarz-Weiß Display herumgespielt.
Das läuft soweit.
vielleicht siehst du etwas, was dir hilft.

esphome:
  name: esp-e-ink
  friendly_name: ESP-E_ink

esp32:
  board: esp32dev
  framework:
    type: esp-idf

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "51xHQXBOQazj+gR8U9DrmjyHT6T4KZyR2IPKexeUXzU="

ota:
  - platform: esphome
    password: "da519c5eb55cd8273b294ec64867d848"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip: 
    static_ip: 192.168.178.47
    gateway: 192.168.178.1
    subnet: 255.255.255.0

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp-E-Ink Fallback Hotspot"
    password: "xxxxx"

captive_portal:
web_server:
  port: 80    

time:
  - platform: homeassistant
    id: homeassistant_time


font:
  - file: gfonts://Goldman
    id: roboto
    size: 24


sensor:
  # General
  - platform: uptime
    name: "${esphome_name} - Uptime Sensor"
  - platform: wifi_signal
    name: "${esphome_name} - WiFi Signal"
    update_interval: 60s



switch:
  # General
  - platform: gpio
    name: "${esphome_name} - Onboard LED"
    pin: 19
    id: onboard_led
  - platform: restart
    name: "${esphome_name} - Restart"
    id: restart_switch

text_sensor:
  # ESPHome version
  - platform: version
    name: "${esphome_name} ESPHome Version"
  # WiFi information
  - platform: wifi_info
    ip_address:
      name: "${esphome_name} IP"
      id: ip_address
    ssid:
      name: "${esphome_name} SSID"
      id: ssid
    bssid:
      name: "${esphome_name} BSSID"
      id: bssid

spi:
  clk_pin: 18
  mosi_pin: 23


display:
  - platform: waveshare_epaper
    cs_pin: 5
    dc_pin: 17
    busy_pin: 4
    reset_pin: 16
    model: 2.13in-ttgo
    update_interval: 15s
    full_update_every: 30
    rotation: 270
    lambda: |-
      it.printf(10, 0, id(roboto), "Hello World!");
      it.strftime(0, 24, id(roboto), "%Y-%m-%d  %H:%M", id(homeassistant_time).now());
      it.printf(10, 50, id(roboto), "IP: %s", id(ip_address).state.c_str());

Danke dafür, aber mit dem letzten Code den ich hier rein gestellt hatte war das Problem schon behoben und meins läuft. Aber wie gesagt, danke trotzdem.

1 „Gefällt mir“

Oh, das habe ich wohl irgendwie überlesen.
Aber schön, dass es läuft.:+1: