Manual
do
Maker
.
com
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 800x480, 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.
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.
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.
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
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.
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.
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.
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!
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.