Trabalhar com LVGL

LVGL é uma biblioteca gráfica de código aberto para dispositivos embarcados. Ela fornece componentes de UI prontos, como rótulos, painéis, barras e ferramentas de layout, para que você possa construir uma interface estruturada em C/C++ sem desenhar cada pixel manualmente.
Este guia cria um painel de status LVGL em ePaper simples com PlatformIO. O exemplo usa o reTerminal E1001 como alvo padrão e mantém ambientes PlatformIO separados para reTerminal E1002, E1003 e E1004.
O projeto renderiza um painel estático com:
- um título,
- um cartão de status do dispositivo,
- um cartão de status de rede,
- um cartão de bateria de demonstração.
Para displays ePaper, esse fluxo de trabalho de UI estática é um bom ponto de partida porque a tela só precisa ser atualizada quando as informações exibidas mudam.
Se você quiser visualizar rapidamente os resultados do projeto ou testar o firmware de demonstração básico antes de configurar um ambiente de desenvolvimento, abra o reTerminal E-Series Firmware Hub. Você pode escolher um dispositivo reTerminal E Series compatível e gravar o firmware de demonstração diretamente a partir de um navegador.
Hardware compatível
Prepare um dos seguintes dispositivos reTerminal E Series. O projeto PlatformIO neste guia usa o reTerminal E1001 como ambiente padrão.
| reTerminal E1001 | reTerminal E1002 |
|---|---|
![]() | ![]() |
| ePaper monocromático de 7,5" 800 x 480 | ePaper Spectra 6 cores de 7,3" 800 x 480 |
| reTerminal E1003 | reTerminal E1004 |
|---|---|
![]() | ![]() |
| ePaper monocromático de 10,3" 1872 x 1404 | ePaper Spectra 6 cores de 13,3" 1200 x 1600 |
Como o projeto funciona
Este exemplo tem duas partes principais:
- LVGL cria os objetos de UI, como rótulos, cartões e barras.
- Seeed_GFX inicializa o display ePaper, recebe os pixels renderizados e atualiza o painel físico.
O projeto mantém essas duas partes em arquivos separados:
| Arquivo | Finalidade |
|---|---|
platformio.ini | Define a placa PlatformIO, bibliotecas, flags de compilação e ambientes de hardware. |
include/driver.h | Seleciona o arquivo de driver Seeed_GFX correto para o alvo de hardware ativo. |
include/driver_e1001.h até include/driver_e1004.h | Armazena a combinação placa-tela Seeed_GFX para cada modelo reTerminal E Series. |
include/lv_conf.h | Configura os recursos, profundidade de cor e fontes do LVGL. |
src/main.cpp | Inicializa Arduino, Seeed_GFX, LVGL, o buffer de display e o fluxo de atualização do ePaper. |
src/ui_status_panel.cpp | Cria o layout do painel de status LVGL. |
Etapa 1: Instalar o PlatformIO
Este guia usa o PlatformIO como fluxo de trabalho do projeto. O PlatformIO mantém a configuração da placa, bibliotecas e arquivos-fonte juntos em uma pasta, o que torna o projeto LVGL mais fácil de compilar e manter.
Se o PlatformIO ainda não estiver instalado, siga as etapas de configuração em Trabalhar com PlatformIO e depois volte a este guia.
Após a instalação, abra o Visual Studio Code. Você deverá ver o ícone do PlatformIO na barra de atividades à esquerda.
Etapa 2: Baixar o projeto de exemplo
O exemplo de painel de status LVGL em ePaper está disponível no repositório oficial do reTerminal E Series:
Baixe o repositório para o seu computador e depois abra esta pasta:
OSHW-reTerminal-Series-E-D/examples/official/LVGLePaperStatusPanel
O projeto de exemplo contém estes arquivos principais:
| Arquivo | O que ele faz |
|---|---|
platformio.ini | Define os ambientes PlatformIO para E1001, E1002, E1003 e E1004. |
include/driver.h | Seleciona a configuração de driver ePaper correta para o ambiente de compilação ativo. |
include/lv_conf.h | Configura os recursos e fontes do LVGL usados por esta demonstração. |
src/main.cpp | Inicializa o display, LVGL, o buffer de renderização e o fluxo de atualização do ePaper. |
src/ui_status_panel.cpp | Cria a interface do painel de status exibida no display ePaper. |
Etapa 3: Abrir o projeto no PlatformIO
Etapa 1. Abra o Visual Studio Code.
Etapa 2. Clique no ícone PlatformIO na barra de atividades à esquerda.
Etapa 3. Clique em PIO Home > Open.
Etapa 4. Clique em Open Project.

Etapa 5. Selecione a pasta LVGLePaperStatusPanel.
Etapa 6. Aguarde o PlatformIO carregar o projeto e instalar as bibliotecas necessárias.
Etapa 4: Selecionar o ambiente de hardware
Abra platformio.ini na raiz do projeto. O ambiente padrão é reterminal_e1001.
[platformio]
default_envs = reterminal_e1001
Para o E1001, você pode manter a configuração padrão. Para outros dispositivos, altere default_envs para o ambiente correspondente:
| Dispositivo | Ambiente PlatformIO |
|---|---|
| reTerminal E1001 | reterminal_e1001 |
| reTerminal E1002 | reterminal_e1002 |
| reTerminal E1003 | reterminal_e1003 |
| reTerminal E1004 | reterminal_e1004 |
Você também pode compilar um ambiente específico a partir do terminal do PlatformIO sem alterar default_envs.
Etapa 5: Compilar e enviar o demo
Conecte o dispositivo reTerminal E Series ao seu computador com um cabo USB.
Para compilar o firmware padrão do E1001, execute:
pio run
Para compilar um alvo específico, adicione -e e o nome do ambiente. Por exemplo:
pio run -e reterminal_e1001
Para enviar o firmware para o dispositivo, execute:
pio run -e reterminal_e1001 --target upload
Após o envio, abra o monitor serial:
pio device monitor -b 115200
Quando a demonstração é iniciada corretamente, o monitor serial mostra:
Seeed ePaper LVGL status panel starting.
LVGL status panel rendered.
O display de ePaper é atualizado uma vez e mostra o painel de status LVGL.
Etapa 6: Personalize e aprenda com a interface LVGL
Depois que a demonstração for executada com sucesso, você pode começar a modificá-la como um pequeno projeto de aprendizado de LVGL. Os dois arquivos mais importantes são:
| File | Comece aqui quando quiser |
|---|---|
src/main.cpp | Alterar os valores passados para a interface, como status do dispositivo, status da rede e porcentagem da bateria. |
src/ui_status_panel.cpp | Alterar o título da tela, o layout dos cards, fontes, cores, rótulos e widgets LVGL. |
Alterar os valores exibidos
Abra src/main.cpp e encontre esta linha dentro de setup():
ui_status_panel_set_status("Ready", "Wi-Fi Standby", 76);
Essa função atualiza os três valores dinâmicos na tela:
| Parameter | Significado | Exemplo |
|---|---|---|
status | O texto de status do dispositivo mostrado no card Device. | "Ready" |
network | O texto de status da rede mostrado no card Network. | "Wi-Fi Standby" |
battery_percent | O valor da barra de bateria. A função o mantém entre 0 e 100. | 76 |
Por exemplo, altere para:
ui_status_panel_set_status("Online", "Wi-Fi Connected", 95);
Em seguida, compile e envie o projeto novamente:
pio run -e reterminal_e1001 --target upload
Alterar o título e os nomes dos cards
Abra src/ui_status_panel.cpp. O título principal é criado em ui_status_panel_create():
lv_label_set_text(title, "Seeed ePaper LVGL Panel");
Você pode alterar o texto do título:
lv_label_set_text(title, "My First LVGL Dashboard");
Cada card é criado com create_card(). Por exemplo:
lv_obj_t *status_card = create_card(screen, "Device", status_x, status_y, status_w, status_h, lv_palette_main(LV_PALETTE_RED));
lv_obj_t *network_card = create_card(screen, "Network", network_x, network_y, network_w, network_h, lv_palette_main(LV_PALETTE_BLUE));
lv_obj_t *battery_card = create_card(screen, "Battery Demo", battery_x, battery_y, battery_w, battery_h, lv_palette_main(LV_PALETTE_GREEN));
O segundo parâmetro é o título do card. Você pode alterar "Device", "Network" e "Battery Demo" para corresponder à sua própria aplicação.
Alterar as cores
A demonstração usa cores da paleta LVGL:
lv_palette_main(LV_PALETTE_RED)
lv_palette_main(LV_PALETTE_BLUE)
lv_palette_main(LV_PALETTE_GREEN)
Para modelos de ePaper coloridos, como reTerminal E1002 e reTerminal E1004, src/main.cpp mapeia as cores LVGL para a paleta de cores do ePaper. A paleta de exemplo inclui branco, preto, vermelho, amarelo, verde e azul.
Para modelos de ePaper monocromáticos, como reTerminal E1001 e reTerminal E1003, a mesma interface é convertida para preto e branco pela luminosidade. Cores mais escuras se tornam pretas e cores mais claras se tornam brancas.
Isso significa que você pode usar o mesmo código de interface LVGL em todos os quatro dispositivos, enquanto o driver de display converte os pixels finais para o hardware selecionado.
Alterar o layout
A demonstração usa EPAPER_LVGL_HOR_RES e EPAPER_LVGL_VER_RES de platformio.ini para decidir o tamanho da tela. Em src/ui_status_panel.cpp, esses valores são usados aqui:
const int32_t screen_width = EPAPER_LVGL_HOR_RES;
const int32_t screen_height = EPAPER_LVGL_VER_RES;
const bool is_landscape = screen_width >= screen_height;
O layout então escolhe um layout horizontal para telas mais largas e um layout vertical para telas mais altas. É por isso que o mesmo exemplo pode ser executado tanto em dispositivos 800 x 480 quanto em painéis de ePaper maiores.
Para uma primeira alteração simples, ajuste os valores de espaçamento:
const int32_t margin = max_i32(32, screen_width / 20);
const int32_t gap = max_i32(20, screen_width / 40);
Aumentar margin deixa mais espaço vazio ao redor das bordas da tela. Aumentar gap deixa mais espaço entre os cards.
Adicione seus próprios dados
O valor da bateria nesta demonstração é um dado de interface de exemplo, então a tela o mostra como um valor de demonstração. Para conectar dados reais da aplicação, mantenha a função de interface e passe seus próprios valores para ela:
int battery_percent = 88;
ui_status_panel_set_status("Running", "Wi-Fi Connected", battery_percent);
Para projetos com ePaper, um fluxo de trabalho prático é:
Etapa 1. Ler ou calcular os dados mais recentes na sua aplicação.
Etapa 2. Passar os novos valores para ui_status_panel_set_status().
Etapa 3. Atualizar o display de ePaper quando o conteúdo precisar mudar.
A demonstração renderiza uma vez em setup() porque o conteúdo da tela é estático. Para aplicações como um painel de sensores, calendário ou monitor de status, você pode atualizar os valores e atualizar o painel quando os dados exibidos mudarem.
Recursos
- [Docs] Documentação LVGL
- [GitHub] LVGL
- [GitHub] Biblioteca Seeed_GFX
- [GitHub] Exemplo de painel de status LVGL ePaper
- [Tool] Hub de firmware reTerminal E-Series
- [Wiki] Trabalhar com PlatformIO
Suporte técnico e discussão sobre o produto
Obrigado por escolher nossos produtos! Estamos aqui para oferecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.



