Touchpad e Raspberry Pi 4
1-Introdução
Mesmo com a massiva popularização das telas touchscreen, o touchpad ainda é a forma padrão como muitas pessoas, nas quais eu me incluo, interagem com computadores portáteis. Quando decidi montar um laptop usando o Raspberry Pi, demorei a decidir qual caminho tomar.
Uma tela sensível a toque é um periférico caro, e todo o propósito de se construir do zero um laptop usando um Raspberry Pi é manter o custo baixo. Um touchpad novo também não é algo barato, já que são construídos para servir especificamente para um determinado modelo de computador de um único fabricante. Essa espécie de reserva de mercado encarece o dispositivo.
Foi quando tive a brilhante, e óbvia, ideia de procurar por um touchpad usado. Como estou fazendo tudo do zero, pouco importa qual o modelo. Posso encaixar qualquer coisa no meu desenho.
Tive uma certa dificuldade em fazer o sujeito da loja de manutenção entender que eu queria um touchpad qualquer. Ele não entendeu bem o que eu queria. Ficava perguntando o modelo e a marca do meu laptop enquanto eu insistia que era irrelevante. Apenas precisava de algo barato. Saí da loja com o painel frontal de um laptop Sony contendo um touchpad e dois alto falantes. Desmontei a coisa toda e comecei a pesquisar a respeito.
O touchpad que eu retirei do painel é um ALPS modelo 56AAA1976A com um controlador 1CA022A. Pesquisei arduamente por este código na esperança de encontrar alguma ficha técnica, mas nada apareceu. Entretanto encontrei bastante coisa sobre touchpads em geral e todos tinham uma coisa em comum. O protocolo PS/2.
2-Protocolo de comunicação PS/2
Imaginei que o touchpad de um laptop moderno, isto é, algo fabricado depois do aparecimento da porta USB, seria um dispositivo USB. Foi quase um choque descobrir que a vasta maioria dos laptops usam o já antiquado protocolo PS/2, o que significa que não poderei conectar o touchpad diretamente em uma das portas USB do Raspberry Pi. Encontrei muita informação sobre o protocolo PS/2 neste site e em nada se parece com o protocolo USB. Por sorte há várias formas de se contornar este problema. A mais óbvia é usar um conversor PS/2 para USB, que ainda se pode encontrar a venda. Outra é usar uma interface PS/2 com Arduino Leonardo ou Arduino Pro Micro.
Mas não importa qual a forma que será usada para conectar o touchpad, primeiro é preciso identificar o que liga onde na pequena placa de circuito. Não encontrei dados sobre o meu modelo específico de touchpad, mas neste site russo achei um modelo parecido que foi meu ponto de partida.
Há doze pontos de contato para conectar a placa touchpad ao resto do sistema. O que eu consegui levantar por testes de tentativa e erro foi a seguinte tabela:
Pino
|
Função
|
1
|
VCC +5V - Alimentação
|
2
|
VCC +5V - Alimentação
|
3
|
DATA - Via de comunicação serial
|
4
|
CLOCK
|
5
|
GND - Terra e referência de zero volt
|
6
|
GND - Terra e referência de zero volt
|
7
|
?
|
8
|
?
|
9
|
Middle Button - Botão do meio. Ativado quando aterrado.
|
10
|
Left Button - Botão esquerdo. Ativado quando aterrado.
|
11
|
Right Button - Botão direito. Ativado quando aterrado.
|
12
|
?
|
Apesar de não haver um botão do meio no painel de onde tirei a peça, a função está implementada no chip controlador e pode ser usada. Os terminais de 7 a 12, quando abertos apresentam uma tensão de 5V. A ativação da função é feita aterrando-se o terminal. No circuito original do laptop, o terminal 12 é permanentemente aterrado, entretanto parece não fazer diferença se deixado aberto. Os terminais 7 e 8 ficam abertos no circuito original.