Arduino LVGL Kullanımı

Arduino LVGL Kullanımı Giriş

Arduino LVGL Kullanımı. Arduino ekosisteminde yıllardır grafik ekran kullanımı genellikle basit kütüphanelerle sınırlıydı. Ancak endüstriyel kullanıcı arayüzlerine benzer ekranlar geliştirmek, animasyon, menü sistemi, dokunmatik kontrol, widget’lar ve profesyonel HMI tasarımı gibi özellikler isteyenler için LVGL (Light and Versatile Graphics Library) devrim niteliğinde bir çözümdür.

LVGL, düşük bellek tüketimi ve yüksek performansıyla ESP32, STM32, Arduino tabanlı ekranlar ve diğer mikrodenetleyiciler üzerinde çalışan modern bir grafik arayüz (GUI) kütüphanesidir.


1. LVGL Nedir?

LVGL (LittlevGL); gömülü sistemlerde grafik arayüz geliştirmek için tasarlanmış açık kaynaklı, yüksek performanslı ve düşük kaynak tüketen bir GUI motorudur.

LVGL’nin teknik özellikleri:

  • Ultra düşük bellek tüketimi (20 KB RAM’de bile çalışabilir)
  • Yüksek FPS sağlayan grafik motoru
  • Çoklu sayfa (screen) yönetimi
  • Stil ve tema sistemi
  • Animasyon motoru
  • Touch panel desteği
  • Olay tabanlı widget sistemi
  • FreeRTOS uyumluluğu
  • Donanımdan bağımsız yapı

Özellikle ESP32 + Arduino + TFT ekran kombinasyonunda mükemmel sonuç verir.


2. Gerekli Donanım Listesi

LVGL, çoğu grafik ekran ile uyumludur. Aşağıda en çok kullanılan yapılandırma verilmiştir:

DonanımAçıklama
ESP32 DevKitCLVGL için yeterli RAM ve hız sağlar
ILI9341, ST7789, ILI9488 TFT ekranYaygın olarak kullanılır
XPT2046 resistive touch panel (isteğe bağlı)Dokunmatik kontrol
FT6236 capacitive touch (isteğe bağlı)Kapasitif touch
TFT_eSPI veya LovyanGFXDonanım sürücüsü
Breadboard & jumper kablolarBağlantılar

Arduino UNO da LVGL ile kullanılabilir ancak RAM sınırlamaları nedeniyle önerilmez. ESP32, LVGL için ideal platformdur.


3. Bağlantı Şeması

Aşağıdaki şema ESP32 + ILI9341 (SPI) + XPT2046 touch için hazırlanmıştır.

TFT (ILI9341) Bağlantısı

ILI9341 PinESP32 Pin
VCC3.3V
GNDGND
CS15
RESET4
DC2
MOSI23
MISO19
SCK18
LED3.3V

Touch Panel Bağlantısı (XPT2046)

XPT2046 PinESP32 Pin
T_DO (MISO)19
T_DIN (MOSI)23
T_CLK18
T_CS5
IRQ25

Bu bağlantı, LVGL + TFT_eSPI + XPT2046 üçlüsü ile %100 uyumludur.


4. Arduino LVGL Başlangıç Kodu

Aşağıdaki kod, temel LVGL kurulumunu, ekran sürücüsünü ve basit bir etiket (label) oluşturmayı gösterir.

#include <lvgl.h>
#include <TFT_eSPI.h>

TFT_eSPI tft = TFT_eSPI();

static lv_disp_draw_buf_t draw_buf;
static lv_color_t buf[240 * 10];

void my_disp_flush(lv_disp_drv_t *disp,
                   const lv_area_t *area, 
                   lv_color_t *color_p) {

  tft.startWrite();
  tft.setAddrWindow(area->x1, area->y1,
                    area->x2 - area->x1 + 1,
                    area->y2 - area->y1 + 1);

  uint32_t size = (area->x2 - area->x1 + 1) *
                  (area->y2 - area->y1 + 1);

  tft.pushColors((uint16_t *)&color_p->full, size, true);
  tft.endWrite();
  lv_disp_flush_ready(disp);
}

void setup() {
  lv_init();
  tft.begin();
  tft.setRotation(1);

  lv_disp_draw_buf_init(&draw_buf, buf, NULL, 240 * 10);

  static lv_disp_drv_t disp_drv;
  lv_disp_drv_init(&disp_drv);
  disp_drv.hor_res = 240;
  disp_drv.ver_res = 320;
  disp_drv.flush_cb = my_disp_flush;
  disp_drv.draw_buf = &draw_buf;
  lv_disp_drv_register(&disp_drv);

  lv_obj_t *label = lv_label_create(lv_scr_act());
  lv_label_set_text(label, "Merhaba LVGL!");
  lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
}

void loop() {
  lv_timer_handler();
  delay(5);
}

Bu kod:

  • Ekranı başlatır
  • LVGL grafik motorunu çalıştırır
  • Ekrana yazı basar
  • Touch sürücüsü eklenebilir

5. LVGL Widget Örnekleri

LVGL, çok sayıda hazır kullanıcı arayüzü bileşeni (widget) sunar:

Button + Click Event

lv_obj_t *btn = lv_btn_create(lv_scr_act());
lv_obj_set_size(btn, 120, 50);
lv_obj_align(btn, LV_ALIGN_CENTER, 0, 40);

lv_obj_t *label = lv_label_create(btn);
lv_label_set_text(label, "Bas");
lv_obj_center(label);

Slider

lv_obj_t *slider = lv_slider_create(lv_scr_act());
lv_obj_set_width(slider, 200);
lv_obj_align(slider, LV_ALIGN_CENTER, 0, 80);

Chart (Grafik)

lv_obj_t *chart = lv_chart_create(lv_scr_act());
lv_chart_set_point_count(chart, 20);
lv_obj_set_size(chart, 200, 150);
lv_obj_align(chart, LV_ALIGN_CENTER, 0, -40);

6. Gündelik Hayatta LVGL Kullanım Alanları

Endüstriyel Uygulamalar

  • Makine kontrol paneli
  • Üretim sayaç ekranı
  • HMI arayüzleri

IoT Sistemleri

  • Sıcaklık–nem izleme
  • Enerji tüketim paneli
  • Kablosuz sensör ağı ekranı

Akıllı Ev Sistemleri

  • Aydınlatma kontrol paneli
  • Güvenlik ekranı
  • Ev otomasyon menüsü

Robotik

  • Servo açı ekranı
  • Pil seviyesi göstergesi
  • Robot durum paneli

3D Yazıcı ve CNC

  • Menü sistemi
  • Isı kontrol paneli
  • Motor konum ekranı

7. Google’da En Çok Aranan Sorular ve Cevapları

1. LVGL Arduino UNO’da çalışır mı?

Teorik olarak evet, ancak UNO’nun RAM’i çok düşük olduğu için kullanımı önerilmez.
ESP32 en ideal seçenektir.


2. Ekranım LVGL ile açılıyor ama donuyor. Neden?

En yaygın nedenler:

  • lv_timer_handler() çağrılmıyor
  • Çizim tamponu (buffer) çok küçük
  • SPI hızı çok düşük

3. LVGL Touch neden çalışmıyor?

Olası nedenler:

  • Touch CS pini yanlış
  • Touch sürücüsü yüklenmemiş
  • Koordinatlar kalibre edilmemiş

4. LVGL ile menü tasarlamak mümkün mü?

Evet. LVGL, profesyonel menü sistemleri oluşturmak için uygundur.


5. LVGL’de FPS nasıl artırılır?

  • TFT_eSPI’de SPI frekansını yükselt
  • Çizim tampona daha büyük boyut ver
  • Ekran çözünürlüğünü düşür
  • Animasyon sayısını azalt

6. LVGL ile 20 sayfalık menü tasarlayabilir miyim?

Evet. LVGL çoklu ekran yapısı sayesinde sınırsız sayfa destekler.


7. LVGL neden endüstride bu kadar çok kullanılıyor?

  • Düşük RAM tüketimi
  • Yüksek stabilite
  • Profesyonel widget sistemi
  • Dokunmatik desteği
  • Cross-platform yapısı

8. Geliştirilebilir Proje Fikirleri

Dokunmatik ekranlı akıllı termostat
SSH üzerinden mesaj alan IoT ekranı
Tarım teknolojileri için kontrol paneli
Servo motor kontrol UI
Çevrim içi hava durumu gösteren widget paneli


Eğitimlerimize katılarak bu ve diğer projeleri uygulamalı olarak öğrenebilirsiniz. Eğitimlerimize ve diğer bilgilere buradaki linkten (https://www.facadium.com.tr/) ulaşabilirsiniz. Ürünlerimize STEM Kits üzerinden ulaşabilirsiniz. STEM Kits (https://www.stemkits.com.tr/) Lütfen bizlere iletişim kanallarından ulaşınız.