Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

DIY USB-Trackpad aus altem Laptop – Arduino Micro als HID-Schnittstelle

Komponenten & Zubehör

Bauteil Menge
Arduino Micro (oder Pro Micro / Leonardo) 1
Trackpad aus defektem Laptop (PS/2-Schnittstelle) 1
Litze / Klingeldraht (4 Adern) ca. 20 cm
Heißkleber (zur Entlastung der Lötpads) 1

Software & Bibliotheken

Projektidee

Wer einen Raspberry Pi zum Laptop ausbauen will, scheitert oft an einem bezahlbaren, eigenständigen USB-Trackpad. Die Lösung: Ein ausgedientes Laptop-Trackpad (PS/2-Interface) per Arduino Micro (ATmega32u4) in ein USB-HID-Mausgerät verwandeln. Der Micro/Leonardo/Pro Micro können nativ als USB-HID (Maus/Tastatur) auftreten – der Uno kann das nicht.

Warum das funktioniert

Ältere Laptop-Trackpads kommunizieren per PS/2-Protokoll (Clock + Data) mit dem Mainboard. Der Arduino liest diese Signale ein (Pins 9 = Clock, 10 = Data), dekodiert sie per PS2-Bibliothek und sendet die Bewegungsdaten über die Mouse-Bibliothek als USB-HID-Events an den Host-PC. Neuere Trackpads nutzen manchmal direkt USB – diese können ohne Arduino direkt angeschlossen werden (Pinout recherchieren).

Verkabelung

Auf der Trackpad-Platine vier Lötpads identifizieren (meist beschriftet):

Wichtig: Die Pads sind extrem empfindlich. Nach dem Löten keine mechanische Belastung – Verbindungen mit Heißkleber entlasten und fixieren.

Code

#include 
#include 

#define PS2_DATA 10
#define PS2_CLK  9

PS2 moose(PS2_CLK, PS2_DATA);

byte mstat1, mstat2, mxy, mx, my, mz;
int msval[3];
int repeatCnt = 0;

void setup() {
  Mouse.begin();
  // Trackpad initialisieren (Standard PS/2 Maus-Init-Sequenz)
  moose.write(0xff); moose.read(); moose.read(); moose.read(); // Reset
  moose.write(0xf0); moose.read(); delayMicroseconds(100);     // Remote mode
  // Set resolution / scaling / sampling rate (typisch für Synaptics/ALPS)
  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(); // Sample rate 20
  Serial.begin(9600);
}

void ms_read() {
  moose.write(0xeb);          // Read data
  moose.read();               // ACK
  mstat1 = moose.read();      // Status byte 1
  mxy    = moose.read();      // X/Y overflow & sign bits
  mz     = moose.read();      // Z (Scroll)
  mstat2 = moose.read();      // Status byte 2
  mx     = moose.read();      // X movement
  my     = moose.read();      // Y movement

  // 12-bit signed Werte rekonstruieren
  msval[0] = (((mstat2 & 0x10) << 8) | ((mxy & 0x0F) << 8) | mx);
  msval[1] = (((mstat2 & 0x20) << 7) | ((mxy & 0xF0) << 4) | my);
  msval[2] = mz;              // Scroll
}

void loop() {
  ms_read();
  // Einfaches Debouncing: nur bei wiederholter Bewegung Maus bewegen
  if (msval[0] > 0 && msval[2] > 10) repeatCnt++;
  else repeatCnt = 0;

  if (repeatCnt > 2) {
    // Rohwerte auf Maus-Koordinaten mappen (an Trackpad anpassen!)
    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);
  }
}

Hinweis: Board in Arduino IDE auf „Arduino Micro“ (oder „Leonardo“) stellen, sonst Kompilierfehler (kein HID-Support beim Uno).

Fertigstellung & Fehlersuche

Nach dem Hochladen startet der Arduino als USB-Maus – funktioniert auf jedem OS ohne Treiber. Geschwindigkeit & Verhalten (Doppelklick, Scrollen) lassen sich im Code anpassen (Mouse.move()-Parameter, Mapping-Bereiche).

Trackpad sendet keine Daten?

  1. Rückseite Teilenummer notieren, „Partnumber pinout“ googeln.
  2. Prüfen, ob wirklich PS/2 (nicht USB/I²C).
  3. Lötverbindungen & Pin-Belegung (Clock/Data nicht vertauschen) prüfen.

Alternative ohne Programmieren: PS/2-zu-USB-Adapter kaufen – aber oft schlechtere Signalqualität, keine Anpassbarkeit.

Herstellungsprozess

  1. Bluetooth-gesteuerter Raspberry Pi Roboter mit Audio-Feedback bauen
  2. Gesteuerter RGB-Tischlampe – Interaktive, berührungslose Beleuchtung
  3. Android-gesteuertes Roboterfahrzeug mit Raspberry Pi Motor Shield
  4. LEDs mit Alexa über Raspberry Pi steuern – Einfache Schritt-für-Schritt-Anleitung
  5. Altes RC-Auto per Xbox-Controller & Arduino zum Joystick-Fahrzeug umbauen
  6. Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung
  7. Sprachgesteuerter Roboter mit Arduino Nano bauen
  8. MobBob: Eigenen Arduino-Roboter bauen, per Android-Smartphone steuern
  9. Sprachgesteuerte Haushaltsgeräte: Bluetooth-Steuerung mit Google Assistant
  10. PiBot: Arduino-gesteuerter Klavierroboter für präzise Musikwiedergabe