LVGL (Light and Versatile Graphics Library)

Was ist LVGL? 🤔

LVGL (Light and Versatile Graphics Library) ist eine quelloffene (Open Source) und kostenlose Grafikbibliothek, die speziell für die Erstellung von grafischen Benutzeroberflächen (Graphical User Interfaces - GUIs) auf eingebetteten Systemen (Embedded Systems) mit begrenzten Ressourcen entwickelt wurde. Sie ist primär in der Programmiersprache C geschrieben, was eine hohe Portabilität und Effizienz auf Microcontrollern (MCUs) und anderen ressourcenbeschränkten Plattformen ermöglicht.

Das Hauptziel von LVGL ist es, Entwickler*innen die Werkzeuge an die Hand zu geben, um auch auf Hardware mit wenig Arbeitsspeicher (RAM) und Flash-Speicher (ROM) moderne, ansprechende und interaktive Benutzeroberflächen mit Features wie Animationen, Kantenglättung (Anti-Aliasing), Transparenz und anpassbaren Stilen zu realisieren. LVGL ist hardwareunabhängig konzipiert und kommuniziert mit der spezifischen Hardware über eine definierte Hardware Abstraction Layer (HAL).

Kernmerkmale und Architektur

LVGL bietet eine umfangreiche Sammlung an Funktionen und folgt einer klaren Architektur:

  • Vielseitige Widgets: Eine große Auswahl an vorgefertigten GUI-Elementen (Widgets) steht zur Verfügung, darunter Buttons, Labels, Bilder, Slider, Switches, Checkboxen, Dropdown-Listen, Text-Areas, virtuelle Keyboards, Diagramme (Charts), Tab-Views, Fenster, Kalender, Farb-Picker und viele mehr.
  • Hardware Abstraction Layer (HAL): Die Portabilität auf unterschiedliche Hardware wird durch die HAL sichergestellt. Entwickler*innen müssen lediglich Treiber für das verwendete Display (zur Übertragung des Framebuffers) und für die Eingabegeräte (z.B. Touchscreen-Controller, physische Tasten, Drehgeber/Encoder) implementieren und diese in der HAL registrieren.
  • Ressourceneffizienz: LVGL ist für minimalen RAM- und ROM-Verbrauch optimiert. Viele Features können zur Kompilierzeit über ein Konfigurationssystem (basierend auf Kconfig/menuconfig) aktiviert oder deaktiviert werden, um den Speicherbedarf exakt an die Zielplattform anzupassen. Es kann auch ohne dynamische Speicherzuweisung (malloc) betrieben werden.
  • Fortgeschrittene Grafik-Engine: Unterstützt moderne Grafikeffekte wie Anti-Aliasing, Opazität (Transparenz), Schatten, Farbverläufe, Bild-Rotation und -Skalierung sowie ein flexibles Animations-Interface.
  • Leistungsstarke Styling- und Theming-Engine: Das Aussehen der Widgets kann über Styles, ähnlich wie bei CSS, sehr flexibel angepasst werden. Styles können kaskadieren und geerbt werden, und es können globale Themes definiert werden.
  • Text-Rendering: Bietet umfassende Unterstützung für Text inklusive UTF-8 für Internationalisierung, Unterstützung für bidirektionale Schriften (z.B. Arabisch, Hebräisch), Kerning und die Einbindung verschiedener Schriftarten (Bitmap-Fonts, integrierte Vektor-Fonts, externe Font-Engines).
  • Sprach-Bindings: Über offizielle und Community-Bindings kann LVGL auch aus anderen Programmiersprachen wie MicroPython oder JavaScript (nützlich für Web-Simulatoren) heraus verwendet werden.

Anwendungsbereiche und Zielplattformen

LVGL wird typischerweise in Projekten eingesetzt, die eine grafische Benutzeroberfläche auf Hardware mit begrenzten Ressourcen benötigen:

  • Internet der Dinge (IoT)-Geräte mit Displays (z.B. smarte Thermostate, Wetterstationen, Steuerungen).
  • Wearables wie Smartwatches oder Fitness-Tracker.
  • Smart-Home-Systeme (Bedienpanels, intelligente Haushaltsgeräte).
  • Industrielle Steuerungen und HMIs (Human-Machine Interfaces).
  • Medizintechnische Geräte (z.B. mobile Analysegeräte, Patientenmonitore).
  • Automotive-Bereich (z.B. Elemente in digitalen Kombiinstrumenten, Klimasteuerungen).
  • Unterhaltungselektronik und andere Geräte mit kleinen bis mittleren Displays.

Als Zielplattformen kommen primär Microcontroller (MCUs) in Frage, die über genügend RAM und Flash sowie einen Display-Controller verfügen (z.B. ESP32-Familie, STM32-Serien, NXP i.MX RT, Raspberry Pi Pico). LVGL kann aber auch auf leistungsfähigeren Single-Board Computern (SBCs) unter Linux (z.B. Raspberry Pi) oder sogar auf Desktop-Betriebssystemen (für die Entwicklung und Simulation der GUI) eingesetzt werden.

Vorteile, Lizenz und Community

Die Wahl von LVGL bietet Entwickler*innen von Embedded Systems mehrere Vorteile:

  • Kostenlos und Open Source: Veröffentlicht unter der liberalen MIT-Lizenz, die eine kostenlose Nutzung auch in kommerziellen Produkten ohne Einschränkungen erlaubt.
  • Hohe Portabilität: Dank der HAL-Architektur leicht auf neue MCUs und Displays portierbar.
  • Geringer Ressourcenbedarf: Ermöglicht ansprechende GUIs auch auf kostengünstiger Hardware mit limitiertem Speicher.
  • Umfangreicher Funktionsumfang: Bietet eine große Zahl an Widgets und modernen Grafikfeatures "out of the box".
  • Professionelles Erscheinungsbild: Ermöglicht die Gestaltung von UIs, die optisch mit denen auf leistungsfähigeren Systemen mithalten können.
  • Gute Dokumentation und Beispiele: Eine umfangreiche offizielle Dokumentation und zahlreiche Beispielprojekte erleichtern den Einstieg.

LVGL wird von einer aktiven und stetig wachsenden internationalen Community unterstützt und weiterentwickelt. Support findet sich über GitHub, ein offizielles Forum und einen Discord-Server.

Zurück

Wie können wir Ihnen helfen?

Die Potenziale digitaler Möglichkeiten sind riesig. Das Allermeiste, was Sie sich vorstellen können, können wir für Sie entwickeln. Glauben Sie nicht? Dann sollten wir reden. Sonst natürlich auch gerne.

Mathias Münzner

Geschäftsführer

06221-1878440

Kontakt

cortona GmbH

Margot-Becke-Ring 8

69124 Heidelberg

T: +49 (0) 6221 18 78 440

E: info@cortona.de