75 lines
3.1 KiB
Markdown
75 lines
3.1 KiB
Markdown
|
|
# 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)
|