2.4" Display mit Encoder (EC11) und Taster

Ich versuche mit einem ESP32S3 das folgende Display anzusteuern, aber es gelingt nur teilweise!

Das Display ist vom Ali:

Bis jetzt sieht mein yaml so aus:

substitutions:
  name: "esp32-display-encoder"
  friendly_name: "ESP32-S3 Display Encoder"
esphome:
  name: ${name}
  friendly_name: ${friendly_name}
  comment: 'Ein 2.4" Display mit Encoder und Taster'

packages:
  common: !include .commons.yaml

# Fonts and icons for each image used
<<: !include .assets-t-display.yaml

esp32:
  variant: esp32s3
  framework:
    type: esp-idf

# Enable Home Assistant API
api:
  encryption:
    key: "pFT68FoiqcU0yyDcK4YEZocE743bcAR9ki61IqEWqt4="

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: ${name}

spi:
  type: single
  id: spi_hwd
  clk_pin: GPIO14
  mosi_pin: GPIO13

display:
  - platform: st7789v
    model: CUSTOM
    backlight_pin: GPIO12
    cs_pin: GPIO11
    dc_pin: GPIO10
    reset_pin: GPIO08
    width: 320
    height: 240
    offset_width: 0
    offset_height: 0
    update_interval: 2s
    id: my_display
    pages:                # Define the pages
      - id: showintro
        lambda: |-
          it.fill(black);   // Bildschirm löschen (schwarz)
          ESP_LOGD("display", "showintro");

Das Ergebnis auf dem Display ist wie folgt (das Moiré stammt von der Aufnahme, ist auf dem Display nicht zu sehen):

Es sollte jedoch ein schwarzer Bildschirm angezeigt werden. Es muss an der Ansteuerung mit SPI und dem Displaytreiber zusammenhängen.

Hat jemand Erfahrung mit dem Display oder erkennt den Fehler in meiner yaml-Datei?

Grüße aus Essen

Christoph

Ich würde es erstmal mit den Beispielcode von der Seite ST7789V TFT LCD - ESPHome - Smart Home Made Simple versuchen.
Ich meine Du müsstest die Seite (pages) auch (irgendwie) aufrufen, habe aber keine Erfahrung damit.

Hast du schon mal versucht diesen Treiber zu verwenden:
ILI9xxx TFT LCD Series - ESPHome - Smart Home Made Simple

Bitte mal die mosi miso sckl Pin definieren. Sie sind nötig, wenn es um Software SPI geht. Hardware Pins sind beim esp32S3 im pinout zu sehen. VSPI bevorzugen, Pins 10,11,12,13 oder 19,18, 5, 4 es kommt auf das Board an und wie die Pins herausgeführt sind. Pinout hilft.

Gruß Bernhard

Danke für eure Antworten!

@miami Das habe ich mir schon angeschaut, aber keine wirklich Zielführenden Erkenntnisse erlangt.

@Marok10 Der Hinweis ist gut, aber der Umstieg auf den anderen Treiber hats dann mehr gebracht!

Ich habe schlussendlich den mipi_spi Treiber ausprobiert und bin zu einem befriedigenden Ergebnis gelangt:

substitutions:
  name: "esp32-display-encoder"
  friendly_name: "ESP32-S3 Display Encoder"

esphome:
  name: ${name}
  friendly_name: ${friendly_name}
  comment: 'Ein 2.4" Display mit Encoder und Taster'
  on_boot: 
    then:
      - switch.turn_on: backlight

packages:
  common: !include .commons.yaml

# Fonts and icons for each image used
<<: !include .assets-t-display.yaml

esp32:
  variant: esp32s3
  framework:
    #type: esp-idf
    type: arduino

# Enable Home Assistant API
api:
  encryption:
    key: "pFT68FoiqcU0yyDcK4YEZocE743bcAR9ki61IqEWqt4="

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: ${name}

# Example configuration entry
switch:
  - platform: gpio
    pin:
      number: GPIO12
      inverted: true
    name: "Beleuchtung"
    id: backlight
    inverted: True

spi:
  type: single
  id: spi_hwd
  clk_pin: GPIO14
  mosi_pin: GPIO13

display:
  #- platform: st7789v
  - platform: mipi_spi
    model: ST7789V
    #backlight_pin: GPIO12
    cs_pin: GPIO11
    dc_pin: GPIO10
    reset_pin: GPIO08
    rotation: 90°
    #width: 320
    #height: 240
    #offset_width: 0
    #offset_height: 0
    #update_interval: 2s
    id: my_display
    pages: # Define the pages
      - id: showintro
        lambda: |-
          //it.fill(black);   // Bildschirm löschen (schwarz)
          //ESP_LOGD("display", "showintro");
          it.printf(25, 100, id(font_medium), green, "Hello World");

Damit ist zuerst mal ein funktionierendes Display entstanden, jetzt muss ich nur noch den Encoder und den Schalter einbinden. Das sollte jedoch kein Problem darstellen.