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

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

Argonalyst

Rio 3.5 e Fable 5: as duas polêmicas que expõem o futuro da IA

Argonalyst

Fim dos PCs como conhecemos: Nvidia, Microsoft e IA local vão mudar tudo

Argonalyst

O plano SECRETO das Big Techs para cobrar MUITO mais pela IA

Argonalyst

BOLHA da IA ou NOVA era de crescimento EXPONENCIAL? O mercado está dividido

Argonalyst

Nova IA da OpenAI traduz em TEMPO REAL e pode mudar o mundo dos negócios

Argonalyst

Spec Driven Development (SDD): a habilidade que vai separar quem SOBREVIVE à IA

Argonalyst

DeepSeek V4: o Open Source que está AMEAÇANDO GPT 5.5 e Opus 4.7

Argonalyst

Prometeram Renda Universal… mas só veio desemprego?

Argonalyst

Mythos Preview: o começo da AGI ou só mais hype?

Argonalyst

Ele automatizou TUDO com IA… e pode virar bilionário sozinho