3.1 KiB
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)