LVGL: Light and Versatile Graphics

LVGL is an open-source, lightweight embedded library (C, but C++ compatible) for displays and touch screens. It can be used to design a fully functional Graphical User Interface (GUI) and can be easily imported to multiple different microcontrollers (such as STM32, PIC, ESP32). We can find examples for almost each of them on the LVGL’s Github page. It is said that 64kB flash and 8kB RAM is enough for a simple user interface. Below you can see some of the GUIs that I’ve found on the Internet for different platforms:

What excites me the most, is that one can learn this library and then migrate between different platforms (i.e. different projects, products) without the need of learning a new library from the beginning. If this was not enough, the LVGL project comes with a simulator, on which we can prototype our interfaces, play around with widgets, etc. This significantly speeds up the development phase, although the simulator is not as simple and easy to migrate to our embedded device as for example TouchGFX simulator. As of the current version (v7.8.1), there are the following widgets available: arc, bar, button (+ matrix), calendar, canvas, checkbox, chart, container, color picker, drop-down list, gauge, image, image button, keyboard, label, LED, line, list, line meter, message box, object mask, page, roller, slider, spinbox, spinner. 

In this series, I’m going to present to you how to set up the simulator, and how to create a simple GUI. Then we will migrate this to our ESP32 device and integrate it with the hardware.