Raspberry PI com monitor TFT de 3.2 polegadas

 

IMG_20150924_162940

Monitor TFT

Recentemente foi lançado um tal de monitor oficial para RPI. Eu particularmente prefiro qualquer coisa não oficial que funcione e custe menos. É o caso desse monitor TFT de 3.2 polegadas que atua como um shield e possibilita fazer um case legal para o RPI – que aliás, será o computador de um produto Djames Watson – Forensic. Infelizmente sua utilização não é transparente e uma pequena interação será necessária para habilitá-lo no RPI2 com Raspbian (utilizado no video deste tutorial).

O passo 0 foi a instalação limpa do Raspbian, que deve ser um processo conhecido por todos que usam Raspberry, mas para fim de informação vou descrever o processo de transferência da imagem para o cartão micro SD, caso você esteja pretendendo iniciar com embedded.

Passo 0 – Instalação limpa do Raspbian
O processo de instalação se dá por meio do comando dd – se é que podemos chamar de instalação. Baixe o sistema através do site do Raspberry e proceda com o comando:




 

Onde “X” se refere ao dispositivo do cartão de memória micro SD que você utilizará no RPI. Agora coloque-o no Raspberry e inicie o boot. Você será guiado no processo, atente-se apenas para não iniciar no desktop por enquanto, mantenha no modo terminal.




Uma outra informação válida é que o RPI2 exige mais corrente. Eu utilizo o carregador do tablet, que é 5v com 2A, sendo mais que o suficiente para o RPI.

Esse monitor TFT utiliza o driver FBTFT criado por Notro. Atualmente o suporte está incluido nativamente no kernel da Raspberry Pi.

 

Passo 1 – Mudar o dispositivo de video para fb1

Por padrão o HDMI utiliza /dev/fb0 e o SPI utiliza /dev/fb1. Como utilizaremos SPI para exibir video, é necessário apontar o dispositivo no arquivo /usr/share/X11/xorg.conf.d/99-fbturbo.conf. Seu conteúdo está assim:

 

 

Apenas troque /dev/fb0 por /dev/fb1. Todo o processo eu fiz por ssh para poder gravar o desktop, então não sei se algum dos passos pode afetar sua acessibilidade, portanto, sugiro fortemente que preceda com a habilitação do serviço ssh, usando o comando raspi-config no terminal. Se for acessar através do Windows, você pode usar o Putty.

Passo 2 – Habilitar a interface SPI

Fiz esse processo com a versão mais atual no momento em que escrevi esse post, utilizando o RPI2, não sei se funcionará igual para outras versões. Dito isso, vá ao configurador:

 

No menu avançado, habilite a opção SPI, como indica o screenshot que vós exibo:

raspi-config1

raspi-config2

Passo 3 – Instalar e configurar os drivers

Atenção a isso, porque se você estiver utilizando uma imagem mais nova (a partir da Jessie) esse passo deve ser eliminado, pois o suporte já está incluido no novo kernel da RPi:

Não use esse comando abaixo a partir do Jessie
Não use esse comando abaixo a partir do Jessie

Feito isso, você será questionado por rebootar o sistema. Confirme e, no próximo boot, faça a instalação dos drivers:

 

Eu sei que fica parecendo outro sistema que não Linux, mas um novo boot será necessário, então faça-o.

Supondo que seja esta uma instalação nova do Raspbian, seu arquivo /etc/modules deve conter somente isto (copie e cole):

 

No total, são 4 linhas.

Passo 4 – Comandos passados ao kernel no boot

Substitua a linha existente no arquivo /boot/cmdline.txt por essa que segue:

 




Se tiver interesse em detalhes dos comandos fbcon, veja a documentação oficial (em inglês). O último parâmetro dessa linha se refere à orientação do display. Se mexer nisso, terá que ajustar a orientação do touch também (descrito ao final do post).

Passo 5 – ajustes para o touch
Eu tive que definir mais algumas variáveis no arquivo /boot/config.txt Porque meu touch não funcionava. Substitua o conteúdo do seu arquivo por esse:

Adicionalmente, se estiver utilizando o Jessie, deverá baixar esse programa de driver da waveshare e executá-lo:

Automaticamente o sistema será reiniciado após esse processo. A dica que levou à atualização dessa parte do processo veio do membro da comunidade maker (participante dos nossos grupos do rodapé) Artur Gomes.

Passo 6 – Calibração do touch

Primeiramente, logado no terminal diretamente no Raspberry, digite:

 

E instale o libts-bin e exporte as duas variáveis relacionadas ao dispositivo e ao evento correspondente ao touchscreen. No meu caso especificamente, o evento correspondente é o event2. Eu descobri exportando desde o 0 e iniciando o programa ts_calibrate. Se não for o evento correspondente, o programa não iniciará.

 

Concluído, fazemos como citado anteriormente:

 

Você será orientado pelo programa, bastando usar a caneta da tela para calibrar conforme a orientação. Feito isso, você pode usar o programa ts_test para testar a precisão do toque e fazer traços livremente. Você verá que há um ruído violento no traço. Alguns ajustes finos podem ser feitos no arquivo /etc/ts.conf, cujo arquivo não me despertou o menor interesse e não sei se vale a pena mexer, portanto, não tenho recomendações a respeito.

Dicas extras

Eu coloquei IP estático diretamente em /etc/network/interfaces e de imediato ao iniciar o LXDE, a barra de tarefas ficava piscando e não carregava. Depois de muito mexer, descobri que o problema era o applet de rede. Após removê-lo, a barra iniciou um tanto poluída, então deixei-a bem enxuta e sua configuração disponibilizo aqui, caso tenha interesse. Você deverá colocar esse arquivo em /home/pi/.config/lxpanel/LXDE-pi/panels/.

Rotacionamento

A maior questão está relacionada ao rotacionamento do monitor TFT (da tela dele). Em /boot/config.txt você pode mudar o parâmetro swapxy=0 para swapxy=1 e em /boot/cmdline.txt mude fbtft_device.rotate=0 para 1,2,3 ou 90,180,270 respectivamente, porém o eixo X continuará invertido (após o reboot). Para resolver isso será necessário instalar alguns programas:


 


Então em /etc/X11/xinit/xinitrc adicione logo acima da linha do Xsession a seguinte sintaxe:

 


E pra variar, faça um reboot. Se você rodar 270 graus, não se esqueça de mudar também essa linha anterior para 0 1, e assim conforme a necessidade.

Rotacionando o monitor TFT 90 graus

Só para exemplificar:
1 – /boot/cmdline.txt – modifica-se o parâmetro fbtft_device.rotate=0 para fbtft_device.rotate=90
2 – /boot/config.txt – modifica-se o parâmetro swapxy=0 para swapxy=1
3 – /etc/X11/xinit/xinitrc – fica desse jeito:

 

 

Reboot.
IMG_20150924_181059

Outros artigos relacionados a embedded você encontra aqui, outro aqui, também aqui, outro nesse link, mais um pouco por aqui, ou aqui também, etc. Vasculhe no site!

Espero que esse tutorial possa ter lhe sido útil ou ao menos informativo.
Se gostou, acompanhe-nos no Do bit Ao Byte no facebook e até o próximo!

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

Deixe uma resposta