Trackpad USB DIY con Arduino: Convierte un Touchpad de Portátil Viejo en Dispositivo de Entrada Moderno
Componentes y suministros
| Arduino Micro | × | 1 |
Aplicaciones y servicios online
- Arduino IDE
Sobre este proyecto
Cada vez que sale una nueva Raspberry Pi miro las specs y pienso "realmente quiero hacer un portátil con eso", pero siempre surge un problema: nunca encuentro un trackpad USB independiente. En este proyecto, recuperaremos un trackpad de un portátil viejo roto y lo convertiremos en dispositivo USB usando un Arduino Pro Micro.
Paso 1: Componentes
Los componentes son simples: trackpad de portátil viejo, Arduino Micro y cable. Desafortunadamente, solo podemos usar ciertos Arduino: Arduino Micro, Pro Micro y Leonardo, ya que estos pueden programarse para aparecer como HID (Human Interface Devices), es decir, como ratón o teclado. El Arduino Uno no puede hacer esto. Puedes conseguir Arduino Pro Micro aquí. Para el trackpad, si prefieres comprarlo aquí.
Paso 2: ¿Por qué funciona?
La razón por la que podemos conectar un trackpad a Arduino es que la mayoría de trackpads de portátiles antiguos se comunicaban vía interfaz PS/2, es decir, el circuito del trackpad tiene salidas PS/2: datos y reloj. El Arduino lee estos datos y los convierte en datos que puede enviar al PC por USB.
Nota importante: No todos los trackpads son iguales. Casi todos los portátiles antiguos usan PS/2, pero algunos nuevos usan USB directamente. Si encuentras uno USB, solo busca su pinout y conéctalo a USB del PC y funcionará. Para este proyecto usaremos el trackpad PS/2 más común y Arduino para convertirlo a ratón USB.
Paso 3: Cableado
El cableado es fácil: busca 4 pads de soldadura en el trackpad. Están etiquetados T10 (datos), T11 (reloj), T20 y la conexión de tierra es un plano metálico grande expuesto.
Suolda un cable a cada pad con cuidado y conéctalos a pines Arduino correspondientes:
- T10 → pin 10 Arduino Micro
- T11 → pin 9 Arduino Micro
- T20 → 5V Arduino Micro
- Plano tierra → GND Arduino Micro
¡Crucial! Tras soldar, no ejerzas presión sobre los pads, incluso la mínima presión puede arrancarlos e inutilizar el trackpad. Lo mejor es cubrir la conexión con pegamento caliente tras soldar.
Paso 4: Instalando librerías
Necesitas instalar dos librerías en Arduino IDE:
Descárgalas, abre carpeta libraries de Arduino IDE y muévelas allí. La librería PS/2 obtiene datos del trackpad y la librería Mouse convierte esos datos en comandos de ratón que el PC lee por USB.
Paso 5: El código
Con librerías instaladas, sube el código al Arduino. El código está abajo, pero no compilará/subirá a menos que la placa seleccionada en Herramientas sea Arduino Micro o Leonardo. Tenlo en cuenta si da error compilando. Una vez subido, Arduino debe reiniciarse como dispositivo HID y aparecer en PC como ratón.
thistouchpad.ino
Código completo
#include <Mouse.h>
#include <ps2.h>
#define PS2_DATA 10
#define PS2_CLK 9
byte mstat1;
byte mstat2;
byte mxy;
byte mx;
byte my;
byte mz;
int msval[2];
int repeatCnt;
PS2 moose(PS2_CLK, PS2_DATA);
void setup() {
Mouse.begin();
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 and 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);
}
}
Paso 6: Finalización y solución de problemas
Ahora al tocar el touchpad deberías ver movimiento en pantalla. Como Arduino actúa como dispositivo USB, puedes enchufarlo a cualquier PC y arrancará instantáneamente como ratón USB sin importar sistema operativo o tipo de ordenador.
Si no quieres programar y cablear Arduino, podrías comprar un conversor PS/2 a USB, pero no lo recomiendo: he leído que altera los datos del trackpad y puede hacerlo inutilizable. Además, con Arduino podemos personalizar todo: velocidad, acciones de doble toque, scroll, etc. Info para personalizar en página Arduino Mouse.
Si tu trackpad no envía datos, puede ser fácil: mira detrás del trackpad y busca número de pieza. Busca en Google ese número con "pinout" y te mostrará dónde están pines datos, reloj y 5V.
¡Gracias por leer! Si tienes preguntas, déjalas en comentarios e intentaré responder.
Proceso de manufactura
- Construya un robot Raspberry Pi controlado por Bluetooth con retroalimentación de audio
- Lámpara de mesa RGB controlada por gestos – Iluminación interactiva y sin manos
- Vehículo Controlado por Android con Raspberry Pi, Arduino y Motor Shield: Guía Completa
- Controla LEDs con Alexa mediante Raspberry Pi – Guía paso a paso fácil
- Transforma un viejo coche RC en un vehículo controlado por joystick con Arduino
- Brazo Robótico de 6 Grados de Libertad Controlado por Nunchuk con Arduino
- Construye un robot controlado por voz con Arduino Nano
- MobBob: Robot Arduino Impreso en 3D, Controlado por Smartphone Android
- Electrodomésticos activados por voz: Control Bluetooth con Google Assistant
- PiBot: Robot Pianista con Arduino para Interpretación Musical de Precisión
- Wi-Servo: Controla servomotores por Wi‑Fi desde un navegador web