Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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]]
si/laboratoare/2025/05.txt · Last modified: 2025/10/30 00:48 by cosmin.chenaru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0