DIY USB Lenkrad 01

Ich will mir schon seit einiger Zeit ein Lenkrad im GT3-style komplett selbst bauen.Beim Spielen von ACC hat meine Buttonplate am Lenkrad bisher gute Dienste geleistet, allerdings bin ich draufgekommen, dass ich ein paar Eingabemöglichkeiten mehr brauchen würde.
Zum Beispiel hab‘ ich keinen 4-Wege-Schalter zum Einstellen der Boxenstrategie, dafür muss ich immer an meine große Buttonbox rübergreifen.
Natürlich hätte ich auch einfach eine neue Buttonplate machen können, aber auch das P104 Limite Lenkrad selbst ist für meine kleinen Hände etwas zu groß und zu rutschig.

Da ich ja doch ein Wenig Erfahrung im Simbau habe, dachte ich mir „Warum baust du dir nicht einfach das Ganze Lenkrad selbst? Es würde sicher Spass machen und am Ende hab ich was in den Händen, das ganz auf meine Bedürfnisse angepasst ist.“ Also hab ich begonnen, ein bisschen Recherche zu betreiben…

Von der Form her hat mir immer schon das Ferrari 488 GT3 Lenkrad am Besten gefallen, also hab ich das auch als Basis für meinen Eigenbau hergenommen.
Nachdem ich einige Zeit im Netz nach Bildern von „GT3 cockpit“ und „GT3 steering wheel“ gesucht habe, war mein fertiges Design halbwegs im Kopf:

  • Durchmesser 320mm
  • Frontplatte aus 4mm Alu
  • Griffe und Rückwand werden 3D-gedruckt
  • 2 7-Weg „Funkyswitches“
  • 4 Drehschalter 1×12, um TC, TC2, ABS und Engine Map einzustellen
  • natürlich auch normale Taster
  • 2 Magnetische Schaltwippen
  • 2 anpassbare Bite-Point Kupplungshebel
  • kleiner OLED Display wie in den Fanatec Formula Wheels
  • alles wird über einen Arduino ProMicro gesteuert

Phase 1 – Design

Hardware

Wie bei allen meinen letzten Projekten, beginne ich damit, das Ganze in FreeCAD zu designen. Das hilft mir schon beim ersten Schritt zu erkennen, wo Dinge eventuell nicht zusammenpassen könnten.
Mit einem Bild des Lenkrades als Hintergrund werden die Umrisse nachkonstruiert und nach und nach die restlichen Dinge der Frontplatte gezeichnet.

Nach dem ersten Entwurf importiere ich mir auch Modelle der Schalter und Taster und platziere sie im Modell.
So hat sich gezeigt, dass noch Platz für 2 zusätzliche Rotary Encoder war.

Wenn die Frontplatte fertig ist, benutze ich dieselbe Skitze, umd danach die Rückwand zu zeichnen, wo die Elektronik drinnen ist und die Schalter montiert werden.

Und so sieht das Ganze dann aus, wenn ich damit fertig bin (für’s Erste *gg*)

Electronik/Firmware

Durch meinen DIY Inputkonsole/Makro Keyboard Protoypen hab ich einiges über Arduino und viiieele Inputs und Displays gelernt.
Also war für diese Projekt klar – das mach ich wieder so 😀

Aufgrund des Hardware Modells weiss ich jetzt auch, wieviele Inputs ich am Arduino brauche:

  • 2 für die Wippen
  • 10 für die Taster
  • 14 fjür die 2 Funkyswitches (hoch/runter/links/recht/tasten und die 2 Rotary Outputs)
  • 6 für die 2 extra Rotary Encoder
  • 48 für die 4 12-Positions-Drehschalter.

Also 80 Inputs insgesamt, das heisst, mein „Joystick“ hat mindestens 80 Taster und 2 analoge Achsen. Aber wie bekommt man 82 Inputs und ein OLED Display an einen Arduino mit 18 I/O pins angeschlossen? 🙂
Die Antwort heißt „i²c-IO-Extender“, in meinem Fall „CJMCU-2317“. Die kleine Platine liefert 16 zusätzliche I/O pins und kommuniziert mit dem Arduino über das i²c Protokoll, das über nur 2 Drähte übertragen wird. 8 davon kann man insgesamt an einem Bus betreiben, somit verwende ich 2 für fast alle Tasterinputs. Sogar das OLED Display wird über i²c gesteuert und brauch keine zusätzlichen Pins am Arduino.

Die Schaltwippen bekommen 2 direkte Pins am Arduino, da ich hier Digitale Hallsensoren verwenden möchte, und die funktionieren am 2317 Extender nicht. Alle anderen Tastinputs (Taster, Rotaries und Funkyswitches) werden an die 2317 angeschlossen, einer für jede Seite. 5 Taster, 3 Rotary Inputs und 7 von einem Funkyswitch belegen somit 15 der 16 vorhandenen Pins am I/O Extender.

Obwohl es möglich wäre, auch die Drehschalter (insgesamt 48 Inputs) über 3 weitere I/O exender zu betreiben, hab‘ ich mich für eine andere Lösung entschieden, da der Platz im Gehäuse schon jetzt relativ beschränkt ist.
Beim Drübernachdenken fiel mir „die gute alte Zeit(tm)“ und der Logitech Sidewinder Joystick ein. Er hatte einen 4-Wegeschalter, wo alle 4 Positionen nur an einem Analoginput angeschlossen waren, wobei jede Position einen Widerstand beinhaltete. So konnte man durch Überprüfen des Analogwertes genau erkennen, in welcher Position der Schalter war.
Das ist auch das, was ich mit den Drehschaltern vorhabe.
Da ich nicht der erste bin, dem sowas einfällt, gibt es natürlich im Netz auch genug Infos darüber:
https://www.instructables.com/Arduino-Rotary-Switch-One-Analogue-Input/
http://jespereklund.blogspot.com/2011/10/rotary-selector-switch-for-arduino.html

Am folgenden Bild erkennt man, wieviele Pins am Arduino verbraucht werden. Noch immer 8 Pins übrig – hmmm, ich denke bereits über einen Schaltblitz nach 😀

Und so schauen die Verbindungen aus, wenn ich sie layenhaft in Fritzing zusammenstopple (Ich hab nur die rechte Seite gemacht, aber allen Drehschalter)

Die nächste Phase ist das Protoyping.

 

Schreibe einen Kommentar