Trackpad USB DIY com Arduino: Transforme um Touchpad de Portátil Antigo num Dispositivo de Entrada Moderno
Componentes e Materiais
- Arduino Micro (ou Pro Micro / Leonardo) – 1 unidade
- Touchpad recuperado de um portátil antigo
- Fios para soldadura
- Cola quente (para fixar as ligações)
Software Necessário
- Arduino IDE
- Biblioteca
Mouse(incluída na IDE) - Biblioteca
PS2(disponível no GitHub/Arduino Library Manager)
Sobre o Projeto
Sempre que sai um novo Raspberry Pi, penso em construir um portátil com ele, mas esbarro sempre no mesmo problema: não existe um touchpad USB autónomo à venda. A solução? Recuperar o touchpad de um portátil avariado e convertê-lo em dispositivo USB usando um Arduino Pro Micro (ou Micro/Leonardo).
Passo 1: Peças Necessárias
O hardware é minimalista: touchpad de portátil antigo, Arduino Micro/Pro Micro/Leonardo (apenas estas placas têm USB nativo e podem emular HID – Human Interface Device) e fios. O Arduino Uno não funciona para este fim pois não suporta HID nativo.
Passo 2: Por Que Funciona
A maioria dos touchpads de portáteis antigos comunica via interface PS/2 (pinos de dados e clock). O Arduino lê esse protocolo e converte-o em comandos USB HID de rato. Atenção: touchpads mais recentes podem usar USB nativo – nesses casos, basta ligar diretamente ao PC. Este projeto foca nos touchpads PS/2 mais comuns.
Passo 3: Ligações (Wiring)
No touchpad, identifique 4 pads de soldadura (geralmente rotulados):
- T10 (Dados) → Pino 10 do Arduino Micro
- T11 (Clock) → Pino 9 do Arduino Micro
- T20 (Alimentação) → 5V do Arduino
- Plano de massa (GND) → GND do Arduino
Importante: Após soldar, proteja as ligações com cola quente. Os pads são frágeis e qualquer tensão mecânica pode arrancá-los, inutilizando o touchpad.
Passo 4: Instalar Bibliotecas
Na Arduino IDE, instale via Sketch → Incluir Biblioteca → Gerenciar Bibliotecas:
- PS2 Library (para ler o touchpad)
- Mouse Library (já incluída, para emular rato USB)
Passo 5: O Código
Selecione Arduino Micro ou Leonardo em Ferramentas → Placa. Carregue o código abaixo. O Arduino reiniciará e aparecerá no PC como um rato USB.
#include <Mouse.h>
#include <ps2.h>
#define PS2_DATA 10
#define PS2_CLK 9
byte mstat1, mstat2, mxy, mx, my, mz;
int msval[3];
int repeatCnt = 0;
PS2 moose(PS2_CLK, PS2_DATA);
void setup() {
Mouse.begin();
// Inicialização do touchpad PS/2 (sequência padrão)
moose.write(0xff); moose.read(); moose.read(); moose.read();
moose.write(0xf0); moose.read(); delayMicroseconds(100);
moose.write(0xe8); moose.read(); moose.write(0x03); moose.read();
moose.write(0xe8); moose.read(); moose.write(0x00); moose.read();
moose.write(0xe8); moose.read(); moose.write(0x01); moose.read();
moose.write(0xe8); moose.read(); moose.write(0x00); moose.read();
moose.write(0xf3); moose.read(); moose.write(0x14); moose.read();
Serial.begin(9600);
}
void ms_read() {
moose.write(0xeb); moose.read();
mstat1 = moose.read(); mxy = moose.read(); mz = moose.read();
mstat2 = moose.read(); mx = moose.read(); my = moose.read();
msval[0] = (((mstat2 & 0x10) << 8) | ((mxy & 0x0F) << 8) | mx);
msval[1] = (((mstat2 & 0x20) << 7) | ((mxy & 0xF0) << 4) | my);
msval[2] = int(mz);
}
void loop() {
ms_read();
if (msval[0] > 0 && msval[2] > 10) {
repeatCnt++;
} else {
repeatCnt = 0;
}
if (repeatCnt > 2) {
msval[0] = map(msval[0], 580, 5164, -1023, 1023);
msval[1] = map(msval[1], 1120, 5967, 1023, -1023);
Mouse.move(msval[0]/200, msval[1]/200);
}
}
Passo 6: Finalização e Resolução de Problemas
Ao tocar no touchpad, o cursor deve mover-se. Como é um dispositivo HID padrão, funciona em qualquer SO (Windows, Linux, macOS) sem drivers.
Dicas:
- Se não funcionar, procure o número de peça no verso do touchpad e pesquise "pinout" para confirmar pinos.
- Evite conversores PS/2-USB baratos: costumam corromper dados do touchpad. Com Arduino, pode personalizar sensibilidade, scroll, duplo-toque, etc. (veja documentação da biblioteca
Mouse).
Processo de manufatura
- Construa um Robô Raspberry Pi Controlado por Bluetooth com Feedback de Áudio
- Lâmpada de Mesa RGB Controlada por Gestos – Iluminação Interativa e Sem Toque
- Veículo Remoto Controlado por Android com Raspberry Pi e Motor Shield
- Controlar LEDs com Alexa via Raspberry Pi – Guia Passo a Passo Fácil
- Transforme um Carro RC Antigo em Veículo Controlado por Joystick com Arduino
- Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega
- Construa um Robô Controlado por Voz com Arduino Nano
- MobBob: Construa Seu Próprio Robô Arduino, Controlado via Smartphone Android
- Eletrodomésticos Ativados por Voz: Controle Bluetooth com Google Assistant
- PiBot: Robô Pianista Arduino para Performance Musical de Precisão