DIY Arduino Lenkrad / Joystick für Rennspiele – USB-HID-Umbau
Komponenten & Zubehör
| Bauteil | Menge |
|---|---|
| Arduino UNO (R3, ATmega16U2) | 1 |
| Drehpotentiometer 10 kΩ (Lenkwinkel) | 1 |
| Steckbrett & Kabel | 1 Satz |
Benötigte Werkzeuge
- Lasercutter (für Gehäuse aus Holz/Acryl)
- 3D-Drucker (optional, für Lenkrad-Kranz)
- Arduino Materia 101 (alternativ UNO)
Software
- Arduino IDE
- UnoJoy Bibliothek + Firmware (wandelt ATmega16U2 in USB-Joystick)
- ATmel FLIP Tool (zum Flashen der Firmware)
- x360ce (Xbox-360-Controller-Emulator für Steam)
Projektidee
Ein selbstgebautes Lenkrad, das vom PC als USB-Gamepad (Joystick) erkannt wird – kompatibel mit Steam, Assetto Corsa, Euro Truck Simulator etc. Der Arduino UNO wird dazu in den DFU-Modus versetzt und mit der UnoJoy-Firmware geflasht. Danach meldet er sich als HID-Joystick mit 6 Achsen und 13 Buttons.
Schritte zum USB-HID-Umbau
- UnoJoy herunterladen, Treiber installieren (
InstallUnoJoyDrivers.bat). - ATmel FLIP installieren.
- Arduino in DFU-Modus versetzen: Kurzschluss der beiden Pins neben dem USB-Port (ICSP-Header, Reset & GND).
TurnIntoAJoystick.batausführen → Arduino wird als Joystick erkannt.- Zum Rückflashen: Gleicher Vorgang mit
TurnIntoAnArduino.bat.
Hardware-Aufbau (Lenkrad)
Ein 10-kΩ-Poti an A0 (Mitte an A0, Außen an 5 V & GND) dient als Lenkwinkelsensor. Der mechanische Aufbau erfolgt per Lasercut (DXF/DWG-Dateien im Projekt) oder 3D-Druck. Das Poti wird mit der Lenkwelle verbunden (z. B. über Zahnstange oder direkten Wellenanschluss).
Arduino-Sketch (UnoJoy-Beispiel)
/* Arduino USB Joystick HID demo - angepasst für Lenkrad */
#undef DEBUG
#define NUM_BUTTONS 40
#define NUM_AXES 8
typedef struct joyReport_t {
int16_t axis[NUM_AXES];
uint8_t button[(NUM_BUTTONS + 7) / 8];
} joyReport_t;
joyReport_t joyReport;
uint8_t btn[12];
int fulloff = 0;
void setup() {
for (int portId = 2; portId < 13; portId++) pinMode(portId, INPUT_PULLUP);
Serial.begin(115200);
delay(200);
for (uint8_t i = 0; i < 8; i++) joyReport.axis[i] = i * 1000;
for (uint8_t i = 0; i < sizeof(joyReport.button); i++) joyReport.button[i] = 0;
}
void sendJoyReport(joyReport_t *report) {
#ifndef DEBUG
Serial.write((uint8_t *)report, sizeof(joyReport_t));
#else
// Debug-Ausgabe
#endif
}
void setButton(joyReport_t *joy, uint8_t button) {
joy->button[button / 8] |= 1 << (button % 8);
}
void clearButton(joyReport_t *joy, uint8_t button) {
joy->button[button / 8] &= ~(1 << (button % 8));
}
void loop() {
// Buttons D2-D13 einlesen
for (int bt = 1; bt < 13; bt++) btn[bt] = digitalRead(bt + 1);
for (int on = 1; on < 13; on++) {
if (btn[on] == LOW) setButton(&joyReport, on + 16);
else clearButton(&joyReport, on + 16);
}
// Achse 0 (X) = Lenkrad an A0
joyReport.axis[0] = map(analogRead(0), 350, 700, -32768, 32767);
// Nicht genutzte Achsen auf 0
for (uint8_t a = 1; a < 8; a++) joyReport.axis[a] = 0;
sendJoyReport(&joyReport);
delay(35);
}
Einbindung in Steam / Spiele
- x360ce (32/64 Bit passend zum Spiel) in den Spielordner kopieren.
- x360ce.exe starten – erkennt den UnoJoy-Joystick.
- Achsen & Buttons mappen (X-Achse = Lenken, Buttons = Gas/Bremse/Handbremse etc.).
- Spiel starten – Lenkrad wird als Xbox-360-Controller erkannt.
Fazit
Mit minimaler Hardware (Arduino UNO + 1 Potentiometer) entsteht ein vollwertiges USB-Lenkrad. Der UnoJoy-Umbau ist reversibel und sicher. Für Pedale können weitere Potis an A1, A2 angebunden werden. Die DXF/DWG-Dateien für das Gehäuse liegen bei.
Herstellungsprozess
- Arduino Digitaler Würfel: LCD-Würfel mit Zufallszahlen (1–6)
- Altes RC-Auto per Xbox-Controller & Arduino zum Joystick-Fahrzeug umbauen
- Arduino Iron Man bauen: Komponenten, Sensoren & Schritt-für-Schritt-Anleitung
- Interaktives Joystick-Spiel mit Arduino & LED-Feedback
- Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth
- Funktionaler 3D-gedruckter Roboterarm mit Arduino – Schritt-für-Schritt-Anleitung
- DIY Arduino Luftbefeuchter-Steuerung mit Relais – Sichere Hochspannungs-Installation
- Berührungsloses Temperatur-Überwachungstor für schnelles Screening
- NeoPixel-Matrix Pong auf Arduino Nano: Neon-Pong selbst bauen
- Leistungsstarker FM-Radio-Empfänger mit Arduino & TEA5767