DB9 zu USB Adapter
Dieses Projekt ermöglicht es, alte DB9-Joysticks (wie den Amiga-Joystick oder andere Retro-Joysticks) mit modernen Computern über USB zu verbinden. Mithilfe eines Raspberry Pi Pico und eines DB9-Anschlusses werden die Joystick-Eingaben ausgelesen und als USB-Gamepad-Signale ausgegeben, sodass der Joystick mit modernen Systemen und Emulatoren verwendet werden kann.
Funktionen
- Unterstützt DB9-Joysticks (z. B. Amiga, C64, Atari)
 - Erfasst 2 Achsen (X und Y) und 1 Feuertaste
 - Wandelt Joystick-Eingaben in USB HID-Gamepad-Signale um
 - Plug-and-Play auf modernen Betriebssystemen (Windows, Linux, macOS)
 - Geschrieben in C++ mit der TinyUSB-Bibliothek zur USB-HID-Unterstützung
 
Hardwareanforderungen
- Raspberry Pi Pico (empfohlen wegen der einfachen USB-HID-Unterstützung)
 - DB9-Buchse für den Joystick-Eingang
 - Kabel für die Verbindungen
 
Softwareanforderungen
- Arduino IDE mit Unterstützung für den Raspberry Pi Pico (RP2040 Boards)
 - Adafruit TinyUSB Library
 - TinyUSB Library (in der Adafruit-Bibliothek enthalten)
 
Stelle sicher, dass du diese Bibliotheken über den Bibliotheksmanager der Arduino IDE installierst.
Schaltplan
Die Pins des DB9-Anschlusses müssen mit den entsprechenden GPIO-Pins des Raspberry Pi Pico verbunden werden:
| DB9-Pin | Signal | Pico-Pin | 
|---|---|---|
| 1 | Hoch | GPIO 10 | 
| 2 | Runter | GPIO 11 | 
| 3 | Links | GPIO 12 | 
| 4 | Rechts | GPIO 13 | 
| 6 | Feuer | GPIO 14 | 
| 8 | Masse | GND | 
Code-Erklärung
Die Firmware liest die Joystick-Eingaben aus und sendet die Daten als USB-Gamepad-Bericht. Die TinyUSB-Bibliothek übernimmt die USB-Kommunikation. Der Joystick hat zwei Achsen (X und Y) und eine Taste für den Feuerknopf.
Hier eine Zusammenfassung des verwendeten HID-Berichtsdeskriptors:
- X- und Y-Achsen: 8-Bit-Werte, Bereich von -127 bis +127
 - 1 Taste: 1-Bit-Wert (an/aus)
 - USB HID-Deskriptor-Format: Benutzerdefinierter Berichtsdeskriptor für minimale Joystick-Eingaben
 
Wichtige Funktionen
setup(): Initialisiert das USB-Gerät und konfiguriert die GPIO-Pins als Eingänge.loop(): Liest den Status des Joysticks und sendet einen USB-Gamepad-Bericht an den Host.usb_hid.sendReport(): Sendet den HID-Bericht mit dem aktuellen Joystick-Zustand.
Verwendung
- Firmware auf den Raspberry Pi Pico hochladen über die Arduino IDE.
 - DB9-Joystick an den Pico anschließen über die Buchse.
 - Pico mit dem PC verbinden. Der Adapter wird als USB-Gamepad erkannt.
 - Funktionalität des Joysticks mit Tools wie 
jstest(Linux) oder den Gamepad-Einstellungen unter Windows testen. 
Testen
Linux (jstest)
Um sicherzustellen, dass der Joystick korrekt funktioniert, kannst du das Tool jstest unter Linux verwenden:
Windows
Öffne die Systemsteuerung > Geräte und Drucker und prüfe die Gamecontroller-Einstellungen, um die Joystick-Eingaben zu testen.
Zukünftige Erweiterungen
- Gehäuse (z. B. 3D-gedrucktes Gehäuse)