cne58
20. Februar 2026 um 19:07
1
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
miami
20. Februar 2026 um 20:22
2
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
Marok10
20. Februar 2026 um 20:40
3
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
cne58
20. Februar 2026 um 20:51
4
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.