HomeRaspberryDisplay LCD TFT 5 polegadas para Raspberry

Display LCD TFT 5 polegadas para Raspberry

display lcd tft

A razão pela qual escrevi os dois artigos anteriores (Cross Compile Raspberry e Aplicações gráficas no framebuffer) foi justamente colocar esse display LCD TFT para funcionar. E se você estiver planejando uma aplicação especialista baseada em Qt, tenho ótimas notícias; não será necessário instalar driver do touch screen, nem compilar mais nada. Nem o Qt, se preferir instalar pelo apt no Raspbian.

Como pode-se notar, o display é incrível. Grande e ótimo para aplicações embarcadas. Sua resolução é de 800×480, touch capacitivo, possui um botão para desligar o backlight, tem uma entrada micro USB que pode ser utilizada para alimentar o display e o Raspberry.

Alimentando-o pelo display, tive algumas mensagens de subtensão, então passei a alimentar pelo Raspberry, uma vez que tenho absoluta certeza de que a fonte que estou usando suporta tranquilamente ambos.

Configuração do display LCD TFT

Por ser HDMI, a imagem aparecerá imediatamente ao energizar o Raspberry. Se for usar teclado e mouse, nem precisa configurar o TFT. Mas ade qualquer modo, a resolução estará abaixo do que deveria, então, o primeiro passo é configurar a resolução.

/boot/config.txt

Edite o arquivo /boot/config.txt e adicione essas linhas ao final. Comente a linha em que o SPI está desabilitado, lá pro meio do arquivo.

framebuffer_width=800
framebuffer_height=480
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=87
hdmi_edid_file=1
hdmi_cvt  800  480  60  6  0  0  0 
device_tree=bcm2710-rpi-3-b.dtb
dtoverlay=ads7846,penirq=22,speed=100000,xohms=150
dtparam=i2c_arm=on
dtparam=spi=on
dtoverlay=ads7846,penirq=25,speed=10000,penirq_pull=2,xohms=150

Faça o primeiro reboot.

Configuração para desktop

O driver desse display é o XPT2046, não é necessário programa adicional a partir do Raspbian baseado no Debian Jessie. Se desejar usar esse display com o desktop tradicional, siga os passos descritos adiante.

Se estiver usando um servidor gráfico, adicione a configuração de calibração, criando um arquivo em /etc/X11/xorg.conf.d/99-calibration.conf:

/etc/X11/xorg.conf.d/99-calibration.conf
Section "InputClass"
        Identifier "calibration"
        MatchProduct "ADS7846 Touchscreen"
        Option "Calibration" "3853 170 288 3796"
        Option "SwapAxes" "1"
EndSection

Reinicie o sistema.

Para usar um keyboard virtual no desktop, instale:

sudo apt-get install -y xvkbd

Qt5 para Embedded

Agora, se não quiser seguir os tutoriais anteriores de cross compilação, pode pegar um “atalho”, mas desse modo não terá a opção de acesso por VNC. Mas tenho a impressão que usar EGL é a melhor opção.

sudo apt-get install qtcreator libqt5* qt5-default

Para usar o EGL, será necessário habilitar o DRM. Para isso, execute o comando raspi-config e acesse Advanced Options > GL Driver > G2.

Dependências no qml e quick começam com qml. Se desejar utilizá-los para fazer interfaces fluidas, ao executar o programa as dependências serão informadas. Daí é só procurar pelos respectivos pacotes com:

apt-cache search nome_parcial_da_dependencia

E depois instalá-la com o apt:

apt-get install nome_do_pacote_desejado

Não dando core dumped sem informação nenhuma, está tudo sob controle.

Variáveis de ambiente

E para finalizar, coloque as variáveis de ambiente no arquivo oculto .bashrc. (tem um ponto antes de bashrc mesmo, senão não seria arquivo oculto).

Vá até o final do arquivo e adicione:

export QT_LOGGING_RULE=Sqt.qpa.*=true
export QT_QPA_FB_DRM=0 #1 para DRM
export QT_QPA_FB_HIDECURSOR=1
#export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=800X480
export QT_QPA_PLATFORM=eglfs
#offset=<widht>X<height>

Reinicie o sistema.

Agora você tem duas opções; programar diretamente no Raspberry ou, mesmo sem ambiente de cross compilação, criar seu projeto no computador x86 e transferi-lo posteriormente para o Raspberry. Quando estiver lá, entre no diretório do projeto e digite:

qmake
make

O binário será criado no mesmo diretório. Para executá-lo:

./nome_do_programa

Para iniciá-lo automaticamente no boot, edite o arquivo /etc/rc.local e antes de exit 0, coloque a chamada para seu programa seguido da plataforma e um &. No meu caso, chamei o programa de qteste e está no home do usuário pi. A chamada dentro do arquivo fica assim:

/home/pi/qteste/qteste -platform eglfs &

O que é mais incrível nisso? O programa está sendo executado sem haver nenhum login no sistema! Se por alguma razão o programa for interrompido, o sistema continuará seguro!

Se desejar, pode montar o sistema de arquivos remoto e salvar o projeto diretamente no Raspberry. Seria algo como:

sudo apt-get install sshfs
sshfs -o allow_other,default_permissions pi@devel1:/home/pi development_dir

Depois é só criar o projeto dentro do diretório development_dir e compilar no Raspberry.

A aplicação que estarei mostrando no vídeo foi feita em meu notebook, depois de testado, compilei no Raspberry.

O ritual é sempre o mesmo; entre no diretório do projeto e execute esses dois comandos:

qmake
make

Para limpar a compilação:

make clean

E compilações posteriores não necessitarão da execução do qmake, exceto haja alteração de versão.

Onde comprar?

Esse display está disponível em nosso parceiro Baú da Eletrônica, confira no site. Sem dúvidas é uma excelente opção para quem procura um display grande para Raspberry.

Vídeo

Vou produzir um vídeo mostrando o ambiente e o programa sendo executado. Leva diversas horas para produzir o vídeo, então sugiro que se inscreva no canal Dobitaobytebrasil no Youtube e clique no sininho para receber notificações.

Não deixe de assistir, essa imagem de destaque está simples mas estou fazendo animação com o logo do blog, valerá a pena!

Aproveito para pedir que, se gostar do vídeo, deixe seu like!

Até a próxima!

1 thought on “Display LCD TFT 5 polegadas para Raspberry

  1. […] Ou, ESP32 Paxcounter Display OLED RGB 240×240 ST7789 Arduino Esplora – Uma mão na roda! Display LCD TFT 5 polegadas para Raspberry Cross compile Raspberry Pi – Gere binários em qualquer lugar! Rodar aplicações gráficas […]

Comments are closed.