Db9_zu_USB/README.md

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

  1. Firmware auf den Raspberry Pi Pico hochladen über die Arduino IDE.
  2. DB9-Joystick an den Pico anschließen über die Buchse.
  3. Pico mit dem PC verbinden. Der Adapter wird als USB-Gamepad erkannt.
  4. 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)