Kapitel 17 – LVGL mit Hardware (ESP32 / Pico)

Aus Micropython
Zur Navigation springen Zur Suche springen
LVGL 9 mit MicroPython
Kapitel 17
Titel LVGL mit Hardware (ESP32 / Pico)
Voraussetzungen Grundkenntnisse in MicroPython
Getestet mit LVGL 9.x
Schwierigkeitsgrad ★★★★☆
Benötigte Zeit 60 Minuten
Status in Arbeit

Kapitel 17 – LVGL mit Hardware (ESP32 / Pico)[Bearbeiten | Quelltext bearbeiten]

Lernziel[Bearbeiten | Quelltext bearbeiten]

Nach diesem Kapitel kannst du

  • LVGL mit echten Sensoren verbinden,
  • Daten aus MicroPython in die UI bringen,
  • typische ESP32/Pico-Anwendungen strukturieren,
  • UI und Hardware sauber trennen.

Grundidee[Bearbeiten | Quelltext bearbeiten]

LVGL kümmert sich nur um die Anzeige.

Die Hardware liefert die Daten.

Beispiel:

  • Sensor → Temperatur
  • IMU → Bewegung
  • WLAN → Status
  • GPIO → Schalter

LVGL zeigt diese Daten nur an.

Architektur[Bearbeiten | Quelltext bearbeiten]

Typisches Prinzip:

  • Hardware-Schicht (Sensoren, WLAN)
  • Logik-Schicht (Python Code)
  • UI-Schicht (LVGL)

Beispiel: einfacher Sensorwert[Bearbeiten | Quelltext bearbeiten]

Angenommen ein Sensor liefert einen Wert:

value = 23.7

Anzeige in LVGL[Bearbeiten | Quelltext bearbeiten]

import lvgl as lv

scr = lv.screen_active()

label = lv.label(scr)
label.center()

Update-Funktion[Bearbeiten | Quelltext bearbeiten]

def update():
    value = read_sensor()
    label.set_text(f"{value:.1f} °C")

Timer für Live-Daten[Bearbeiten | Quelltext bearbeiten]

def tick(t):
    value = read_sensor()
    label.set_text(f"{value:.1f} °C")

lv.timer_create(tick, 1000, None)

Hardware-Funktion (Platzhalter)[Bearbeiten | Quelltext bearbeiten]

def read_sensor():
    return 20 + (lv.rand() % 100) / 10

Prinzip[Bearbeiten | Quelltext bearbeiten]

LVGL kennt keine Sensoren.

Du musst die Daten selbst liefern.

Wichtig für ESP32 / Pico[Bearbeiten | Quelltext bearbeiten]

Typische Datenquellen:

  • I2C Sensoren
  • SPI Geräte
  • ADC Eingänge
  • GPIO Zustände
  • WLAN / ESP-NOW Daten

Beispiel: GPIO Status[Bearbeiten | Quelltext bearbeiten]

def read_gpio():
    return pin.value()

Anzeige eines Schalters[Bearbeiten | Quelltext bearbeiten]

def update(t):
    if pin.value():
        label.set_text("EIN")
    else:
        label.set_text("AUS")

Typischer Fehler[Bearbeiten | Quelltext bearbeiten]

Achtung

Viele versuchen Sensorlogik direkt in LVGL-Callbacks zu schreiben.

Besser ist:

Hardware → Funktion → UI Update

Best Practice[Bearbeiten | Quelltext bearbeiten]

Hinweis

Trenne immer:

  • Hardware-Zugriff
  • Datenverarbeitung
  • UI Darstellung

Beispiel Struktur[Bearbeiten | Quelltext bearbeiten]

def read_data():
    return sensor.read()

def process_data(v):
    return v * 1.1

def update_ui(v):
    label.set_text(str(v))

Merke[Bearbeiten | Quelltext bearbeiten]

Merke

LVGL zeigt nur Daten an – es erzeugt keine Daten.

Zusammenfassung[Bearbeiten | Quelltext bearbeiten]

  • LVGL = Anzeige
  • Hardware = Datenquelle
  • Timer verbindet beides
  • Saubere Trennung ist wichtig für stabile Projekte