Endlich komme ich mal dazu dieses Projekt zu verbloggen… Anfang diesen Jahres habe ich mit einem Arduino ein Kombiinstrument eines VR Polos via CAN Bus angesteuert und mit Daten von Euro Truck Simulator 2 (ETS2) gefüttert.
Während des Spielens von ETS2 mit ein paar Freunden, kam uns die Idee, dass es doch interessant sei die Telemetrie Daten von dem Spiel auf Hardware anzuzeigen, die vor einem steht. Nach ein bisschen googeln, ist mir klar geworden, dass Cockpits für ETS2 Hardcore-Gamer häufig zum Einsatz kommen.
Außerdem bin ich dabei über ein Projekt bei Hackaday gestoßen mit dem Namen „Volkswagen CAN Bus Gaming„. Der Autor hat ein Volkswagen Polo 6R Kombiinstrument verwendet um ebenfalls die Daten aus ETS2 anzuzeigen. Da das Projekt recht gut Dokumentiert war, habe ich mich entschlossen das Projekt nachzubauen, daher auch der Hinweis, dass viel Wissen von dem Autor des Hackaday Projekt stammt.
Mein Kombiinstrument von einem „VW Polo 6R 1.2 TSI 63“ (6R0920860D) habe ich bei ebay für 49,99€ gekauft. Mehr besondere Hardware waren auch nicht notwendig.
Pinout und Ansteuerung des Kombiinstruments
Die Ansteuerung des Kombiinstrument durch den Bordcomputer im Auto läuft über den CAN Bus. Den „Bordcomputer“ für die Ansteuerung übernimmt in dem Projekt ein Arduino UNO. Da natürlich keine öffentlichen Datenblätter zu dem Kombiinstrument existieren, hat bereits Leon Bataille den Anschlussstecker sowie die CAN Adressen reverse engineered und der User Is0-Mick ein schönes Diagramm dazu gezeichnet. Bereits beim ersten Betrachten viel mir auf, dass es kein Standard 34 oder 30 Stecker Kabel ist, sondern ein 32er. Solch eine spezielle Anfertigung hat nicht mal Samtec vorrätig. Zum schnellen selber basteln habe ich vorsichtig ein altes Flachbandkabel eines Floppylaufwerks um zwei Pins gekürzt.
Das Kombiinstrument wird mit der typischen Autobatterie Spannung (12V) betrieben. Die Tankanzeige arbeitet mit verschiedenen Spannungen (siehe Schaltplan Tankanzeige Spannungsteiler). Die Temperatur wird mit 3 3k3 NTC Widerständen parallel errechnet.
Um die Ansteuerung über den CAN Bus zu testen, habe ich mir auf Ebay ein CAN Bus Modul bestellt basierend auf dem dem MCP2515. Die Auswahl ist auf das Modul gefallen, da hierfür die Schaltpläne online verfügbar sind, welche ich dann mit in meinen Schaltplan implementieren konnte. Für den Test habe ich die Codeschnipsel aus dem Hackaday Projekt verwendet.
Hinweise zur Ansteuerung: Während des Starten muss die Parkingbreak auf HIGH gezogen werden, um das Kombiinstrument korrekt zu starten. Um das Fernlicht/Nebellicht zu aktivieren muss der Pin auf HIGH gezogen werden.
Schaltplan und PCB Design
Für das VW Polo Kombiinstrument ist der erste Prototyp fertig. Auch das erste mal ein @arduino Shield entwickelt.
— Niklas (@Gurkengewuerz) January 7, 2018
Mal hoffen, dass es auch geht. pic.twitter.com/NYQDcyxRlr
Glücklicherweise wurden auch die Schaltpläne für den Arduino Shield hochgeladen. Allerdings gefiel es mit nicht, dass ein zusätzlicher CAN Shield benötigt wird, daher habe ich mein eigenes Design erstellt mit einem MCP2515 CAN Controller, wie ich ihn vorher verwendet habe. Gerne hätte ich die Tankanzeige durch ein DIgitalpotentiometer ersetzt, jedoch habe ich kein Poti in so kleinen Schritten gefunden, weshalb ich die Variante mit der Widerstandsreihe dann dennoch gewählt habe.
Software CAN Bus
Die Platine kommt zwar
— Niklas (@Gurkengewuerz) January 8, 2018
voraussichtlich erst nächste Woche, so wie die Bauteile, aber um eine Serielle Steuerung kann man sich ja schon mal Gedanken machen. 🙂
Das Tool soll einen Socket anbieten, um die Daten über den COM-Port an den Tacho zu schicken und schließlich anzuzeigen. pic.twitter.com/lWXgqKZqfo
Der Arduino Code ist nahezu identisch mit dem aus dem eigentlichen Projekt. Ich habe jedoch die Serielle Eingabe implementiert um die Telemetrie Daten Kommasepariert über den COM Port zu übertragen.
Die Telemetrie Daten werden durch das Open Source Projekt „ETS2 Telemetry Server“ gesammelt. Ein ungeschriebener Skin verbindet sich zu einem Websocket und sendet die Daten. Als Websocket Server dient ein Java Programm, welches die Daten dann an die Serielle Schnittstelle ausgibt. Über das Tool kann man auch zum testen manuell die Steuerung übernehmen.
Dabei ist ein Datensatz wie folgt aufgebaut.
<Geschwindigkeit>,<RPM>,<Tank>,<Rücklicht>,<Blinker links>,<Blinker rechts>,<Offroad>,<Wasser Warnung>,<Gurt Warnung>,<Batterie Warnung>,<Lampen Warnung>,<Tür offen>,<Nebellicht>,<Fernlicht>,<Handbremse>,<ABS>,<Öldruck Simulation aktivieren>,<Reifendruck niedrig>,<Kupplung>,<Kofferaum offen>;
Arduino Sketch: https://git.mc8051.de/Gurkengewuerz/VWPolo6R_Dashboard_CAN
Java Programm: https://git.mc8051.de/Gurkengewuerz/serialinterface
Probleme
Während des Projekts sind natürlich wieder einige Probleme aufgetaucht. Unter anderem konnte ich den Magic Smoke an dem MCP2551 leider nicht vermeiden, da ich VSS (-) VDD (+) verwechselt habe. Außerdem ist in der ersten Revision des PCB Design der 32er Pinheader zu nah vorne, weshalb er Kontakt mit der USB Buchse des Arduinos hatte.
Momentan zuckt auch noch die Geschwindigkeitsanzeige. Leider hat Leon Bataille dazu auch noch keine Lösung in seinem Projekt gefunden. Meine Idee wäre es, dass nicht häufig/schnell genug die Daten für die Geschwindigkeit gesendet werden, jedoch kam ich noch nicht dazu das in den Code einzubauen.
Noch zappelt die Geschwindigkeit etwas, doch im großen und ganzen scheint es zu funktionieren.
— Niklas (@Gurkengewuerz) February 2, 2018
Aktuell sendet ein Euro Truck Simulator 2 Telemetry Server Ingame Daten per WS an ein Java Programm welches Seriell mit dem Arduino kommuniziert. pic.twitter.com/57NYOgeUZu
Findet den Fehler.
— Niklas (@Gurkengewuerz) January 21, 2018
Wer gibt den Pins denn auch immer diese Bezeichnungen. 😬 pic.twitter.com/dG9RSI3ae8
Hallo
Ich hoffe du machst noch weiter mit dem Projekt.
Ich bin selber am basteln und habe mir alles vom volvo v50 besorgt.Der Tachometer ist vom volvo fh 16 oder 12. Ich habe aber noch kein stromlaufplan bzw.Pinbelegung der Stecker. Ich muss glaub ich volvo mal anschreiben ob ich die Pläne bekommen kann.
Hi
Klasse Project. Wie kann man den Arduino Sketch Downloaden?
Hey Axel. Schau einfach mal in mein Git. 🙂