Kapitel 18 – CYD (Cheap Yellow Display)
| LVGL 9 mit MicroPython | |
|---|---|
| Kapitel | 18 |
| Titel | CYD (Cheap Yellow Display) |
| Voraussetzungen | Grundkenntnisse in MicroPython |
| Getestet mit | LVGL 9.x |
| Schwierigkeitsgrad | ★★★☆☆ |
| Benötigte Zeit | 30 Minuten |
| Status | in Arbeit |
Kapitel 18 – CYD (Cheap Yellow Display)[Bearbeiten | Quelltext bearbeiten]
Lernziel[Bearbeiten | Quelltext bearbeiten]
Nach diesem Kapitel kannst du
- verschiedene CYD-Varianten unterscheiden,
- typische Hardware-Parameter dokumentieren,
- LVGL auf dem CYD besser einordnen,
- deine eigenen Erkenntnisse strukturiert ergänzen.
Was ist das CYD?[Bearbeiten | Quelltext bearbeiten]
CYD steht für Cheap Yellow Display.
Es ist ein günstiges ESP32-basiertes Display-Modul mit:
- integriertem Touch
- TFT-Display
- ESP32 Mikrocontroller
- meist integrierter Stromversorgung
Es wird häufig für LVGL-Projekte genutzt.
Typische Eigenschaften[Bearbeiten | Quelltext bearbeiten]
CYD-Boards haben meist:
- ESP32 (klassisch oder S3 Varianten)
- 2.8" TFT Display (meist ILI9341 oder ST7789)
- Touch Controller (z. B. XPT2046)
- SD-Karten Slot (je nach Version)
Wichtige Varianten[Bearbeiten | Quelltext bearbeiten]
Es gibt mehrere CYD-Versionen.
Variante 1: Klassisches CYD[Bearbeiten | Quelltext bearbeiten]
- ESP32-WROOM-32
- 2.8" TFT (ILI9341)
- Resistiver Touch (XPT2046)
- SPI-Anbindung
Notizen:
GPIO Layout:
SPI: MOSI / MISO / CLK / CS
TFT: separate CS/DC/RST Pins
Touch: eigener SPI ChipVariante 2: CYD mit ESP32-S3[Bearbeiten | Quelltext bearbeiten]
- ESP32-S3
- besserer RAM
- oft schneller in LVGL
- teilweise RGB-Display statt SPI
Notizen:
Besonderheit:
- höhere LVGL Performance
- besser für Animationen
- oft USB-C direkt integriertVariante 3: CYD mit erweiterten Features[Bearbeiten | Quelltext bearbeiten]
- zusätzlicher PSRAM
- bessere Displays (je nach Hersteller)
- teilweise andere Touch-Controller
LVGL Besonderheiten auf CYD[Bearbeiten | Quelltext bearbeiten]
CYD ist kein „Standard-Board“.
Typische Punkte:
- Display-Treiber muss korrekt initialisiert sein
- Touch muss separat konfiguriert werden
- RAM ist begrenzt (bei ESP32-WROOM besonders wichtig)
Typische LVGL Initialisierung[Bearbeiten | Quelltext bearbeiten]
import lvgl as lv
scr = lv.screen_active()Die eigentliche Display-Initialisierung erfolgt meist im Board-Treiber (nicht in LVGL selbst).
Performance Hinweise[Bearbeiten | Quelltext bearbeiten]
Hinweis
CYD mit ESP32-S3 ist deutlich besser geeignet für:
- Animationen
- größere GUIs
- mehrere Screens
Typische Probleme[Bearbeiten | Quelltext bearbeiten]
Achtung
- falsche SPI Pins → kein Display
- Touch nicht kalibriert → falsche Eingaben
- zu wenig RAM → LVGL Crash
Touch Nutzung[Bearbeiten | Quelltext bearbeiten]
Viele CYDs nutzen resistiven Touch.
Typisch:
- XPT2046 Controller
- SPI-basiert
- Kalibrierung erforderlich
Beispiel (konzeptionell)[Bearbeiten | Quelltext bearbeiten]
def touch_read():
# liest Touch Koordinaten
return x, yErweiterungsmöglichkeiten[Bearbeiten | Quelltext bearbeiten]
Dieses Kapitel kann später ergänzt werden um:
- konkrete Pinbelegungen
- Initialisierungs-Code für dein Setup
- Unterschiede zwischen Herstellern
- LVGL-Treiberintegration
- Touch-Kalibrierung
Merke[Bearbeiten | Quelltext bearbeiten]
Merke
CYD ist kein einheitliches Board, sondern eine Familie von ESP32-Displays.
Von mir getestete CYD's[Bearbeiten | Quelltext bearbeiten]
Ich habe eine Reihe von CYD's. Diese habe ich mit der selbst kompilierten Firmware von Anhang A getestet. Ich stelle sie hier vor:
CYD mit 2,4" Display und einem USB-C Anschluß[Bearbeiten | Quelltext bearbeiten]
Die Harwareanbindung nutzt folgende Pins:
spi_bus = machine.SPI.Bus(host=1, mosi=13, miso=-1, sck=14)
display_bus = lcd_bus.SPIBus(spi_bus=spi_bus, freq=24000000, dc=2, cs=15, spi_mode=3)Dieses CYD hat einen st7789-Displaycontroller.
Wichtig ist die richtige Displaygröße:
_WIDTH = const(240)
_HEIGHT = const(320)Meistens finden sich in Beispielen die vertauschten Werte. Damit gibt es keine sinnvole Darstellung!
Der Backlight-Pin ist 27.Wenn hier ein falscher Pin angegeben wird bleibt das Display dunkel!
Die Treibereinstellungen für die richtige Farbwiedergabe sind:
import st7789
display = st7789.ST7789(
data_bus=display_bus,
display_width=_WIDTH,
display_height=_HEIGHT,
frame_buffer1=fb1,
frame_buffer2=None,
backlight_pin=27,
color_space=lv.COLOR_FORMAT.RGB565,
color_byte_order=st7789.BYTE_ORDER_BGR,
rgb565_byte_swap=True,
)... für die Displayeinstellung:
display.set_color_inversion(False)CYD mit 2,8" Display und einem USB-C und einem Micro-USB Anschluß[Bearbeiten | Quelltext bearbeiten]
Die Harwareanbindung nutzt folgende Pins:
spi_bus = machine.SPI.Bus(host=1, mosi=13, miso=-1, sck=14)
display_bus = lcd_bus.SPIBus(spi_bus=spi_bus, freq=24000000, dc=2, cs=15, spi_mode=3)Dieses CYD hat einen st7789-Displaycontroller.
Wichtig ist die richtige Displaygröße:
_WIDTH = const(240)
_HEIGHT = const(320)Meistens finden sich in Beispielen die vertauschten Werte. Damit gibt es keine sinnvole Darstellung!
Der Backlight-Pin ist 21.Wenn hier ein falscher Pin angegeben wird bleibt das Display dunkel!
Die Treibereinstellungen für die richtige Farbwiedergabe sind:
import st7789
display = st7789.ST7789(
data_bus=display_bus,
display_width=_WIDTH,
display_height=_HEIGHT,
frame_buffer1=fb1,
frame_buffer2=None,
backlight_pin=21,
color_space=lv.COLOR_FORMAT.RGB565,
color_byte_order=st7789.BYTE_ORDER_BGR,
rgb565_byte_swap=True,
)... für die Displayeinstellung:
display.set_color_inversion(False)CYD mit 3,5" Display[Bearbeiten | Quelltext bearbeiten]
- Link zum Hersteller Wiki:
Zusammenfassung[Bearbeiten | Quelltext bearbeiten]
- CYD = günstige ESP32-Display-Plattform
- mehrere Hardware-Varianten existieren
- LVGL läuft gut, aber Treiber ist entscheidend
- ESP32-S3 Varianten sind deutlich leistungsfähiger