Hallo zusammen,
ich möchte hier mein Projekt vorstellen, an dem ich schon seit über einem Jahr arbeite. Und zwar geht es darum das Navigationssystem auf dem BMW E39 (5er, Bj. bis 2003/2004) in meinen BMW 850Ci zu adoptieren.
Ursprünglich war es geplant lediglich nur die Komponenten zu übernehmen, die für's Navigationssystem notwendig sind. Die Navis im BMW unterscheiden sich grundlegend von denen im Benz. Es sind immer "Mehr-Block-Geräte". Das Navi allein besteht im Wesentlichen aus drei Teilen:
-> Display mit Steuerung
-> Navigationsrechner
-> Radio, wird für die Sprachausgabe verwendet
Mittlerweile ist es aber so, dass ich das gesamte "Infotainment System" (ich hasse dieses Wort) übernehme:
-> Display mit Steuerung
-> Navigationsrechner
-> Radio
-> TV-Modul
-> BlueTooth mit Freisprecheinrichtung
-> DSP
Diese ganzen Komponenten unterhalten sich über ein Bussystem. Dabei handelt es sich um den Bus nach ISO 9141, also ein Ein-Draht-Bus-System, auch als KBus oder IBus bezeichnet.
Das Protokoll ist bekannt, nur noch nicht vollständig Reverse Engineered. Es sind noch Teile drin, die unbekannt sind, aber, das macht nichts.
Das "Navi" wird im 850er vollständig autark betrieben. Das heisst, das Navi denkt, es wäre immernoch im Fahrzeug, zu dem es auch hingehört. Folgende zwei Bilder werden es etwas verdeutlichen, hoffe ich.
Erstmal wie es im E39 (5er) aufgebaut ist:
Und so wird es in meinem 850er laufen:
In der Mitte sieht man das Gateway. Oberhalb vom Gateway ist das Navi mit den ganzen Komponenten und unterhalb ist mein 850er.
Damit das Navi funktioniert, muss ich das Kombiinstrument emulieren, weil es im 5er als Busmaster fungiert. Diese Aufgabe übernimmt nun ein AtMega2561. Er steuert das gesamte System, sagt, wann es aufwachen soll, wann es schlafen gehen soll, stellt die Werte für den Bordcomputer zur Verfügung, Datum, Uhrzeit, speichert die Einstellungen, die im Navi gemacht wurden und so weiter, also, wirklich alles.
Mein 850er hat ebenfalls einen Bordcomputer, wo die ganzen Werte wie Verbrauch, Reichweite, ... angezeigt werden. Das Fahrzeug verfügt ebenfalls über einen IBus, der aber mit dem IBus vom 5er gar nichts gemeinsam hat, ausser des Aufbaus der Botschaften, der Rest ist völlig anders. Und wie liebe Gott es so will, hat sich noch keiner die Mühe gemacht es zu reverse engineeren. Bis ich alles beisamen hatte, hat es ca. ein Jahr gedauert, dafür kenne ich jetzt jeden Byte auf dem Bus.
Das Gateway ersetzt zum Fahrzeug hin den Bordcomputer. Diese Seite des Gateways übernimmt dann die Rolle des Bordcomputers und muss sich natürlich genau so verhalten, sprich jede Botschaft quitieren und die richtigen Fragen stellen (initiale Daten beim Hochfahren, ...).
Mittlerweile bin ich soweit, dass das Navi mit allen Komponenten auf meinem Schreibtisch läuft. Ich muss nichts mehr per PC emulieren, alles läuft über den AtMega. Im Moment hängt noch ein AtMega162 dran mit einem Transceiver, es reicht aus um das Kombiinstrument zu emulieren.
So, genug Text, hier die Bilder:
So zeigt sich das Navi nach dem Einschalten:
Das Handy ist über BlueTooth gekoppelt und man kann auch anrufen und sieht auch die eingehende Anrufe:
Hier kam der DSP noch dazu:
Und seine Einstellungen:
Und das ist der Grund, warum es nötig ist, die beide Bus-Systeme zu koppeln. Hier sind die Bordcomputerdaten. Auf dem Bild wurden sie noch manuel gesetzt:
Navigation funktioniert selbstverständlich auch:
Das Gateway besteht aus:
-> AtMega2561
-> 2x Melexis TH3122 (IBus-Transceiver mit hardware Kollisionserkennung)
-> einem 4x Optokoppler (für Zündung an, Licht an, ...)
-> RTC-Baustein mit Backupbatterie
Der RTC-Baustein ist nur dafür da um die Uhrzeit und das Datum direkt nach dem Hochfahren zu setzen. Vor'm Runterfahren wird die Uhrzeit im RTC mit der GPS-Uhrzeit abgeglichen (auf dem Bus vorhanden).
So, nun bin ich auf Feedback gespannt.
Grüssle
Heinrich
ich möchte hier mein Projekt vorstellen, an dem ich schon seit über einem Jahr arbeite. Und zwar geht es darum das Navigationssystem auf dem BMW E39 (5er, Bj. bis 2003/2004) in meinen BMW 850Ci zu adoptieren.
Ursprünglich war es geplant lediglich nur die Komponenten zu übernehmen, die für's Navigationssystem notwendig sind. Die Navis im BMW unterscheiden sich grundlegend von denen im Benz. Es sind immer "Mehr-Block-Geräte". Das Navi allein besteht im Wesentlichen aus drei Teilen:
-> Display mit Steuerung
-> Navigationsrechner
-> Radio, wird für die Sprachausgabe verwendet
Mittlerweile ist es aber so, dass ich das gesamte "Infotainment System" (ich hasse dieses Wort) übernehme:
-> Display mit Steuerung
-> Navigationsrechner
-> Radio
-> TV-Modul
-> BlueTooth mit Freisprecheinrichtung
-> DSP
Diese ganzen Komponenten unterhalten sich über ein Bussystem. Dabei handelt es sich um den Bus nach ISO 9141, also ein Ein-Draht-Bus-System, auch als KBus oder IBus bezeichnet.
Das Protokoll ist bekannt, nur noch nicht vollständig Reverse Engineered. Es sind noch Teile drin, die unbekannt sind, aber, das macht nichts.
Das "Navi" wird im 850er vollständig autark betrieben. Das heisst, das Navi denkt, es wäre immernoch im Fahrzeug, zu dem es auch hingehört. Folgende zwei Bilder werden es etwas verdeutlichen, hoffe ich.
Erstmal wie es im E39 (5er) aufgebaut ist:
Und so wird es in meinem 850er laufen:
In der Mitte sieht man das Gateway. Oberhalb vom Gateway ist das Navi mit den ganzen Komponenten und unterhalb ist mein 850er.
Damit das Navi funktioniert, muss ich das Kombiinstrument emulieren, weil es im 5er als Busmaster fungiert. Diese Aufgabe übernimmt nun ein AtMega2561. Er steuert das gesamte System, sagt, wann es aufwachen soll, wann es schlafen gehen soll, stellt die Werte für den Bordcomputer zur Verfügung, Datum, Uhrzeit, speichert die Einstellungen, die im Navi gemacht wurden und so weiter, also, wirklich alles.
Mein 850er hat ebenfalls einen Bordcomputer, wo die ganzen Werte wie Verbrauch, Reichweite, ... angezeigt werden. Das Fahrzeug verfügt ebenfalls über einen IBus, der aber mit dem IBus vom 5er gar nichts gemeinsam hat, ausser des Aufbaus der Botschaften, der Rest ist völlig anders. Und wie liebe Gott es so will, hat sich noch keiner die Mühe gemacht es zu reverse engineeren. Bis ich alles beisamen hatte, hat es ca. ein Jahr gedauert, dafür kenne ich jetzt jeden Byte auf dem Bus.
Das Gateway ersetzt zum Fahrzeug hin den Bordcomputer. Diese Seite des Gateways übernimmt dann die Rolle des Bordcomputers und muss sich natürlich genau so verhalten, sprich jede Botschaft quitieren und die richtigen Fragen stellen (initiale Daten beim Hochfahren, ...).
Mittlerweile bin ich soweit, dass das Navi mit allen Komponenten auf meinem Schreibtisch läuft. Ich muss nichts mehr per PC emulieren, alles läuft über den AtMega. Im Moment hängt noch ein AtMega162 dran mit einem Transceiver, es reicht aus um das Kombiinstrument zu emulieren.
So, genug Text, hier die Bilder:
So zeigt sich das Navi nach dem Einschalten:
Das Handy ist über BlueTooth gekoppelt und man kann auch anrufen und sieht auch die eingehende Anrufe:
Hier kam der DSP noch dazu:
Und seine Einstellungen:
Und das ist der Grund, warum es nötig ist, die beide Bus-Systeme zu koppeln. Hier sind die Bordcomputerdaten. Auf dem Bild wurden sie noch manuel gesetzt:
Navigation funktioniert selbstverständlich auch:
Das Gateway besteht aus:
-> AtMega2561
-> 2x Melexis TH3122 (IBus-Transceiver mit hardware Kollisionserkennung)
-> einem 4x Optokoppler (für Zündung an, Licht an, ...)
-> RTC-Baustein mit Backupbatterie
Der RTC-Baustein ist nur dafür da um die Uhrzeit und das Datum direkt nach dem Hochfahren zu setzen. Vor'm Runterfahren wird die Uhrzeit im RTC mit der GPS-Uhrzeit abgeglichen (auf dem Bus vorhanden).
So, nun bin ich auf Feedback gespannt.
Grüssle
Heinrich