Waveshare esp32-s3-touch-lcd-4 Display

Hallo zusammen,
ich habe einen “esp32-s3-touch-lcd-4” von Waveshare (https://www.waveshare.com/wiki/ESP32-S3-Touch-LCD-4) und wollte dieses nun mit ESPHome einrichten um ein paar Werte vom HomeAssistant auf dem Display anzeigen zu lassen, die Touch-Funktion ist für mich nicht wichtig.
Leider bin ich blutiger Anfänger und habe absolut keine Ahnung was das Thema ESP32 angeht.
Ich bin soweit das ich das Gerät im ESPHome einrichten konnte und eine WLAN-Verbindung herstellen konnte.
Jedoch scheitere ich nun daran überhaupt irgendetwas auf dem Display anzeigen zu lassen, ich hoffe hier kann mir jemand helfen.

esphome:
  name: esp-display1
  friendly_name: ESP-Display1

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: esp-idf
    version: recommended

# Enable logging
logger:

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

ota:
  - platform: esphome
    password: "xxxxxxxxxxxx"

wifi:
  ssid: xxxxxxxxxxxx wifi_ssid
  password: xxxxxxxxxxxx wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "xxxxxxxxxxxx"
    password: "xxxxxxxxxxxx"

captive_portal:

Bis hierher bin ich gekommen, allerdings konnte mir das Forum sowie Google nicht wirklich weiterhelfen.

Evtl. kann mir jemand ja einen Teil des Codes weiterführen, damit ich überhaupt etwas auf dem Display zu sehen bekomme.

Schon in der ESPHome Hilfe https://esphome.io nach „ESP32-S3-Touch-LCD-4“ gesucht?

Unter RPI_DPI_RGB Display Driver — ESPHome ist eine Beispielkonfiguration.

Siehe auch: Display Component — ESPHome

Schau mal hier…

Ich hatte damit auch so meine Probleme und dann haben es sich die Profis (Clyde) mal angeschaut. Es ist ein Katastrophe …u.a. weil die Pin Belegung sagen wir mal “unglücklich” ist. Es wurde mit viel Tricksrei dann wohl zum laufen gebracht.
Habe meins mittlerweile zurückgeschickt und ein Guition 4" stattdessen geholt.
Viel Erfolg

Hi, da mir der Post sehr weitergeholfen hat und ich keinen Zugriff auf den Discord Channel hatte, habe ich nach sehr viel probieren nun eine funktionierende Lösung für ein Waveshare esp32-s3-touch-lcd-4 V3 (Rev3.0 auf der Rückseite gedruckt) https://www.waveshare.com/wiki/ESP32-S3-Touch-LCD-4

esphome:
  name: esp32-s3-touch-lcd-4-v3
  friendly_name: esp32-s3-touch-lcd-4-v3
  on_boot:
    priority: -100
    then:
      - switch.turn_on: backlight_switch

esp32:
  board: esp32-s3-devkitc-1
  variant: esp32s3
  flash_size: 16MB
  framework:
    type: esp-idf
    sdkconfig_options:
      CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240: "y"
      CONFIG_ESP32S3_DATA_CACHE_64KB: "y"
      CONFIG_SPIRAM_FETCH_INSTRUCTIONS: "y"
      CONFIG_SPIRAM_RODATA: "y"
    components:
      - name: "espressif/esp_websocket_client"
        ref: 1.5.0
      - name: "bitbank2/jpegdec"
        source: https://github.com/strange-v/jpegdec-esphome

preferences:
  flash_write_interval: 1min

psram:
  mode: octal
  speed: 80MHz

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: xxxxxx

ota:
  - platform: esphome
    password: xxxxxx

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

external_components:
  - source: github://strange-v/RemoteWebViewClient@main
    refresh: 0s
    components: [ remote_webview ]

i2c:
  - id: tp_i2c
    sda: GPIO15
    scl: GPIO7

pca9554:
  id: expander
  pin_count: 8
  i2c_id: tp_i2c
  address: 0x20

touchscreen:
  platform: gt911
  i2c_id: tp_i2c
  id: my_touchscreen
  display: my_display
  reset_pin:
    pca9554: expander
    number: 0
  interrupt_pin: GPIO16

switch:
  - platform: gpio
    id: buzzer
    name: "buzzer"
    pin:
      pca9554: expander
      number: 5
      mode:
        output: true
      inverted: false
  - platform: gpio
    id: backlight_switch
    name: "backlight switch"
    pin:
      pca9554: expander
      number: 1
      mode:
        output: true
      inverted: false

spi:
  - id: lcd_spi
    interface: spi3
    mosi_pin: GPIO1
    clk_pin: GPIO2

display:
  - platform: mipi_rgb
    model: WAVESHARE-4-480x480
    id: my_display
    rotation: 0
    update_interval: never
    spi_mode: MODE3
    auto_clear_enabled: false
    pclk_inverted: false
    pclk_frequency: 12MHz
    pixel_mode: 18
    dimensions:
      height: 480
      width: 480
      offset_width: 0
      offset_height: 0
    hsync_pulse_width: 8
    hsync_front_porch: 50
    hsync_back_porch: 10
    vsync_pulse_width: 3
    vsync_front_porch: 8
    vsync_back_porch: 8
    reset_pin:
      pca9554: expander
      number: 2
    de_pin:
      number: 40
    hsync_pin:
      number: 38
    vsync_pin:
      number: 39
    pclk_pin: 41
    data_pins:
      red:
        - 46         #r3
        - 3         #r4
        - 8        #r5
        - 18        #r6
        - 17        #r7
      blue:
        - 5        #b3
        - 45        #b4
        - 48        #b5
        - 47        #b6
        - 21        #b7
      green:
        - 14        #g2
        - 13         #g3
        - 12        #g4
        - 11        #g5
        - 10        #g6
        - 9       #g7
    init_sequence:
      - [0x11, 0x00]
      - delay 120ms
      - [0xFF, 0x77, 0x01, 0x00, 0x00, 0x10]
      - [0xC0, 0x3B, 0x00]
      - [0xC1, 0x0D, 0x02] 
      - [0xC2, 0x21, 0x08]
      - [0xCD, 0x08]
      - [0xB0, 0x00, 0x11, 0x18, 0x0E, 0x11, 0x06, 0x07, 0x08, 0x07, 0x22, 0x04, 0x12, 0x0F, 0xAA, 0x31, 0x18]
      - [0xB1, 0x00, 0x11, 0x19, 0x0E, 0x12, 0x07, 0x08, 0x08, 0x08, 0x22, 0x04, 0x11, 0x11, 0xA9, 0x32, 0x18]
      - [0xFF, 0x77, 0x01, 0x00, 0x00, 0x11]
      - [0xB0, 0x60] 
      - [0xB1, 0x30] 
      - [0xB2, 0x87] 
      - [0xB3, 0x80] 
      - [0xB5, 0x49] 
      - [0xB7, 0x85] 
      - [0xB8, 0x21] 
      - [0xC1, 0x78]
      - [0xC2, 0x78]
      - delay 20ms
      - [0xE0, 0x00, 0x1B, 0x02]
      - [0xE1, 0x08, 0xA0, 0x00, 0x00, 0x07, 0xA0, 0x00, 0x00, 0x00, 0x44, 0x44]
      - [0xE2, 0x11, 0x11, 0x44, 0x44, 0xED, 0xA0, 0x00, 0x00, 0xEC, 0xA0, 0x00, 0x00]
      - [0xE3, 0x00, 0x00, 0x11, 0x11]
      - [0xE4, 0x44, 0x44]
      - [0xE5, 0x0A, 0xE9, 0xD8, 0xA0, 0x0C, 0xEB, 0xD8, 0xA0, 0x0E, 0xED, 0xD8, 0xA0, 0x10, 0xEF, 0xD8, 0xA0]
      - [0xE6, 0x00, 0x00, 0x11, 0x11] 
      - [0xE7, 0x44, 0x44]
      - [0xE8, 0x09, 0xE8, 0xD8, 0xA0, 0x0B, 0xEA, 0xD8, 0xA0, 0x0D, 0xEC, 0xD8, 0xA0, 0x0F, 0xEE, 0xD8, 0xA0]
      - [0xEB, 0x02, 0x00, 0xE4, 0xE4, 0x88, 0x00, 0x40] 
      - [0xEC, 0x3C, 0x00]
      - [0xED, 0xAB, 0x89, 0x76, 0x54, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x45, 0x67, 0x98, 0xBA]
      - [0xFF, 0x77, 0x01, 0x00, 0x00, 0x00]
      - [0x36, 0x04]
      - [0x3A, 0x66]
      - [0x21, 0x00]
      - delay 120ms
      - [0x29, 0x00]
    show_test_card: false


remote_webview:
  id: rwv
  server: 192.168.70.10:8081
  big_endian: true
  url: https://homeassistant.locale:8123/
  # set url: "self-test" to initiate the self-test
  #url: "self-test"
  full_frame_tile_count: 1
  max_bytes_per_msg: 61440
  jpeg_quality: 85

Die externen Komponenten sind nur für den remote_webview teil, ein tolles Projekt auf welches ich bei der Lösungssuche gestoßen bin. GitHub - strange-v/RemoteWebViewServer: Headless browser that renders target web pages (e.g., Home Assistant dashboards) and streams them as image tiles over WebSocket to lightweight clients (ESP32 displays)

Ich hoffe es hilft einigen weiter, da das Modell relativ günstig zu bekommen ist :slight_smile: