Argonalyst

Desenvolvendo Aplicação Leve para TFT LCD no Raspberry Pi

Argonalyst
6 July 2024

Em um recente artigo, expliquei como configurei uma tela TFT LCD no meu Raspberry Pi, que anteriormente servia como um servidor sem interface gráfica. Sem instalar um ambiente de desktop, meu objetivo era adicionar uma interface leve para mostrar informações úteis diretamente na tela. Para isso, desenvolvi uma aplicação simples que exibe as horas e o clima, e que funciona sem o sistema gráfico X, comum em Linux.

Para criar essa aplicação leve, foi necessário compreender como interagir diretamente com a nova tela, e os aprendizados foram baseados em diversas fontes que compilei e vou compartilhar aqui. No Linux, existe o conceito de framebuffer, um dispositivo virtual que pode ser usado para exibir gráficos. No Raspberry Pi, a saída HDMI corresponde ao Framebuffer 0, e se você conectou seu Pi a um monitor convencional ou uma TV via HDMI, pode exibir gráficos escrevendo neste dispositivo.

Caso esteja utilizando uma tela baseada em SPI, como foi o meu caso após seguir meu tutorial anterior, você terá um segundo framebuffer, o /dev/fb1. Com a configuração fbcon=map:10, o console é exibido neste framebuffer, que mostra o console na tela LCD.

Na minha configuração, assegurei que a saída HDMI tivesse a mesma resolução da tela LCD para que a aplicação pudesse mirar na saída acelerada por hardware, e então copiar a saída para o Framebuffer 1. Esse processo envolve criar um modo HDMI personalizado e configurar a resolução apropriada no arquivo /boot/config.txt.

Além disso, desenvolvi uma aplicação em C que escreve diretamente no framebuffer do Linux. Se você não está confortável com programação em C ou em nível de sistema, pode pular essa parte, já que existem bibliotecas que abstraem essas interfaces de baixo nível. Porém, para quem tem afinidade com esses tópicos, entender essa seção pode esclarecer o funcionamento dessas bibliotecas.

Para exibir gráficos através do framebuffer, independentemente da configuração, o processo envolve abrir o arquivo /dev/fbX correspondente ao display que deseja usar, usar ioctl para obter informações sobre o framebuffer, e escrever bytes no arquivo, dependendo da profundidade de cor do framebuffer.

Além disso, mencionei o uso de Raylib, uma biblioteca de alto nível que facilita o desenvolvimento de aplicações gráficas e é acelerada por hardware, proporcionando excelente desempenho. Raylib é compatível com múltiplas plataformas, o que permite desenvolver uma aplicação no laptop e implantá-la no Raspberry Pi sem modificações.

Este projeto não apenas me ajudou a adicionar funcionalidades úteis ao meu servidor Raspberry Pi, mas também expandiu meu conhecimento sobre o sistema Linux e programação de hardware. Compartilharei o código da minha aplicação no GitHub e continuarei explorando opções para melhorar e expandir suas capacidades.

Últimos vídeos

Confira os últimos vídeos publicados no canal

Argonalyst

Opus 5.5 vs GPT-6: Nenhuma IA estava preparada para esse teste

Argonalyst

O Google mapeou o CÉREBRO de uma mosca… e a internet colocou DOOM nele

Argonalyst

De imagens perfeitas a descobertas científicas: IA está mudando de nível

Argonalyst

GPT-6 fez 99,9% neste Teste… Chegamos à AGI?

Argonalyst

O "Algoritmo Mortal" está chegando? IA já pode criar vídeos infinitos

Argonalyst

Anthropic pode se tornar a ÚNICA empresa do mundo, mas a AGI pode impedir isso

Argonalyst

Como Hackers roubaram MILHÕES em Bitcoin explorando um BUG quase invisível

Argonalyst

Os EUA proibiram esses Robôs por medo de espionagem

Argonalyst

O verdadeiro motivo pelo qual querem controlar a IA

Argonalyst

IA da OpenAI escapou do Sandbox? O que REALMENTE aconteceu

Argonalyst

A maior virada da Inteligência Artificial começou... e vem da China

Argonalyst

o ALERTA de Satya Nadella que ASSUSTOU o mercado de IA

Argonalyst

GPT 5.6 SURPREENDE: OpenAI finalmente alcançou a Anthropic?

Argonalyst

Os novos modelos de IA estão decepcionando... e ninguém quer admitir isso

Argonalyst

Midjourney quer ESCANEAR humanos e o Open Source já rivaliza com Claude Opus