Vorwort
Die Entwicklung des digitalen Cockpits ist komplex und langwierig. Dieser Entwicklungs-"Blog" berichtet deshalb in lockerer Folge vom aktuellen Stand und den dabei aufgetretenen Besonderheiten und Entscheidungen. Die Dokumentation auf den nachfolgenden Seiten spiegelt nur den initialen Stand zu Beginn des Projekts.
Update 7, November 2022
Das Projekt ist gestoppt. Das Ziel-Motorrad (die Fazer) ist verkauft und für die neue (CB1000R) ergibt die ganze Sache keinen Sinn. Zudem funktioniert die "Zwischenlösung" mit dem Android-Tablet sehr gut.
Update 6, August 2022
Und wieder ist ein frustiger Monat ins Land gegangen. Irgendwie ist der Windows-Tablet-Ansatz eine totale Sackgasse.
Sehen wir es positiv: ich habe viel gelernt..
Als erste Hilfe für den in Kürze startenden Motorrad-Urlaub habe ich deshalb ein Android Tablet gekauft:
- Lenovo Tab M8 8.0 HD 2nd Gen, 8 Zoll Display
Als Navi-App verwende ich
Organic Maps.
Das ist der kompatible Nachfolger von
MAPS.ME.
Damit war ich bisher immer sehr zufrieden.
Und falls/wenn ich irgendwann mal JAVA lerne dann werde ich auch die Moto-Data Geschichte noch nach Android portieren.
Für das Tablet habe ich noch eine 2-Tasten-Bedienung gebaut. Sie wird am Lenkergriff befestigt und ist zum
Zoomen gedacht. Das Teil ist ein USB-HID Device.
Update 5, August 2022
Ein neuer Ansatz. Die komplette Kartendarstellung wird auf ein anderes Programm ausgelagert. Mein Programm übernimmt "nur
noch" die Darstellung der Motorrad-Daten und startet das Kartenprogramm als eigene Applikation in einem separatem Fenster.
Als Kartenprogramm habe ich mir
NavIt
ausgeguckt.
Die Suche hat mehrer Wochen gedauert. Es ist extrem schwierig ein Navi-Programm zu finden das keine Kachel-Karten
verwendet und unter Windows lauffähig ist.
NavIt ist als Windows Binary verfügbar und verwendet kompakte Karten. Besonders interessant ist dass es
ferngesteuert werden kann. Durch einfache Windows-Botschaften kann man zoomen und den Mittelpunkt verschieben.
Die genaue Syntax herauszufinden hat mich 2 Wochen Analyse gekostet... Jetzt funktioniert es aber.
Leider hat Navit einige erhebliche Schattenseiten:
- Selbst auf einem guten PC ist es sehr langsam, und erst recht auf dem alten Tablet.
- Die gesamte Konfiguration der Karten und Layouts läuft über eine XML-Datei. Das ist mehr als lästig.
- Das GUI-Design und der ganze Code scheinen aus der Andriod-Ecke zu stammen und sind nur mittelmässig auf Windows adaptiert worden.
- Die Erkennung der GNSS-Signale hat erhebliche SW-Probleme. Und sobald solche Signale anliegen sinkt die Geschwindigkeit noch weiter ab.
An diesem Punkt bin ich wieder auf Leaflet zurückgefallen. Dazu benötigt man nur einen normalen Browser und eine HTML-Seite. Und ich habe gelernt das Leaflet sog. "MBTiles" verarbeiten kann. Das sind viele Kacheln "am Stück", gesammelt in einer grossen XML-Datei. Damit wäre das Problem der vielen Kachel gelösst.
Aber auch hier steckt die Tücke wieder im Detail. Leaflet will die MBTiles einfach nicht darstellen. Und das Datei-Format und sein Inhalt sind offensichtlich nicht so universell und identisch wie man denkt. Und die Geschwindigkeit (auf dem Tablet) ist auch wieder mal grenzwertig.
Update 4, Juli 2022
Das Anzeige-Programm macht gute Fortschritte. Die Moto-Daten können alleine oder gleichzeitig mit den Karten angezeigt
werden. Klappt alles und auch der Zugriff auf die Offline-Karten funktioniert gut.
Ich arbeite immer noch mit Lazarus/FPC. "MapViewer" ist eine gut brauchbare
Komponente um Kartendaten anzuzeigen. Die Kartendaten zu generieren und zu handhaben ist aber eine echte Herausforderung.
Für eine 100km x 100km Region benötigt man ca 150.000 Einzelkarten. Selbst das Umkopieren auf eine SD-Karte dauert ewig
lange.
Eine Alternative wäre sog. Vektor-Karten zu verwenden. Dafür gibt es aber leider kein Pascal-Sourcen oder Beispiele.
Alle Welt benutzt nur noch JavaScript und Phyton..
Auch für Garmin-Geräte gibt es jede Menge Karten. Wenn man die nutzen könnte wäre schön. Aber leider ist auch dafür keine
(öffentliche) Anzeige-SW verfügbar.
Weiterhin könnte ich ein fertiges Navi-Programm verwenden und "irgendwie" gleichzeitig mit meinen Moto-Daten anzeigen.
Aber auch da ist die Luft sehr dünn. Praktisch alles ist nur für Android und iOS ausgelegt..
Das ganze Projekt driftet ein wenig in ein Dilemma. Die Windows-Welt ist die einzige in der ich aktuell ein
vernünftiges Programm mit Lazarus erstellen kann. Aber für die Karten-App wäre Android die bessere Umgebung.
Immerhin hat das ganze jetzt einen stabilen Stand erreicht mit dem man auch mal Road-Tests machen kann.
Update 3, Mai 2022
Das Windows Tablet funktioniert mittlerweile ganz gut. Nach tagelanger Konfiguration, und diversen Neuinstallationen
von Windows, läuft es stabil und sauber. Lazarus lässt sich problemlos installieren und alles kompiliert fehlerfrei.
Genaugenommen habe ich jetzt 3 fast baugleiche Geräte :). Die waren so günstig dass ich nicht nein sagen konnte.
Und eine Reserve ist immer gut.
Die Lötpunkte des UART habe ich auch gefunden. Zusammen mit einer kleinen Schaltung zur Pegelanpassung/Anhebung kann
man sich problemlos mit einem PC oder einem GPS-Modul verbinden.
Sowohl ein GPS-Modul als auch eine serielle COM-Verbindung mit einem PC laufen erfolgreich und zuverlässig. Die Moto-
Daten lassen ebenfalls darüber bereits übertragen und werden in Echtzeit auf dem Display angezeigt. Sehr erfreulich :)
Update 2, April 2022
Die Idee mit dem 7 Zoll Tablet habe ich dann doch mal direkt getestet.
Die Suche nach einem passenden Tablet erwies sich als erheblich schwieriger als gedacht. Die 7-Zöller sind praktisch
vom Markt verschwunden. Noch seltener ist Windows als Betriebssystem. Fündig wird man nur wenn man sich die vor
ca. 5 Jahren aktuellen Modelle anschaut.
Für 40€ fand ich ein no-name Exemplar bei ebay. Kein Branding, Hersteller ist "iNet", Intel Atom Z3735G Prozessor, 1GB RAM, 16 GB eMMC Speicher. Das
Gerät ist ein billigst zusammengenageltes Gerät aus asiatischer Fertigung. Aber es läuft akzeptabel und ich konnte
problemlos Lazarus installieren.
Die Probleme begannen beim USB-Anschluss. Entweder Laden oder Tastatur/Maus anschliessen, beides gleichzeitig geht nicht.
Das wird besonders zum Problem wenn ich darüber die Daten von meiner Adapterplatine empfangen möchte. In einem
Foren fand ich aber einen Hinweis zu einem (optisch) ähnlichen Clone der interne, kontaktierbare UART Pins haben
soll. Also das Gehäuse öffnen und nachschauen:
Alles sehr komprimiert und sparsam, selbst die Camera wurde weggelassen. Und leider überhaupt kein Hinweis auf
wo die UART-Pins zu finden sein könnten.
Und irgendwie scheine ich momentan doofe Hände zu haben. Beim Zerlegen bekam die Abdeckscheibe einen kleinen Riss,
genau dort wo die Leitungen für den Touch-Sensor entlanglaufen. Schon wieder ein Gerät vernichtet!! .. :/
Update 1, März 2022
Raspberry Pi und Display (7 Inch WaveShare DSI) sind während meiner Versuch kaputt gegangen. In einem
unachtsamen Moment habe ich 12V an Stelle von 5V
als Versorgungsspannung angelegt. Nach wenigen Sekunden stieg eine kleine Rauchwolke über der TVS-Diode des
Raspberry auf. Mal eben 100€ getoastet :/ Mist!!
Die TVS-Diode ist durchgebrannt und hat einen Kurzschluss gebildet. Die Diode habe ich ausgetauscht und mich gefreut
dass die Reparatur so einfach war. Aber nach
wenigen Betriebsstunden zeigte sich dass auch andere Baugruppen bereits Schaden genommen hatten. Das Verhalten wurde
instabil mit häufigen Abstürzen. Das Display hat erheblichen Strom gezogen und Störungen gezeigt.
Ich bin stinksauer auf mich selbst. Jetzt habe ich mir erstmal eine Pause zur Beruhigung und Besinnung genehmigt.
Wegen Corona sind auch sowieso keine Raspberrys zu bekommen.
Die gute Seite: ich konnte bisher mehr als 2 Monate erfolgreich testen :)
Aber auch schon wieder neue Ideen die mir durch den Kopf spuken. Und schliesslich brauche ich das Teil für den
nächsten Motorradurlaub und kann jetzt nicht lange rumheulen :)
Weshalb benutze ich eigentlich einen Raspberry? Wäre es nicht pfiffiger direkt ein 7 Zoll Tablet zu verwenden?
Und direkt eins mit Windows Betriebssystem? Dann hätte ich Rechner und Display bereits als fertige Einheit und
kann sogar (wieder mit Lazarus) direkt in Windows programmieren. Ich werde mich mal umschauen was es da
so gibt..