Kapitel 18 – CYD (Cheap Yellow Display)

Aus Micropython
Zur Navigation springen Zur Suche springen
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 Chip

Variante 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 integriert

Variante 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, y

Erweiterungsmö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]

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