Android Tacho mit Realdash im Elektroauto
Inhalt:
Realdash
Auf der Suche nach einem Programm, mit dem ich einen Tacho / Cockpit Display für meinen Kewet programmieren kann, und das mit meinem EMUS BMS läuft, bin ich auf Realdash gekommen. Realsash ist hervorragend geeignet als Android Tacho im Elektroauto, läuft aber auch auf Windows. Realdash ist im Demomodus voll funktionsfähig, hat eine große Hardwarekompatibilität und kann mit allen benötigten Kommunikationsprotokollen umgehen. Einzig die Dokumentation ist sehr spärlich. Deshalb möchte ich hier über meine Erfahrungen berichten und einige Hilfestellungen für den Umgang mit Realdash beschreiben. Die Kommunikation zum EMUS BMS findet über einen Arduino mit dem CAN Protokoll statt. (Das EMUS BMS kommuniziert mit seinem eigenen Android/iOS Programm über ein proprietäres serielles Protokoll, das hier nicht verwendet wird!).
Realdash läuft auf Windows 10, iOS und Android Geräten und hat diverse vorgefertigte „Dashs“ im Lieferumfang. Im Store können kostenpflichtige Dashs erworben werden. Ein Dash ist eine Oberfläche, die auf einem Gerät ein Cockpit Anzeigedisplay zur Verfügung stellt. Diese können nach belieben editiert und für den persönlichen Bedarf umgestaltet werden. Da die Programmierung eines Dash auf einem Android Gerät fast unmöglich ist (obwohl möglich) habe ich die Entwicklung auf der Windows Oberfläche vorgenommen. Laufen soll es dann auf einem Android Autoradio. Hierbei sei noch einmal darauf hingewiesen, das viele Radios massive Kompatibilitätsprobleme haben, insbesondere mit Bluetooth. Nach einigen Misserfolgen habe ich ein Modell gefunden, das gut funktioniert (siehe weiter unten).
Realdash gibt es für Windows im Microsoft Store. Ich habe nach der Installation noch ein kostenpflichtiges Dash gekauft, das Classic S2000, das ich mir für den Kewet umgebaut habe. Die Entwicklungsoberfläche ist einfach toll, aber die Dokumentation für die Programmierung ist wie schon oben gesagt, mehr als dürftig. Der finnische Entwickler hatte dann auch nach der 2 Frage per Email keine Lust mehr zu antworten….
Es gibt aber ein kleines ein Forum, in dem man Fragen stellen kann.
Ein gekauftes Dash ist nur für eine Plattform benutzbar, will man es also auf Windows und Android benutzen, muß man es 2x kaufen. Einmal im Microsoft Store gekauft, ist es auf verschiedenen Rechnern (mit dem selben Nutzer) verwendbar, ebenso die gekauften kostenpflichtigen Dashs.
Die Kommunikation mit der Außenwelt wird über ladbare .XML Files konfiguriert, ebenso die etwas weitergehende Dash Steuerung.
Ich möchte mich hier, wie gesagt, auf die Kommunikation mit dem EMUS BMS beschäftigen. Es gibt hier keine Standardlösung! Auf der Realdash Seite kann man sich ein Beispiel Sketch für den Arduino herunterladen, mit dem man eine Kommunikation herstellen kann (das ist aber leider fehlerhaft). Um eine Verbindung zum EMUS herzustellen, ist aber noch etwas Arbeit nötig. Prinzipiell spricht das EMUS CAN und auch das Realdash, aber mit einigen kleinen Unterschieden. EMUS gibt Standard CAN aus, Realdash möchte aber eine spezielle Initialisierung haben (Das ist einfach eine Ziffernfolge vor der CAN Message).
So ist ein Standard CAN-Serial oder Bluetooth Adapter nicht verwendbar um EMUS und Realdash direkt miteinander kommunizieren zu lassen.
Android Autoradio
Über Android Autoradios findest du unendlich viel im Internet. Es gibt Unmengen verschiedener Produkte. Als Android Tacho im Elektroauto sind allerdings nur wenige geeignet. Hier nur kurz etwas zu meinen Erfahrungen:
Die Radios sind eigentlich prinzipiell Android Tabletts, die mit einer speziellen Firmware ausgestattet sind und einem Radio entsprechend Anschlüsse bekommen haben. Die Firmware ist eine abgespeckte Android „Billigversion“ die um einige Funktionen erweitert wurde. Was für unsere Zwecke wichtig ist, ist ein funktionierendes Bluetooth und USB. Leider können damit die meisten Modelle nicht aufwarten, trotz anders lautender Versprechen. Ich habe einige Modelle ausprobiert, bis ich ein Radio gefunden habe, das funktioniert! Mal nach 10.1“ Autoradio WIFI Android 8.1 GPS NAVI Touchscreen Bluetooth 2DIN DSP USB
suchen, die chinesischen Anbieter kommen und gehen….
Es hat 2 USB Anschlüsse und ein funktionierendes Bluetooth.
Die Bildschirmauflösung ist 1024x600px, Speicher 1GB RAM und 16GB ROM, 4 Lautsprecherausgänge und ein FM Radioempfänger. Der Chipsatz ist „8227L-DEMO„.
Auf dem Gerät läuft übrigens „Android 8.1 Go“, eine abgespeckte Version des normalen Adroid Systems mit halbem Speicherbedarf. Das hat leider zur Folge, das einige Funktionen nicht im System integriert sind. So scheint z.B. „Floating Apps (Multitasking)“ nicht möglich zu sein.
Ich habe 129 EUR bezahlt, mittlerweile bekommt man es wohl auch für 71 EUR, siehe Link!
Worauf man acht geben sollte, ist die Frontscheibe, sie ist aus Kunststoff und zerkratzt sehr leicht! (Ich werde noch mal eine dieser „Displayschutzfolien“ ausprobieren…)
ACHTUNG: Aktuell angebotene Radios dieser Bauform mit Android 9.1 und 10 und 2GB RAM / 16GB ROM sind FAKE! Sie zeigen diese Hardware an, haben aber auch nur ein 8.1go mit 1GB RAM und 12GB Flash Speicher, wie dieses hier z.B.
Hier ein Typ der NICHT funktioniert hat! Es war nicht möglich Bluetooth und USB zu aktivieren. Es hatte die Android Version 9.0 aufgespielt! Ein Nachteil war auch das große Gehäuse….
Radio Gehäuse
Um das Radio auf dem Kewet Armaturenbrett zu montieren, habe ich ein Gehäuse 3-D gedruckt. Da das Radio kein großes Gehäuse hat, ist es recht klein ausgefallen und passt gut hinter das Lenkrad:
Das Gehäuse wurde noch geschliffen und matt schwarz lackiert. Ein Beitrag über die richtige Farbe um PLA zu lackieren, findest du hier!
Realdash einrichten
Windows 10: Reasldash aus dem Microsoft Store installieren
Realdash zu programmieren geht eigentlich nur auf Windows. Deshalb wird hier das Programmdesign erstellt und später auf ein Android Gerät übertragen!
Grundlegende Einstellungen: Die Einstellungen werden sichtbar, wenn man im Programmfenster oben auf den Rand klickt)
Vorgehensweise zum Einrichten einer Gauge
Dash aus Datei laden (dies ist die Datei, die das Design beinhaltet): BEARBEITEN -> DATEI -> LADEN -> (Ordner mit .rd Datei wählen)
Die Datei für den Kewet ist: Kewet_Test.rd, sie ist ein von mir modifiziertes Dash „Classic S2000“. (dieses Dash muß gekauft werden, sonst läuft auch die modifizierte Datei nicht!)
Verbindung einrichten
SETTINGS -> DATA SOURCE -> „CONNECTIONS“
Kommunikationsdatei wählen: WERKSTATT -> (auf die Tür klicken) -> (auf die blaue Anzeigetafel klicken) -> ANSCHLÜSSE ->
Hier kann jetzt ein neuer Kommunikationsanschluss eingerichtet werden (USB oder Bluetooth)
HINZUFÜGEN: RealDash CAN (dies ist das Kommunikationsprotokoll), auf den Pfeil nach rechts klicken ->
Hier kann nun eine neue Schnittstelle ausgewählt werden: BLUETOOTH oder SERIELLE SCHNITTSTELLE(USB). Du kannst mehrere Schnittstellen definieren, auf den Pfeil nach rechts klicken -> Nun werden verfügbare Anschlüsse aufgelistet, also Bluetooth Devives oder USB Anschlüsse. Die Anschlüsse müssen natürlich verfügbar sein! Auf den Pfeil nach rechts klicken ->
Übertragungsrate wählen, bei mir sind es generell 38400. Auf den Pfeil nach rechts klicken ->
„CAN BESCHREIBUNGSDATEI WÄHLEN“ klicken: -> „realdash_can_example_mod.xml“
ERLEDIGT klicken! (Änderungen an der Kummunikationsdatei werden im laufenden Betrieb übernommen!)
Jetzt können unter „ANSCHLÜSSE“ z.B. 2 Anschlüsse aufgeführt sein, die je nach Verfügbarkeit genommen werden, Bluetooth oder USB!
Mit klick auf das Kreuz rechts oben den Dialog schließen.
Arduino Anschlüsse für Anzeige wählen:
Gauge mit Maus markieren, INPUT & VALUES -> SELECT DATA SOURCE -> „ECU SPECIFIC“ -> Anschluss wählen.
Wenn REALDASH unten rechts im Fenster im 5 Sekunden Takt eine Meldung wie „Verbinden…. USB serial Device (COM7…“ bringt, ist der entsprechende Port nicht verfügbar oder die Kommunikation bricht ab.
Wichtig: Wenn es mit der Seral USB Verbindung Probleme gibt:
Dieser Anleitung folgen: Wichtig: Den alten Gerätetreiber wie in der Anleitung DEINSTALLIEREN, nicht nur aktualisieren!
Bildschirmansicht
In Realdash Windows muss für die Bildschirmauflösung unter EINSTELLUNGEN -> ANWENDUNG -> BEARBEITUNG (5er Reiter) -> 16:9 eingestellt werden. Das entspricht 1024x600px am ehesten.
USB Verbindung mit dem Arduino
Der gesamte Aufbau mit dem Arduino ist in diesem Beitrag beschrieben.
Ich möchte hier aber noch einmal auf die USB Verbindung zum Arduino eingehen:
Die einfachste Möglichkeit ist das Android Radio/Realdash mit dem USB Port des Arduino zu verbinden. Es gibt aber noch eine komfortablere Möglichkeit:
Einen 2. USB Port für Android Radio/Realdash verwenden. Das hat den Sinn, das der native USB Port zum Programmieren und debuggen frei bleibt und nicht umgesteckt werden muss. Man kann für den Port eine USB Steckdose im Armaturenbrett installieren. Zum anderen wird der native Arduino Port sowohl im Windows als auch bei Android gern mal umbenannt, da ist dann eine andere Ziffer am Ende der Portbezeichnung mit dem Ergebnis, das Realdash den voreingestellten Port nicht mehr findet.
Abhilfe schafft also ein preisgünstiger USB/UART Wandler, der an einen der verfügbaren seriellen Ausgänge des Arduino Mega angeschlossen wird. Leider musste ich einige dieser Dinger testen, denn Android ist mit allen diesen Modulen zufrieden, Windows mit einigen und Realdash auch nur mit einigen. Die Kombination Windows/Android/Realdash kompatibilität hat bei mir nur ein Modul hinbekommen:
Der CP2102. Hier ein solches Modul auf Ebay.
Die Kommunikationsdatei
… hat mir schon einiges Kopfzerbrechen bereitet. Die .xml Datei fungiert als Filter, der die CAN Nachrichten nach einer bestimmten CAN ID durchsucht und dann eine Anweisung gibt, wie damit zu verfahren ist. Jede dieser Anweisungen (Frames) ist in die Bezeichner <frame …… </frame eingebettet.
Sehen wir sie uns mal genauer an:
Im obrigen Beispiel wird die Akkublock Zellspannung CAN Message vom EMUS BMS verarbeitet. Ein Frame beginnt mit der zu filternden CAN ID.
<frame canId „……“ >. Im Beispiel hat sie den Wert 0x1B6 (Hexadezimal). EMUS hat eine „Basis ID“ (bei mir 0x1B5), zu der ein Wert hinzugerechnet wird, in unserem Fall 1 (in Dezimal!!), was dann die ID 0x1B6 ergibt. Hier
Die Zahlen sind der EMUS CAN Dokumentation zu entnehmen.
Als nächstes (value) wird weiter der entsprechend Payload (also der Inhalt der CAN messages) gefiltert und aufbereitet.
name=“……“ ist die Variable die in Realdash einer Ausgabe zugewiesen wird, der Name kann frei gewählt werden.
units=“…“ ist die Einheit, mit der der Wert bezeichnet werden soll, macht aber nur für spezielle Berechnungen in Realdash Sinn. In unserem Fall „A“ für Ampere, hat keine Berechnung hinterlegt und dient nur als Hinweis.
offset=“…“ ist die Byte Stelle, an der die Auswertung beginnt. „0“ ist die erste Stelle! Ein CAN Datenfeld/Payload besteht immer aus 8 Bytes! (zumindest bei Classical CAN).
length=“…“ ist die zu verarbeitende Byte Anzahl. In unserem Beispiel sind es 2 Bytes, Byte B0 und B1. Wichtig hierbei: Der offset Wert wird von der Byte Stelle abgezogen. Wenn also z.B. das 4. Byte ausgewertet werden soll, ist der Offset „3“ und das Byte wird dann mit „B0“ bezeichnet, das 5. Byte mit „B1“ und so weiter.
conversion=….“ ist in unserem Fall eine mathematische Operation. Realdash kann anscheinend hier nur die Grundrechenarten. In unseren Fall werden 2 Bytes zusammengerechnet (B1+(B0+256))/10): Das 5. Byte + dem (4. Byte * 256). Der Dezimalwert 256 wird mit den 4. Byte multipliziert, weil das 4. Byte das höherwertige ist! Danach wird das ganze durch 100 geteilt, weil der Endwert zwei Nachkommastellen hat.
Etwas verwirrend? Hier ist die entsprechende Angabe in der EMUS CAN Dokumentation:
Wenn Bytes addiert werden, wird das 2. Byte mit 256 multipliziert, das 3. Byte mit 65536, das 4. Byte mit 16777216 u.s.w
Bit Werte
Im obrigen Beispiel werden EMUS Bit Werte gefiltert.
Realsdash stellt hierzu die Beschreibung units=“bit“ zur Verfügung und weiß mit dieser Angabe, das ein Bit aus einem Byte ausgefiltert werden soll. Mit conversion=“V>>2″ wird das 3. Bit des Bytes genommen!
Signed Word
Nun wird es etwas schwieriger:
Der Motorstrom ist vom EMUS als signed Word codiert. Ein unsigned Word hat den Wertbereich von 0 – 65.536, ein signed Word -32.768 – 32.767! Der negative Wert bezeichnet Stromentnahme aus dem Akku, ein positiver Wert Ladung in das Akku. Wir müssen nun also Realdash dazu überreden, den empfangen Wert als signed Word zu interpretieren.
Das wird mit dem Zweierkomplement gemacht. Auf die Grundrechenarten heruntergebrochen, siet die Formel so aus:
LSB und MSB werden in gewohnter Weise zu einem Word zusammengerechnet. Mit „-65536“ werden die Bits invertiert und dann mit „+1“ das Word als signed markiert. „/10“ ist dann noch der Divisor für eine Nachkommastelle.
Realdash gibt nun brav einen minus Wert an, wenn der Motor Strom zieht!
Nette Helferlein bei der Umrechnung von Zahlensystemen sind hier zu finden:
Binär-Dezimal-Hexadezimal Umrechner
Umrechnung von Zahlensystemen
Rechner für Hexadezimalzahlen
Rechner für das Zweierkomplement
Das Dash Design ändern
Animations-Design Datei laden: Im Bearbeiten Modus: DATEI -> IMPORTIEREN und .xml Datei auswählen. Diese Möglichkeit ist leider überhaupt nicht dokumentiert. Eine Beispiel Animations xml Datei kann hier herunter geladen werden und hier das Dash dazu.
Wert mit Nachkommastellen versehen: Optik -> Schriftart&Text -> Nachkommastellen = „2“.
Design: Leider können keine Design Elemente von einem Dash in ein anderes kopiert werden. Die einzige Möglichkeit ist hier ein Screenshot und die Grafik dann in das Zieldash einfügen.
Die Daten auf das Android Gerät übertragen
Das geht am besten mit Airdroid. Die erstellten Dateien über WLAN auf das Android Gerät kopieren und dann mit Realdash laden! Wie bereits geschrieben, müssen hier 2 Lizenzen von Realdash gekauft werden.
Die Lösung ist sehr angenehm, da das Realdash Autoradio nur über WIFI mit deinem Router verbunden sein muß und du so alles vom „Wohnzimmer“ aus übertragen werden kann, auch wenn alles schon eingebaut und verkabelt ist.
Tipps und Tricks
Die Dash Größe ändert sich auf veschiedenen Geräten:
Edit your dashboard and select all gauges
– Go to Look’n Feel->Special
– At the bottom, there is a lonely edit box without title. Enter: [NOSCALE]
– Exit edit mode and save. Now these gauges will not be scaled to match different aspect ratios when loading dash.
Programm aus Realdash starten:
ADD GAUGE -> UI-> BUTTON
INPUT & VALUES -> SELECT BUTTON ACTIONS -> NEW ACTION -> Launch App / URI SCHEME: (app Name)
(An App called „App Info Manager“ shows a list of App’s installed on your device.
If you pick the app you need it gives you right at the top, between brackets, something like com.sygic.aura or com.touchtype.swiftkey)
Nächster Beitrag: Realdash Kommunikation mit dem EMUS BMS und dem GEN4 Motorcontroller über einen Arduino
Bei Fragen bitte die Kommentarfunktion nutzen!
Dies ist ein privater Blog. Brauchst du professionelle Hilfe zum GEN4, EMUS BMS, EV Umbau oder Programmierung? Dann bitte hier klicken!
Hallo ,habe Schwierigkeit mit der elektronik von meinem ligier pulse 4 be Sun.
Akku ist voll Zeiger am tacho zeigt Akku leer, Gänge am Tacho diespley lassen sich nicht schalten aber am Controller zeigt Gänge schaltet normal Auto läuft nicht .habe 2 mal BFI getauscht nach Anweisung von Ligier aber zeigt trotzdem der selbe fehler! Habe festgestellt dass die keine Ahnung haben nur Experimentieren und ich habe eine Tüte Geld in Sand gesetzt !!! Kannst du mir Bitte helfen , Hast du Ideen an wass kann dass liegen? Mit freundlichen Grüßen Biser 01781842046