Hi,
ich möchte hier mal mein CAN-Bus Projekt vorstellen, an dem ich gerade mit meinem E60 arbeite.
Soweit ich sehe, wurde das Thema hier noch nicht wirklich diskutiert. Gibt es denn in der Richtung keine Bastler hier?
Das ZielSteuern und Auslesen diverser Komponenten meines E60.
Wie?CAN-Bus anzapfen und herausfinden, was dort unterwegs ist und was ich ggf. auch auf den Weg schicken kann.
Warum?Um gewisse Fragen direkt zu beantworten:
Ich erhoffe mir von diesem Projekt keinen großartigen Mehrwert, ich habe da einfach nur Spaß dran!
Die VorbereitungNachdem ich also diese Idee hatte, habe ich mir sofort ein paar Informationen zusammengesucht und bin auf das
Resler-Interface für den IBUS gestoßen. Nachdem es geliefert wurde stellte ich fest, dass der E60 gar keinen IBUS hat.
Na gut, das war dann der Startpunkt für intensiverere Recherchen, bevor irgendwas angefangen wurde.
Auf Seite 9 dieses schönen
PDFs könnt ihr schauen, welchen Bus euer Modell hat. Mein Projekt beschäftigt sich (derzeit) ausschließlich mit K-CAN.
Da ohnehin bereits ein Raspberry Pi mitfährt und ich damit bereits etwas Erfahrung habe, habe ich mir zum Auslesen des CAN-Busses ein entsprechendes
Interface für den Pi bestellt. Wer da versiert ist kann sich das mithilfe des
Schaltplans auch selbst zusammenbasteln - ist dann erheblich günstiger.
Die CAN_H- und CAN_L-Kabel hatte ich bereits am Navi angezapft, um meine nachgerüstete Rückfahrkamera zu installieren.
Ich habe das nun nicht nochmal verifiziert,
diese Quelle sollte aber korrekte Informationen dazu liefern (=> Beim E60 Pins 9 und 11 im großen Stecker).
Strom hole ich mir einfach von einer Sicherung im Handschuhfach. Ich habe es nun am Dauerplus, da mag es aber Stimmen geben, die das nicht haben wollen.
Zur Softwarekonfiguration stellt der Hersteller des CAN-Interfaces eine
übersichtliche Anleitung bereit, der (fast) blind gefolgt werden könnte ("Erst denken, dann machen", sagte mal ein weiser Mann). In Punkt 1.9 wird die Bitrate auf 500000 (=500Kbit/s) gesetzt. Da der K-CAN aber nur mit 100Kbit/s läuft, ändern wir die 5 in eine 1, sodass die Bitrate 100000 genutzt wird (500 Kbit/s führt zur Fehlfunktion des Busses, inklusive einer Dauerfunktion des Scheibenwischers - komfortabel bei Regen).
Wer der Anleitung folgt, hat nun durch candump schon einen Eindruck gewonnen, was auf dem Bus los ist.
Die eigentliche ArbeitMit etwa 180 Nachrichten pro Sekunde sollte man rechnen - bei abgeschalteter Zündung.
Glücklicherweise bin ich mit meiner Idee nicht allein und vor allem nicht zu früh dran:
Trevor Cook hat sich mit seinem E84 schon sehr ausführlich mit dem Thema beschäftigt. Viele dieser Codes gelten auch für meinen E60, was mir dir Arbeit sehr erleichtert hat.
Meine Tabelle, die immer den aktuellsten Projekt-Stand widergibt basiert zu einem Großteil auf seiner Arbeit.
Aktuell habe ich 130 verschiedene IDs gefunden, von denen bisher nur ein Bruchteil zuzuordnen war.
Das mitgelieferte Tool "cansniffer" erleichtert die Arbeit, dennoch ist es sehr mühsam - vor allem da ich nicht genau weiß, was denn nun tatsächlich über diesen Bus läuft.
Die Verarbeitung der Daten mache ich komplett über Bash - das bin ich einfach gewohnt und damit kann ich einigermaßen gut umgehen.
Da der Raspberry Pi fast keine Einschränkungen bezüglich der Programmiersprachen hat, kann da aber jeder nutzen was er für richtig hält.
Was ich aktuell machen kannIn der Hauptsache kann ich alle möglichen Werte auslesen. Ein Auszug meiner Status-Page habe ich mal
kopiert.
Natürlich lässt sich auch einiges senden. Das meiste ergibt sich aus der Tabelle im vorigen Absatz - nämlich alles, was grün hinterlegt ist.
Wichtig beim Senden und Auslesen, wenn das Auto steht: Der sog. Wakeup-Call: 130#45.42.21.8F.FE
Er simuliert ein Einschalten der Zündung und weckt somit alle (oder viele) SGs für ein paar Sekunden auf.
Man muss ihn daher permanent senden, solange man irgendetwas auf dem Bus machen möchte.
Aktuell habe ich noch das Problem, dass im Dunkeln Dank eingeschalteter Licht-Automatik das Licht mit dem Wakeup-Call an, aber nicht wieder aus geht. Das habe ich erstmal hinten angestellt und mache die Status-Abfrage nur noch tagsüber (brauche ich ja nachts ohnehin meist nicht).
Auf- und Zuschließen kann ich bereits über's Handy (wobei auch etwas umständlich nur via SSH).
Was ich nocht nicht kannNatürlich ist dieser Thread nicht ganz uneigennützig: Ich suche Mitstreiter.
Aktuell suche ich nämlich noch vergeblich die Möglichkeit, die Fenster und das Dach zu steuern.
Damit habe ich mich nun bereits so lang beschäftigt, dass ich vermute, dass das gar nicht über diesen Bus läuft.
Dass die Steuerung nicht unbedingt glückt, habe ich bereits in Foren gelesen. Allerdings finde ich auch keinen Hinweis auf die Betätigung der Schalter. Da ich die Fenster allerdings über die Fernbedienung öffnen kann, müssten sie ja eigentlich auch am Bus hängen.
Vielleicht hat ja jemand ein paar Infos, wo das Signal lang läuft.
Außerdem habe ich noch nicht herausgefunden, ob sich zwecks u.g. Lichtorgel die Scheinwerfer (Links und rechts) einzeln ansteuern lassen.
Was für die Zukunft geplant istAm Ende hätte ich gern eine schöne Auf- und Zuschließ-Routine, bei der eine kleine Lichtorgel zum Einsatz kommt.
Aber den Schlüssel zum Aufschließen nutzen kann ja jeder - daher hätte ich gern etwas in Richtung NFC mit dem Handy. Da mir mein Auto natürlich auch niemand klauen soll, mache ich mir da aber etwas mehr Gedanken, bevor ich irgendwas teste.
Auf meiner Seite ist hier allerdings: Je weniger über ein System bekannt ist, desto sicherer ist es.
In etwas fernerer Zukunft möchte ich mich dann auch mit dem PT_CAN beschäftigen, der eher in Richtung Motor zuständig ist.
So, das sollte auch erstmal genug sein - der Thread lässt sich ja erweitern.
Wer etwas spezielles wissen will, kann schließlich auch einfach nachfragen ;)