Navigationssystem *sehr viele Bilder*

Hemi

Aktives Mitglied
Premium Benutzer
30. Nov. 2008
1.103
19
38
Korntal-Münchingen, Germany
Sprachen
  1. ANSI C
  2. C++
  3. PHP
  4. Java
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:

ibus_diagramm.png


Und so wird es in meinem 850er laufen:

diagramm_e31.png


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:

ulf_06.jpg


Das Handy ist über BlueTooth gekoppelt und man kann auch anrufen und sieht auch die eingehende Anrufe:

ulf_07.jpg


ulf_08.jpg


Hier kam der DSP noch dazu:

dsp.jpg


Und seine Einstellungen:

dsp_02.jpg


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:

bc_02.jpg


Navigation funktioniert selbstverständlich auch:

navi4.jpg


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
 
Hallo Hemi,
Geniales Projekt, war bestimmt ein Haufen Arbeit und erst mal da so rein zu finden was da was ist, toll.

Geruß micha
 
Hallo Heinrich!

Finde auch, dass es wahnsinns Projekt ist.

Ich würde mich da aber nicht ran trauen.
Hätte viel zu viel Panik davor, in das Bus-System des Fahrzeugs einzugreifen. :eek:

Vielleicht solltest du dich hier mal mit Markus kurzschließen..... der kennt sich damit besser aus.


Trotzdem ist es interessant zu lesen und anzuschauen!
Viel Spaß weiterhin.... und dass alles ordnungsgemäß arbeitet. :ciao:

Grüße,
Cassio
 
Hallo Heinrich,

absolute Klasse. Allein die Überlegung, sich da überhaupt 'ran zu trauen. Was ist denn dagegen schon 'ne Rennbahnsteuerung - ein paar Widerstände, Kondensatoren und zwei Atmel....;)


Grüsse und guten Rutsch,

Michael

P.S.: Ich nehme den Spruch mit den Aliens a bissel zurück - sind doch nicht alle verblödet....................:rolleyes::D
 
Hallo Heinrich,

also da muss man erst mal durchblicken :), es hört sich schon ziemlich kompliziert an.

Wie hast du denn das Protokoll herausgefunden, durch Recherche oder durch Mitschneiden und Analyse? Hattest du das Bus-System (hardware-seitig) schonmal woanders eingesetzt?

Hängen sicherheitsrelevante Bereiche am System, du musst aufpassen, dass da nichts passiert, wenn du dein System im Auto verwendest. Markus kennt sich da gut aus, hat ja Cassio schon erwähnt.

Noch einen guten Rutsch, aber bitte nicht mit dem Auto ;)

Grüße,
Dirk
 
Danke danke Leute.

@Cassio: Wenn man gesehen hat, wie es läuft, ist es nicht mehr so undurchsichtig.

Die Fahrzeuge haben mehrere Bus-Systeme. Zum Beispiel der angesprochene 5er hat CAN (Motor + Getriebesteuerung + ABS/DSC + ...). Am CAN-Bus hängt alles dran, was mit Antriebsstrang und Sicherheit zu tun hat.

Dann hat er noch ein IBus (um den es hier geht). Das ist ein sog. Innenraumbus oder auch Entertainment-Bus. Hier hängt das Telefon, Navi, Radio, TV-Modul, DSP, ... dran, aber auch ParkDistanceControl, also die Kompfortfunktionen.

Was ich mache ist:

-> im 8er: Ich ersetze mein Bordcomputer (also nur die Anzeige) durch das Gateway. Der Bus im 8er ist sehr einfach aufgebaut. Das EKM (also Karosseriemodul) sendet in bestimmten Zeitabständen die Werte an den Bordcomputer, der quitiert es dann und fertig. Sollte drei Botschaften unquitiert bleiben, sendet Karosseriemodul nichts mehr. Aber, es geht nichts kaputt, kein Notprogramm oder Änliches.

-> im Navi: Hier ist es genau so. Hier emuliere ich das Kombiinstrument. Herzstück hier ist der Navirechner. Wenn das System hochfährt, melden sich alle Komponenten an. Alle 30 Sekunden wird eine "Alive-Message" versendet, die quitiert werden muss. Bleiben drei Botschaften unquitiert, wird das Gerät deaktiviert und aus der Liste rausgeschmissen. Fertig.

@Dirk:

-> Sicherheitsrelevante Bereich: Nein. Das einzige Signal, was abgegriffen wird, ist vom ABS-Steuergerät. Aber, das habe ich machen lassen von jemanden, der sich damit auskennt und solche Sachen täglich macht. Es ist getestet und es ist okay und funktioniert.

-> Protokoll: Es gibt eine Beschreibung für das Protokoll des Navisystems. Der Punkt ist nur der, dass im 8er das Protokoll änlich ist, aber nicht gleich. Also, der Aufbau der Nachricht ist gleich, aber die IDs sind anders. Diese galt es rauszufinden.

Zuerst habe ich mir den Zugang zum Bus gelegt, dann mein Laptop genommen und mit einem COM <-> Bus Umsetzer gesnift. So hatte ich die Botschaften. Dann musste ich rausfinden, was welche Botschaft bedeutet und wie die Werte abgelegt sind.

Zum Beispiel:

Die Botschaft sieht so aus:

02 07 FF 82 27 12 05 02 4A

02 ist der Sender, hier ist das Karosseriemodul
07 ist Länge der Botschaft, 7 Byte, gezählt ab dem nächsten Byte
FF ist der Empfänger, hier handelt es sich um eine Broadcast-Botschaft
82 ist die Funktion. Die Besagt, welche Art der Daten jetzt kommen. 82 heisst Datum
27 12 05 02 heisst 27.12.2005, 02 ist Wochentag, also Dienstag
4A ist XOR-CRC

Im Bordcomputer gibt es drei Arten der Meldungen:

-> "Komfortmeldungen", wie Datum, Uhrzeit, Verbrauch1 und 2, ...
-> "CheckMeldungen", die kommen vom CheckControl, zum Beispiel "Abblendlicht defekt", "Wischwasserstand prüfen", "AHK inaktiv", ...
-> "Textmeldungen", hier kann man einen eigenen Text auf den BC schreiben.

Achja, was ich noch ganz vergessen habe, durch dieses Projekt kam ich erst dazu irgendwas mit Mikrocontroller zu machen. Davor hatte ich kein Plan davon. :) Aber, das Wissen über serielle Bussysteme war schon lange da, durch meinen Arbeitgeber.

Grüssle
Heinrich
 
So, genau habe ich eine erfreuliche Mail von Platinenhersteller bekommen, dass meine Platine auf dem Weg zu mir ist. Na das ist doch mal eine super Sache.

Bestellt habe ich es am 04.01 und heute wurde sie verschickt, sind also gerade mal 4AT. Bestellt wurde "Standart, 8-9 AT". Wow, sage ich da nur.

Wenn die Qualität genau so ist, wie die Geschwindigkeit, dann passt es.

Grüsse
Heinrich
 
So, die Platine ist da. Sieht super aus, aber schaut selbst.

Die Bauteile sind einfach provisorisch drauf gelegt.

Grüsse
Heinrich
 

Anhänge

  • GW2561_fertig.jpg
    GW2561_fertig.jpg
    174,8 KB · Aufrufe: 94
Hallo Heinrich!

Die Platine sieht wirklich gut aus... und die Lieferzeit geht ja wohl auch in Ordnung!

Dann wünsch ich mal viel Spaß beim "bruzzeln". ;)


Grüße,
Cassio
 
Und genau zum Thema "Brutzeln" habe ich npaar Fragen.

Ich habe diese Lötstation: Klick mich Und dazu alle möglichen Lötspritzen: spitze, abgeschrägte, Bleistift, Meissel...

Frage 1: Welche Temperatur soll ich wählen?

Ich wollte dieses Flussmittelgel kaufen, damit die Pads bestreichen, dann die IC ausrichten und die Pins an den Ecken verlöten.

Dann ohne Rücksicht auf die Brücken die restliche Pins verlöten, mit diesem Lötzinn.

Dann mit Entlötlitze die Brücken wegmachen.

Frage 2: Dieses Vorgehen richtig?

Frage 3: Welche Spitze ich dafür am besten geeignet? Ich denke, die runde abgeschrägte?

Danke & Grüsse
Heinrich
 
Hallo Heinrich,

Und genau zum Thema "Brutzeln" habe ich npaar Fragen.

Ich habe diese Lötstation: Klick mich Und dazu alle möglichen Lötspritzen: spitze, abgeschrägte, Bleistift, Meissel...
80W reicht absolut. Bei mir hab ich nur ne alte 60W analoge Ersa MS6000.

Frage 1: Welche Temperatur soll ich wählen?
Ich löte bei SMD wegen der dünnen Spitze (0,4-0,8mm) und auch der Länge
der Spitze mit 400°C damit schnell genug Hitze nachgeliefert werden kann.
Aber unter 350°C würde ich nicht gehen. Muß man natürlich flott löten oder
mal öfters die Spitze reinigen weil das Flußmittel an der Spitze sonst verbrennt.

Ich wollte dieses Flussmittelgel kaufen, damit die Pads bestreichen, dann die IC ausrichten und die Pins an den Ecken verlöten.
EDSYN FL 22 :: Flußmittelgel, f. Fine-Pitch u. SMD-Anwendungen
keine schlechte Wahl! Ist zwar teuer aber auch gut.

Dann ohne Rücksicht auf die Brücken die restliche Pins verlöten, mit diesem Lötzinn.
Also das Lötzinn mit 0,5mm ist OK. Aber ich nehme wie gesagt 0,4mm oder
0,8mm Lötspitzen in Bleistiftform. Bei Reichelt als "SPITZE 832UD" und als
"SPITZE 832SD" zu finden. Und durch die Länge der Spitze nehme ich die
400 Grad. Ich verlöte allerdings die Pins einzeln. Also kein drüberwegbrutzeln.

Dann mit Entlötlitze die Brücken wegmachen.

Frage 2: Dieses Vorgehen richtig?

Frage 3: Welche Spitze ich dafür am besten geeignet? Ich denke, die runde abgeschrägte?
Ich halte von dem drüberwegbrutzeln persönlich nix. Ist meiner Meinung nach
rumsauen und danach mit nem Waschlappen (Entlötlitze) die Sauerei wieder
versuchen wegzumachen. Soll aber bei manchen ja ganz gut funktionieren.
Ist aber wohl auch ein wenig persönliche Einstellung wie man die SMDs
lötet ;)

Also mit ner 0,4er oder 0,8er Spitze geht das bei dem Rastermaß von nem
Mega128 noch absolut problemlos. Bei dem Xilinx CPLD bei dem ich eine
Lötbrücke entfernen mußte war das mit 0,5mm Rastermaß aber nicht mehr
so spaßig. Aber dank dem Lötlack SK10 von Kontaktchemie hat sich das
Lötzinn wieder dahin verzogen wo es hingehört. Also das Zeugs kann ich
auch für die Vorbehandlung einer Platine empfehlen. Ist auch recht günstig.

Für Standard-Bauteile nehme ich eine 1mm Bleistift-Lötspitze in der kurzen
Form. Oder für etwas dickere Lötstellen eine 2,2mm Meißelförmige.

Gruß
Dino
 
EDSYN FL 22 :: Flußmittelgel, f. Fine-Pitch u. SMD-Anwendungen
keine schlechte Wahl! Ist zwar teuer aber auch gut.

Gut, dann wird er auch gekauft.

Ich halte von dem drüberwegbrutzeln persönlich nix. Ist meiner Meinung nach
rumsauen und danach mit nem Waschlappen (Entlötlitze) die Sauerei wieder
versuchen wegzumachen. Soll aber bei manchen ja ganz gut funktionieren.
Ist aber wohl auch ein wenig persönliche Einstellung wie man die SMDs
lötet ;)

Nein, nicht drüberziehen, schon einzeln verlöten, aber keine Lötbrücken gleich wegmachen, sondern erst nach dem man mit allen fertig ist.

Also mit ner 0,4er oder 0,8er Spitze geht das bei dem Rastermaß von nem
Mega128 noch absolut problemlos. Bei dem Xilinx CPLD bei dem ich eine
Lötbrücke entfernen mußte war das mit 0,5mm Rastermaß aber nicht mehr
so spaßig. Aber dank dem Lötlack SK10 von Kontaktchemie hat sich das
Lötzinn wieder dahin verzogen wo es hingehört. Also das Zeugs kann ich
auch für die Vorbehandlung einer Platine empfehlen. Ist auch recht günstig.

Für Standard-Bauteile nehme ich eine 1mm Bleistift-Lötspitze in der kurzen
Form. Oder für etwas dickere Lötstellen eine 2,2mm Meißelförmige.

Gruß
Dino

Gut, dann versuche ich es mal.

Grüsse
Heinrich
 
Es tut sich was, zwar ganz langsam, aber immerhin, tut sich was.

Ich habe angefangen die Platine zu bestücken, sieht man im Anhang.

Ich habe noch versucht eine Nahaufnahme der Lötstellen hin zu kriegen, ist auch mehr oder weniger geglückt, hoffe, man kann etwas erkennen.

Nun könnt Ihr Euch über meine Lötkünste auslassen :)

Grüssle
Heinrich
 

Anhänge

  • 2561_2.jpg
    2561_2.jpg
    86 KB · Aufrufe: 67
  • 2561_1.jpg
    2561_1.jpg
    134,2 KB · Aufrufe: 46
Hallo Heinrich,

Nun könnt Ihr Euch über meine Lötkünste auslassen :)
also das sieht ja voll Sch.. aus !! :D Viel zu viel Lötzinn :p Wo hast du denn
das gelernt ? ;) Das hätte ich ja viel besser gekonnt :rolleyes: Geh einfach
noch mal in die Lehre ;)

Genug gemotzt ? :D :D :cool:

Gruß
Dino
 
Nun könnt Ihr Euch über meine Lötkünste auslassen :)

Hallo Heinrich!

Hui.... sieht super aus!
Deine Lötkünste passen prima zur Profi-Platine! :)

So eine Platine vom Profi macht doch immer gleich etwas her!
Nicht wie unser eins, mit den selbstgeätzen aus dem Bastelkeller. ;)

Kann sich wirklich alles sehen lassen!
Bin schon auf die Bilder der fertigen Einheit gespannt. :)

Schöne Grüße,
Cassio
 
Sodelle, der 64-Beiner ist drauf, aber es gefällt mir nicht so ganz, wie der drauf ist. Auf einer Seite passen die drei äusseren Pins irgendwie nicht 100% auf die Pads, der Rest passt optimal. Komisch eigentlich. :hmpf:

Naja, sieht selbst.

Grüsse
Heinrich
 

Anhänge

  • 64fuessler.jpg
    64fuessler.jpg
    85,3 KB · Aufrufe: 58
  • platine_001.jpg
    platine_001.jpg
    155 KB · Aufrufe: 38
Sodelle, dann hole ich mal meinen Thread aus der Versenkung.

Eins vorweg: Das Projekt wurde (noch) nicht eingestampft, musste aber vieles an der Hardware ändern, fahrzeugbedingt. Ich habe das Display, Radio und das Kabelbaum ausgetauscht, der Rest ist gleich geblieben.

Display:

cid_zu.jpg


Und hier das Radio:

cid_radio.jpg


Und so sieht es auf dem Tisch aufgebaut aus:
geschlossen.jpg


Angeschlossen ist im Moment nur Navirechner (das Ding unter dem Radio mit dem DVD-Zeichen), der Rest liegt im Schrank Ich will den Bustrafik im Rahmen halten, sonst blickt man da gar nichts mehr.

Im Vordergrund ist eine Platine, mit der ich mein Steuergerät emuliere, sie steuert das ganze System. Da sieht man auch das aufgesteckte Bus-Interface, daneben ist ein AVR Dragon. :)

Ich habe natürlich auch mal mit allen Teilnehmer das Ganze getestet:

volles_menue.jpg


Schick oder?

Ich habe ein Video gemacht, allerdings ist es ca. 200MB gross, als avi. Wie und womit kann ich es umwandeln, in flv oder sowas?

Achso, damit Ihr in etwa wisst, um was es geht, hier mal ein kleiner Mitschnitt der Bus-Kommunikation: [http://www.mein-bmw-850ci.de/images/phocagallery/Navi/Z4/LogFiles/logz4_2010_09_19.log]klick mich[/url]

Grüssle
Heinrich
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)