This shows you the differences between two versions of the page.
| — |
si:laboratoare:2025:05 [2025/10/30 00:48] (current) cosmin.chenaru created |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ===== Laboratorul 05. LVGL ===== | ||
| + | ==== Despre LVGL ==== | ||
| + | |||
| + | LVGL (Light and Versatile Graphics Library) este o biblioteca open-source pentru interfete grafice (GUI) folosite pe dispozitivele embedded cu resurse limitate precum microcontrollerele. Are suportul necesar pentru a crea interfete grafice moderne si interactive cum gasim si pe smartphone-uri. | ||
| + | |||
| + | [[https://lvgl.io|Site-ul oficial]] | ||
| + | |||
| + | {{:si:iot2025:lvgl_ebike_demo-1058142653.jpg?600|}} | ||
| + | |||
| + | ==== Functionalitati principale ==== | ||
| + | |||
| + | * Biblioteca de widget-uri: butoane, label-uri, slider-e, meniuri, checkbox-uri, chart-uri, imagini si animatii, tastaturi | ||
| + | * Eficienta randarii, foloseste "dirty area tracking" pentru a redesena doar acele portiuni din ecran care au fost modificate | ||
| + | * Abstractie hardware (HAL): foloseste un nivel intermediar de acces al display-ului si al dispozitivelor de intrare (touchscreen) | ||
| + | * Este usoara - consum redus de memorie si procesor (Flash: ~100–200 KB, RAM: ~10–50 KB) | ||
| + | * Este portabila - funcționeaza pe multe platforme (MCU-uri, Linux embedded, RTOS-uri). | ||
| + | * Are simulator pentru Windows si Linux pentru a usura procesul de development (il vom folosi si noi astazi) | ||
| + | |||
| + | ==== Arhitectura ==== | ||
| + | |||
| + | Structura LVGL poate fi impartita in 3 mari componente. | ||
| + | |||
| + | <code> | ||
| + | +-----------------------------+ | ||
| + | | Application | | ||
| + | | (Your GUI logic & widgets) | | ||
| + | +-----------------------------+ | ||
| + | | LVGL Core | | ||
| + | | Drawing, events, objects | | ||
| + | +-----------------------------+ | ||
| + | | Display & Input Interfaces | | ||
| + | | (Drivers for LCD, touch) | | ||
| + | +-----------------------------+ | ||
| + | | Hardware / OS | | ||
| + | | (ESP32, NuttX, FreeRTOS) | | ||
| + | +-----------------------------+ | ||
| + | </code> | ||
| + | |||
| + | * Aplicatia principala | ||
| + | * Nucleul LVGL | ||
| + | * Drivere | ||
| + | |||
| + | ==== LVGL pentru Nuttx ==== | ||
| + | |||
| + | Nuttx are deja inclusa biblioteca LVGL in subsistemul grafic. Config-ul folosit astazi are deja componenta LVGL activat, dar mentionam aici setarile din config care trebuie activate daca veti avea nevoie sa folositi un alt config. | ||
| + | |||
| + | <code> | ||
| + | make menuconfig | ||
| + | → Graphics Support → LVGL graphics library = [Y] | ||
| + | → Graphics Applications → LVGL Demo Widgets = [Y] | ||
| + | → Board Selection → Enable LCD or SPI display driver | ||
| + | </code> | ||
| + | |||
| + | ==== LVGL pe smartwatch-ul Hacktorwatch ==== | ||
| + | |||
| + | Smartwatch-ul Hacktorwatch are integrate LCD-ul ... si senzorul touchscreen CST816S. Display-ul foloseste protocolul SPI pentru a comunica cu board-ul ESP32, folosind urmatorul pinout. | ||
| + | |||
| + | <code> | ||
| + | | Signal | Description | ESP32 GPIO | | ||
| + | | -----: | ------------ | ------------ | | ||
| + | | MOSI | Data to LCD | e.g. GPIO 23 | | ||
| + | | SCLK | Clock | e.g. GPIO 18 | | ||
| + | | CS | Chip select | e.g. GPIO 5 | | ||
| + | | DC | Data/Command | e.g. GPIO 21 | | ||
| + | | RST | Reset | e.g. GPIO 22 | | ||
| + | | BL | Backlight | optional | | ||
| + | |||
| + | </code> | ||
| + | |||
| + | ==== Exercitii ==== | ||
| + | **0.** (Optional) Rulati simulatorul LVGL pe Linux-ul vostru | ||
| + | |||
| + | ToDo | ||
| + | |||
| + | **1.** ToDo | ||
| + | ==== Resurse ==== | ||
| + | * [[https://lvgl.io]] | ||
| + | * [[https://docs.lvgl.io/master/examples.html]] | ||