Dieses Projekt begann, als ich mich entschied, mein Lenkrad so zu aktualisieren, dass es meinen persönlichen SIM -Fahranforderungen entspricht, was das Fahrerlebnis mit Realismus und ohne Schnickschnack darstellte.
Nachdem es das gesagt hatte, sollte es jedoch mit einer kompatiblen Thrustmaster -Basis und -konsole funktionieren, da es das F1 -Lenkrad nachahmt.
Ich habe meine Ziele hoch gesetzt und eine Liste von Dingen erstellt, die das Lenkrad entspricht.
Das Steerig -Rad sollte alle auf dem PlayStation DualShock 4 -Controller verfügbaren Tasten enthalten
Ich wollte ein Display für Einstellungen im Zusammenhang mit dem Lenkrad (und möglicherweise zukünftigen Updates) einfügen.
Rotary -Encoder für den schnellen Zugang zu den erforderlichen Fahrfunktionen (Bremsbilanz, ABS & Traction Control)
Ich wollte auch einen benutzerdefinierten kombinierten Aktionstast (CAB) einfügen, mit dem ich mit einem einzigen Klick erhöhen oder verringern kann - eines der oben genannten Funktionen ein x -Betrag.
Da ich keinen sofortigen Zugriff auf einen 3D -Drucker oder eine CNC -Maschine habe, habe ich mich für eine von 3Drap.it -Designs entschieden. Mit Hilfe von Antonio haben wir eine neue Version des aktuellen Rades entworfen, das sie auf Lager haben, und eine, die zu meinem Design passt.
Sehen Sie sich eine kurze Videodemonstration des Rades in Aktion an.
Die Aufkleber wurden mit einem Standard -Tintenstrahl auf einem A4 -Aufkleberblatt gedruckt und dann mit transparentem Packband bedeckt.
Laden Sie das Aufkleberblatt hier herunter (PDF).
Das Wichtigste, an das Sie sich an die Hardware erinnern müssen, ist, dass die Thrustmaster -Basis Ihr Lenkrad mit ~ 3,5 V betreibt. Alles, was Sie verwenden, sollte in der Lage sein, auf dieser Spannung auszuführen.
Von Anfang an war die Idee, dies um ein Arduino -Nano -Board aufzubauen. Ich habe bereits Erfahrung mit dieser Plattform gemacht und die Tatsache, dass ich einige Ausgangspunkte im Internet gefunden habe, hat diese Entscheidung einfach gemacht.
Als nächstes war das Display. Ich wollte nur, dass die Anzeige als Mittel für mich Einstellungen auf dem Rad Itislef anzeigen und bearbeitet, nicht um eine Verbindung zu verbinden oder Telemetrie anzuzeigen. Ein einfacher 16x2 -hinterleuchteter LCD würde also ausreichen. Um die begrenzte GPIO zu halten, habe ich auch einen I 2 C -Rucksack hinzugefügt.
Die Rotary -Encoder waren ein bisschen Ärger, da der Arduono Nano viele GPIOs nicht unterstützt. Am Ende des Tages ging ich mit drei Duppanet I 2 C Rotary Encoder Mini V2.1 Boards. Sie arbeiten großartig, verpassen nie einen Treffer und benötigen nur 3 GPIOs Gesamtzahl.
Schließlich verwendete ich für die Drehschalter zwei 8-Wege-Rotationsschalter von Mini, wobei jeder einen einzelnen analogen GPIO trug, wodurch die erforderlichen GPIOs noch mehr reduziert wurden. Die Idee ist ziemlich einfach und Sie können hier mehr herausfinden.
Ich brauchte 22 Tasten, um alle von mir geplanten Funktionen auszuführen. Ich habe sie von mehreren Online -Anbietern bezogen, ohne dass es zu erwähnen ist. Die meisten Tasten sind einfache temporäre (Eins) -OFF-Schalter mit Ausnahme der (Ein) -OFF- (ON) Umschaltungen. Für die Paddelschieber 3Drap. Es liefert Hochleistungs -Mikroschalte, die kuschig in das Gehäuse passen.
? Hier ist die vollständige Liste der Hardware, die ich verwendet habe.
Hier habe ich viel Hilfe von der Community erhalten (bitte sehen Sie die Credits unten). Ich habe meine Nachforschungen angestellt und festgestellt, dass viele Menschen ähnliche Dinge taten, aber ich wollte, dass mein Lenkrad funktioniert. Also habe ich einige von ihnen kontaktiert, einige Einblicke bekommen und begann meine eigene Version zu bauen.
Mein Ausgangspunkt war dieser Beitrag von Taras, in dem ich die grundlegenden Hardware- und Software -Verbindungsführer für den T300 erhielten. Dies war auch der erste Beitrag, den ich las, der mich auf dieser Reise führte. Taras war eine immense Hilfe, als er auf alle meine technischen Fragen beantwortet hat.
Anschließend fand ich in einem Projekt von Bram Harmsen, das die L3- und R3 -Tasten enthält, die wiederum auf keinem anderen Lenkrad nicht verfügbar sind. Als ich alle Informationen hatte, die für alle Aktionen erforderlich waren, fing ich an, alles zusammenzustellen.
Ich werde hier nicht zu viel Details in diesem Code eingehen, aber Sie können ihn im Repo betrachten. Ich habe so viele Kommentare wie möglich hinzugefügt.
? Zeigen Sie die Arduino -Skizzendateien an
Das Rad verhält sich jedem anderen Rad auf dem Markt sehr ähnlich. Es emuliert alle PlayStation DualShock 4 Controller -Tasten. Die Hauptunterschiede sind die Knopfmatrix , das Anzeigemenü , die Rotationscodierer und die Rotationsschalter (Kabinenfunktionen).
Im Namen des Speicherns von GPIOs auf dem Nano habe ich eine 5x5 -Taste -Matrix erstellt, um die 22 Tasten zu unterstützen, die ich für mein Design benötigte (ja, ich habe 3 zu sparen!).
"Hier ist die Button -Matrix .
Es gab einige Gründe, warum ich eine Anzeige wollte. Zunächst brauchte ich eine Möglichkeit, die Radeinstellungen zu ändern, ohne sie an einen Computer zu verbinden. Zweitens fand ich es auch schön, eine Uhr zu haben, um die Zeit und das Datum der realen Welt anzuzeigen. Drittens könnte die Anzeige in zukünftigen Updates verwendet werden, um Telemetrie anzuzeigen ... (aber noch nichts geplant). Und schließlich sieht es einfach cool aus.
Die Anzeige wird von den drei Anzeigetasten gesteuert:
Menü: Öffnen/Schließen Sie das Radmenü
Weiter: Scrollen Sie durch das Menü
Wählen Sie: Wählen Sie eine Option aus
Menüoptionen anzeigen:
Radmodus: Stellen Sie den Modus des Rades ab, je nachdem, auf welcher Plattform Sie spielen:
PS - PlayStation (PS) -Modus
PC - PC (PC) Modus
Disp. Modus: Setzen Sie den Modus der Anzeige, wenn Anzeige -Tastaturpress eingeschaltet ist. Jedes Mal, wenn Sie eine Taste drücken, wird die Funktion angezeigt:
PS - Drücken einer beliebigen Taste Zeigt die PlayStation -Taste -Funktion an (Kreuzung, Dreieck, L2, R2, ... usw.)
GT - Drücken der Taste Zeigt die Simulator -Taste nach meinen persönlichen Einstellungen an (Pit -Limiter, HUD, Wischer, ... usw.).
TastePress: Zeigen Sie den Taste -Tastendress auf der Anzeige an
Datum/Uhrzeit: Zeigen oder verbergen Sie das Datum und die Uhrzeit auf dem Startbildschirm
Summer - den Summer ein- oder ausschalten
Stunde Chirp - Ja, es könnte auch jede Stunde pieps, um die Zeit zu verfolgen, die Sie für den Simuator verbringen
Anzeige ausgeschaltet - die Anzeige ausschalten (jede Display -Taste dreht es wieder auf eine zurück)
Laufzeit - Zeigen Sie die Zeit seit dem Lenkrad an, damit Sie wissen, wie lange es gelaufen ist
Die Rotationscodierer ermöglichen beim Fahren einen schnellen Zugriff auf die Einstellungen des Bremsausgleichs , der ABS und der Traktionskontrolle . Rotary -Encoder sind cool, weil Sie Einstellungen schnell optimieren können, ohne sich mit den Bildschirmmenüs usw. ablenken zu müssen.
Die Rotary -Encoder wurden wie folgt zugeordnet:
Beschreibung | Linksfäule. (-) | Rechte Fäulnis. (+) |
---|---|---|
Bremsbilanz (BB) | D-Pad nach unten | D-Pad Up |
Antillock -Bremssystem (ABS) | L3 | R3 |
Traktionskontrolle (TC) | D-Pad links | D-Pad richtig |
Beschreibung | Linksfäule. (-) | Rechte Fäulnis. (+) |
---|---|---|
Bremsbilanz (BB) | Runter | Hoch |
Antillock -Bremssystem (ABS) | 20 | 21 |
Traktionskontrolle (TC) | Links | Rechts |
? Hier ist die Karte der Kontrollbindungen, die ich für beide Plattformen in Assetto Corsa Competizione angewendet habe.
Dies ist etwas, worüber ich mir ein Video ansah, in dem Nico Rosberg erklärte, wie Sie die Bremsausgleich von vorne nach hinten und hinten auf einer einzigen Runde mehrmals verschieben müssen, um Ihr Fahren zu optimieren. Sie können natürlich die Rotary -Encoder verwenden, aber Sie können nicht genau sein, insbesondere wenn das Force -Feedback auf Ihrem Rad aufnimmt.
Die Idee ist, eine festgelegte Schaltflächen zu erstellen, die abhängig von Ihren Einstellungen Mutliple -Klicks replizieren können. Mit den Rotationsschalter können Sie die Parameter schnell festlegen:
CAB -Modus: Wählt die Funktion aus, die Sie replizieren möchten (BB, ABS, TC)
CAB-Schritte: Wählen Sie die Anzahl der Zeiten aus, die Sie auf die Taste drücken möchten (1x-8x).
CAB -/+: Bei der Auswahl der Taste CAB -/+ wird sie in Ihren ausgewählten Einstellungen ausgeführt
Ich wollte die Dinge so kompakt wie möglich halten, damit ein benutzerdefiniertes Board erforderlich war. Ich wollte auch, dass die Dinge entfernbar und austauschbar sind, falls es in Zukunft ein Scheitern gibt. Meine Absicht war es, eine benutzerdefinierte gedruckte PCB zu erstellen, aber zu diesem Zeitpunkt war es wirklich keinen Sinn (vielleicht in einem Update?). Das letzte Brett besteht aus einem 5x7 cm -Perfboard, und ich habe feste Kerndraht verwendet, um die Verbindungen herzustellen.
Obwohl mein erster Versuch (V1) perfekt funktioniert hat, war er nicht so kompakt, wie ich es mir gerne wünschte. Tatsächlich passte es überhaupt nicht in das Lenkungsgehäuse. Ich habe die Tracks neu gestaltet und eine zweite Version (V2) mit abgewinkelten Dupont -Konnektoren umgebaut, um aufgrund einer begrenzten Höhe viel Platz zu sparen.
? Schauen Sie sich das endgültige Diagrammlayout und das Board an.
Wenn Sie alles verkabelt und verbunden haben, wie das Diagramm zeigt, werden Sie wahrscheinlich alle für das Lenkrad eingestellt sein.
Um die Arduino -Skizze zu kompilieren, müssen diese Bibliotheken installiert werden:
EEPROM.H - EEPROM -Bibliothek zum Speichern von Einstellungen
Liquidcrystal_i2c.h - Flüssigkristallanzeige I 2 C -Bibliothek
i2cencoderminilib.h - Rotery Encoder I 2 C Library
Timelib.h - Zeitbibliothek
DS1307RTC.H - DS1307 RTC -Bibliothek
Befolgen Sie die Anweisungen der Bibliothek, wie Sie die aktuelle Zeit auf dem RTC einrichten.
Befolgen Sie die Anweisungen der Bibliothek, wie die Adresse jeder der Rotary -Encoder -Boards geändert werden kann. Ich habe sie wie folgt festgelegt:
BB (Bremsbilanz): 0x20
ABS (Antillock -Bremssystem): 0x21
TC (Traktionskontrolle): 0x22
Das einzige, was möglicherweise optimiert werden muss, sind die Rotationsschalterwerte, da die zurückgegebenen Werte von der gelieferten Spannung abhängen. Setzen Sie die DEBUG_ROTARY_SWITCHES
auf true
, und das LCD zeigt die aktuellen Werte beider Switches an. Notieren Sie sich diese Nummern und aktualisieren Sie sie in der Sketch -Datei t300_functions
unter getCABMode()
& getCABSteps()
-Funktionen.
Ich habe einen integrierten Leistungsmonitor hinzugefügt. Sie müssen DEBUG_LATENCY
auf true
einstellen und den Serienmonitor (115200 Baud) öffnen. Nach dem Hochladen sehen Sie einen Echtzeitbericht über die aktuelle Schleifenlatenz.
Die erste Softwareversion hatte einige Probleme, wobei die Latenz die größte war. Hin und wieder wurde ein Knopfklick übersehen, was während eines Rennens eine Fehlzündung auf einem Hochschicht oder einem Herunterschalten bedeutete. Dies machte eine schlechte Leistung aus.
Nachdem ich Tests ausgeführt hatte, stellte ich fest, dass eine einzelne Schleife bei etwa 2800 ms mit einem eventuellen Schluckauf jede Sekunde bei ca. 106000 ms lief. Es war unglaublich, dass etwas eine Art Verzögerung hervorrief. Ich habe schließlich den Code für die Rotary -Encoder und die Uhr (RTC) optimiert.
Da das Display dem Fahrerlebnis nicht viel erhöht, können Sie sich dafür entscheiden, es auszuschalten, während Sie den ABS-Drehschalter langpressen.
Die aktuelle Version funktioniert nahtlos und ich habe während des Rennens keine Fehlzündungen bemerkt.
Ein kleiner Raum, um die zuvor von anderen geleistete Arbeit anzuerkennen.
Taras Ivaniukovich https://rr-m.org/blog/ - Für die Arbeit, die er in seinem Blog geteilt hat, und die Hilfe, die er auf dem Weg geleistet hat
Bram Harmsen https://www.thingiverse.com/Thing:2813599 - Für Reverse Engineebrng das F1 -Lenkrad
MRFID72 - Für das fantastische YouTube -Video, das die analogen Rotationsschalter erklärt
Danny van den Brand Brand - Für den Code, den ich online gefunden habe, hat mir geholfen, die Button -Matrix einzurichten
Antonio de Stefano https://3drap.it - Für das fantastische Lenkradgehäuse
GNU Allgemeine öffentliche Lizenz v3.0 oder später