O display funcionando. A câmera do celular produziu alguns artefatos. |
Este display é para ser espetado diretamente em cima do Raspberry. Ao invés da porta HDMI, a conexão utiliza os pinos SPI (e mais alguns GPIOs) do conector de expansão. A resolução é de 320x480 e o sensor touch é do tipo resistivo. Junto com o display vem uma canetinha plástica. Claramente é voltado para uso com aplicações específicas; o desktop do Raspbian fica bem apertado nele. O meu sonho é construir um despertador inteligente para substituir o meu velho rádio relógio.
Eu comprei aqui no Brasil, mas você acha também no Mercado Livre e nos sites chineses. Vários fabricantes oferecem modelos semelhantes.
A configuração de software para o Raspbian usar o display dá trabalho, principalmente porque:
- Algumas instruções são confusas.
- Existem muitas instruções diferentes
- O Raspbian é bastante dinâmico
As minhas fontes principais foram:
Nos comentários do post da FilipeFlop é mencionado um driver da KeDei. Ele pode ser baixado daqui, mas fiquei assustado com o tamanho do arquivo compactado: quase 90M. Examinando o conteúdo, ele tem duas cópias do kernel (e mais um monte de outros arquivos) uma para uso com o LCD e outra para uso com o HDMI. Considerando que o kernel do Raspbian é atualizado frequentemente, não me parece uma boa ideia ficar amarrado a uma versão gerada por um fabricante chinês.
Estas três fontes usam basicamente os mesmos passos para ativação do display. A Waveshare possui scripts para efetuar as mudanças de configuração entre HDMI e LCD. Isto é prático, mas as mudanças de configuração são feitas substituindo os arquivos por outros fornecidos pela Waveshare, portanto customizações que você tenha feito neste arquivos serão perdidas.
O que descrevo abaixo é o processo básico. Mais detalhes quando tudo estiver funcionando.
O primeiro passo é informar ao Linux a presença do novo dispositivo. Isto é feito acrescentando a linha abaixo ao /boot/config.txt (sem espaços entre os caracteres):
dtoverlay=piscreen,speed=16000000,rotate=90
Se você rebootar o Raspberry após isto, vai ver que o display é inicializado mas nada é apresentado nele. Para que o desktop use o display é preciso editar o arquivo /usr/share/X11/xorg.conf.d/99-fbturbo.conf. Ache a linha
Option "fbdev" "/dev/fb0"
e troque fb0 por fb1.
Se você rebootar o Raspberry, o desktop vai aparecer no LCD e você deve conseguir mover o cursor tocando na tela (no meu caso isto não está acontecendo sempre). Porém o sensor de toque provavelmente estará descalibrado.
Para usar o LCD no modo console é preciso acrescentar no final da primeira linha de /boot/cmdline.txt (não pode ser em outra linha):
fbcon=map:10 fbcon=rotate:2 fbcon=font:ProFont6x11
Falta a calibração do sensor de toque. O processo abaixo, além de não ter funcionado direito comigo, é inadequado para as versões mais recente do Raspbian (como indicado aqui e aqui).
Para os Rasbians antigos, seriam quatro passos:
1) Carregar os pré-requisitos para o programa de calibração (requer conexão à internet):
sudo apt-get update
sudo apt-get install libtool libx11-dev xinput autoconf libx11-dev libxi-dev x11proto-input-dev -y
2) Baixar (requer conexão à internet), compilar e instalar o programa de calibração:
git clone https://github.com/tias/xinput_calibrator
cd xinput_calibrator/
./autogen.sh
make
sudo make install
3) Baixar e instalar o script que chama o programa de calibração
cd ~
wget http://ozzmaker.com/piscreen/xinput_calibrator_pointercal.sh
sudo cp ~/xinput_calibrator_pointercal.sh /etc/X11/Xsession.d/xinput_calibrator_pointercal.sh
sudo chmod +x /etc/X11/Xsession.d/xinput_calibrator_pointercal.sh
4) Alterar /home/pi/.config/lxsession/LXDE-pi/autostart para o programa de calibração ser executado sempre que a interface gráfica é iniciada. Acrescente ao final de autostart
sudo /bin/sh /etc/X11/Xsession.d/xinput_calibrator_pointercal.sh
Aguardem para breve novas notícias...
Um comentário:
Olá, no meu raspberry o eixo X do touch fica invertido, já tentei rotacionar a tela e não resolveu.
Postar um comentário