LVGL: Pustaka Grafis Ringan yang Menggerakkan Tampilan Embedded Tanpa Akselerasi GPU

BigGo Editorial Team
LVGL: Pustaka Grafis Ringan yang Menggerakkan Tampilan Embedded Tanpa Akselerasi GPU

Dunia sistem embedded sering membutuhkan antarmuka pengguna grafis yang dapat berjalan pada perangkat dengan keterbatasan sumber daya yang signifikan. LVGL (Light and Versatile Graphics Library) telah muncul sebagai solusi populer bagi pengembang yang bekerja dengan mikrokontroler dan layar kecil, menawarkan cara untuk membuat UI modern tanpa memerlukan GPU yang kuat atau sistem operasi.

Rendering Perangkat Lunak untuk Perangkat dengan Sumber Daya Terbatas

LVGL dirancang khusus untuk mikrokontroler dan perangkat berdaya rendah dengan kebutuhan memori minimal - hanya membutuhkan 32KB RAM dan 128KB memori flash, ditambah beberapa ruang tambahan untuk rendering dan framebuffer. Hal ini membuatnya cocok untuk perangkat seperti mikrokontroler ESP32 yang terhubung ke layar kecil seperti ILI9341 atau SSD1306. Berbeda dengan framework GUI desktop, LVGL beroperasi langsung dengan buffer piksel, memungkinkannya berfungsi pada sistem di mana Anda cukup mengatur warna piksel atau menggambar primitif dasar.

Aplikasi embedded biasanya ingin melakukan hal lain untuk ~90% waktu CPU yang tersisa setiap detik yang tidak digunakan untuk merender GUI secara software.

Benchmark kinerja pada mikrokontroler populer seperti ESP32-S2 menunjukkan waktu rendering antara 50-100ms untuk berbagai operasi termasuk memutar beberapa bitmap. Tingkat kinerja ini lebih dari cukup untuk sebagian besar aplikasi embedded di mana pembaruan UI mungkin hanya perlu terjadi pada 1 frame per detik, dengan CPU menghabiskan sebagian besar waktunya untuk tugas lain.

Persyaratan Sistem LVGL

  • RAM: minimal 32KB
  • Memori flash: minimal 128KB
  • Ruang tambahan diperlukan untuk buffer rendering dan framebuffer
  • Kompatibel dengan mikrokontroler seperti ESP32, STM32, Raspberry Pi Pico

Jenis Tampilan Populer yang Digunakan dengan LVGL

  • Tampilan ILI9341
  • Tampilan SSD1306
  • Layar OLED kecil
  • Tampilan E-paper

Alternatif Pustaka GUI Embedded

  • TouchGFX - Pesaing utama LVGL
  • Adafruit GFX - Untuk tampilan monokrom dengan sumber daya sangat terbatas
  • Dear ImGui - Untuk sistem dengan dukungan GPU (kasus penggunaan berbeda)

Alat Pengembangan LVGL

  • SquareLine Studio - Editor UI khusus LVGL
  • GUI Guider (NXP) - Alternatif editor UI
  • EEZ Studio - Opsi editor UI sumber terbuka

Pengembangan Lintas Platform dan Alat

Meskipun terutama menargetkan sistem embedded, keserbagunaaan LVGL memungkinkan pengembang untuk membuat pengalaman pengguna yang konsisten di berbagai platform. Pustaka ini dapat berjalan di framebuffer pada Linux atau melalui emulasi, memungkinkan antarmuka yang sama digunakan pada perangkat fisik (seperti tampilan termostat) dan ketika mengaksesnya dari jarak jauh melalui antarmuka web yang dikompilasi dengan Emscripten.

Beberapa alat ada untuk menyederhanakan pengembangan UI dengan LVGL. SquareLine Studio berfungsi sebagai editor khusus untuk antarmuka LVGL, meskipun beberapa pengembang mencatat mereka lebih memilih plugin VSCode daripada aplikasi mandiri. Pilihan alternatif yang disebutkan oleh komunitas termasuk GUI Guider dari NXP dan EEZ Studio yang open-source, yang beberapa pengguna anggap lebih mudah digunakan.

Integrasi MicroPython dan Pustaka Alternatif

LVGL menawarkan dukungan MicroPython, meskipun anggota komunitas menyarankan untuk tidak menggunakan port resmi. Sebagai gantinya, mereka merekomendasikan implementasi alternatif di github.com/lvgl-micropython/lvgl_micropython untuk fungsionalitas yang lebih baik, termasuk dukungan untuk font kustom. Integrasi ini memungkinkan pengembang Python memanfaatkan kemampuan LVGL tanpa menulis kode C.

Ketika mempertimbangkan alternatif di ruang GUI embedded, TouchGFX tampaknya menjadi pesaing utama LVGL. Untuk tampilan monokrom dengan sumber daya yang sangat terbatas, opsi seperti pustaka Adafruit GFX mungkin lebih tepat. Perlu dicatat bahwa LVGL menempati ceruk yang berbeda dari pustaka GUI mode langsung seperti Dear ImGui, yang terutama dirancang untuk sistem dengan GPU berkemampuan 3D daripada mikrokontroler.

Akselerasi Perangkat Keras dan Pengembangan Masa Depan

Meskipun LVGL terutama menggunakan rendering perangkat lunak, ia dapat memanfaatkan akselerasi perangkat keras khusus pada platform tertentu. Beberapa mikrokontroler memiliki mesin Blitter atau prosesor piksel khusus (seperti Pixel Pipeline-Processor dari NXP) yang dapat menangani operasi seperti penskalaan, rotasi, alpha-blending, dan penyalinan piksel. Dokumentasi LVGL menyebutkan berbagai Unit Draw termasuk dukungan GPU, integrasi SDL (yang dapat menggunakan OpenGL), dan pekerjaan yang sedang berlangsung untuk dukungan OpenGL ES langsung.

Pustaka ini terus berkembang dengan pengembangan aktif dan dukungan komunitas yang kuat. Dokumentasinya yang komprehensif, contoh, dan API yang mudah dipahami telah menjadikannya favorit di kalangan pengembang yang bekerja pada sistem embedded yang membutuhkan antarmuka pengguna yang intuitif tanpa overhead dari framework grafis yang lebih kompleks.

Bagi pengembang yang ingin memulai dengan LVGL, pustaka ini menawarkan dokumentasi dan contoh yang luas, termasuk sampel kode dalam C dan MicroPython. Komunitas seputar LVGL aktif dan suportif, dengan forum yang tersedia untuk pemecahan masalah dan berbagi pengetahuan.

Referensi: LVGL Light and Versatile Graphics Library