Hinweis: Du musst Dich registrieren wenn Du einen Beitrag verfassen willst
Zum registrieren, klicke hier. Die Registrierung ist kostenlos.


Antwort erstellen
Benutzername:
Passwort:
Antwort: Hilfe zum Editor

 
Deine Signatur aus deinem Profil einfügen.
(Email Benachrichtigung, wenn auf das Thema geantwortet wird) (Hilfe)
 
T H E M A     R Ü C K B L I C K
chris30o0
Hauptthema:
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 Ziel
Steuern 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 Vorbereitung
Nachdem 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 Arbeit
Mit 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 kann
In 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 kann
Natü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 ist
Am 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 ;)
Hojo29
Man weiß aber immer noch nicht genau wozu die ganze Action ?
Und wenn ein LM2 verbaut ist kann man die Lampen so codieren das sie beim aufsperren leuchten und beim zusperren gedimmt aus gehen.
Und mit Inpa kann man die Lichtanlage ansteuern genau so die Fensterheber.
chris30o0

Warum?
Um gewisse Fragen direkt zu beantworten:
Ich erhoffe mir von diesem Projekt keinen großartigen Mehrwert, ich habe da einfach nur Spaß dran!
(Zitat von: chris30o0)


Was genau man damit machen kann, ergibt sich ja aus dem Google-Doc.

Es geht hier überhaupt nicht um's Codieren, sondern darum, dem System live Anweisungen zu erteilen, bzw. live den aktuellen Status auszulesen - und zwar ohne den OBD-Stecker.

Bzgl. LM: Ich habe LM1, kann aber trotzdem beim Aufschließen dafür sorgen, dass das Licht angeht.
Die eigentliche Frage war, ob sich links/rechts einzeln steuern lässt (ggf. auch rein technisch, vielleicht ist das ja nur ein Kabel, dann ginge es nicht).

Wie genau INPA im Hintergrund funktioniert, damit habe ich mich nicht beschäftigt.
Sollte es ebenfalls einfach nur Signale an den CAN-Bus senden, weiß ich immerhin, dass es grundsätzlich auch mit meinem Setup möglich sein muss.
inZaneX
Heyhey,
wollte mal fragen wie der Aktuelle Stand aussieht?

Habe das selbe vorhaben gerade bei meinem E91 geplant. Raspberry ist bereits an das CIC angebunden. Mit dem CAN hab ich noch diverse Probleme.
Da bin ich noch am tüfteln. Vlt kann man sich hier oder via PN mal austauschen.

MfG
zentaur1ger
Ja da wäre ich auch neugierig, ob es dazu einen neuen Stand gibt.
Ich komme aber aus einer ganz anderen Richtung. 
Ich würde nämlich gern herausfinden, was genau eigentlich vom CIC gesteuert wird,
bzw. was passiert, wenn ich es entferne.

Warum könnte man ein CIC entfernen wollen, wird sich sicher mancher fragen.
Die Antworten sind einfach:
Es ist langsam. Sehr langsam. Nicht upgradefähig (selbst die Festplatte hat noch einen IDE Anschluss)
und leider gibts für das Gesamtsystem seitens BMW auch keine Upgrades. DAB+ z.B. ist da ein Totalausfall.
Die Bastellösungen mit den emulierten CD Wechslern finde ich da nicht schön.
Bisweilen habe ich ein Tablet per BT mit dem CIC verknüpft, aber das funktioniert a) nicht als Radio
b) geht keine externe GPS/MoFu Antenne

Also das ist schon nicht ganz verkehrt, sieht aber komisch aus.
Und eigentlich wäre mit ein modernes DoppelDIN Radio mit verknünftiger Handyanbindung lieber.
 
chris30o0
Das Projekt liegt derzeit leider etwas auf Eis.
Es gibt momentan andere Dinge, die dringender gemacht werden müssen.

Ich habe vor ein paar Wochen mal alles rausgeholt, da ich - zumindest die CAN-Auswertung - auf einen stromsparenden esp8266 verschieben will und damit den Raspberry Pi ersetzen, der innerhalb weniger Tage die Batterie leer saugt.

Was das CCC/CIC sendet weiß ich leider nicht und damit werde ich mich voraussichtlich auch nicht beschäftigen.

Bearbeitet von: chris30o0 am 08.06.2017 um 17:26:22
evinrude
 

Das Projekt liegt derzeit leider etwas auf Eis.
Es gibt momentan andere Dinge, die dringender gemacht werden müssen.

Ich habe vor ein paar Wochen mal alles rausgeholt, da ich - zumindest die CAN-Auswertung - auf einen stromsparenden esp8266 verschieben will und damit den Raspberry Pi ersetzen, der innerhalb weniger Tage die Batterie leer saugt.

Was das CCC/CIC sendet weiß ich leider nicht und damit werde ich mich voraussichtlich auch nicht beschäftigen.

Bearbeitet von: chris30o0 am 08.06.2017 um 17:26:22
(Zitat von: chris30o0)


  Hi @chris30o0

ich hole mal den Thread aus der Schublade und wollte erstmal sagen, dass ich dein Vorhaben sehr gut finde.
Um das Rad nicht neu zu erfinden, wie weit bist du denn heute und was ist der letzte Stand und wo eckt es?

Auch ich beschäftige mich derzeit mit dem K-BUS ( E60 / E61 ) und würde gerne tiefer in deine Arbeit mit einsteigen und das ganze auf den ESP32 (HW CAN ) / ESP32S3 ( MCP /TJA ) und letztlich ESP32P4 portieren. Ich strebe ein UI mit Benutzer Eingaben/Abfragen an und würde das sehr gerne auch in Android / Linux / PC kommunizieren ( ssh ).

Sollte dann auch auf Github erweiterung/fork landen.

Bist du noch dabei? Gelten die E60 Codes auch für den E61? gibt es unterschiede VFL NFL ?

lg


(Edit: Typo )

 

Bearbeitet von: evinrude am 25.06.2024 um 22:50:00
chris30o0
Es gibt dazu leider kein Update und meinerseits wird es auch keins mehr geben, da ich vor 3 Jahren auf den F10 umgestiegen bin. Dort sind solche Bastelaktionen derzeit nicht geplant.Ich würde mich aber freuen, wenn der Thread weiterlebt, ich lese auf jeden Fall mit!
 
evinrude
 

Es gibt dazu leider kein Update und meinerseits wird es auch keins mehr geben, da ich vor 3 Jahren auf den F10 umgestiegen bin. Dort sind solche Bastelaktionen derzeit nicht geplant.Ich würde mich aber freuen, wenn der Thread weiterlebt, ich lese auf jeden Fall mit!
(Zitat von: chris30o0)


  Hi chris30o0,

danke für's reply. F10 kommt auch dran :)
Bin auf deinen Post hier aufmerksam geworden, da ich CAN ID's gesucht habe und ob schon jemand was angefangen hat. Fürs erste steige ich jetzt mal beim E61 ( mich nervt das CCC ) ein und hängle mich zum E64 und dann durch zum F10. Meine erste Option wäre Linux direkt auf dem ESP  und User Code Anwendung ( Python, LUA ), also nicht mehr IDF / Arduino abhängig, es werden dann Varianten DBT (Datenbanktabellen) E60, E61, E63, E64 usw je nachdem wo halt Unterschiede sind. Linux läuft stable, aktuelles MainLinux 6.9 bzw 6.10. grafische Unterstützung über FB / I2C, SPI / I2S / RGB Panel, LVDS, HDMI. GUI Schnittstellen sind soweit lauffähig und fertig.Wenn das GUI an Fahrt annimmt, denke ich, wird es hier und da den einen oder anderen geben, der dem ganzen einen coolen netten Look einhaucht. Bin erstmal nur an der Datenschnittstelle interessiert und die Verwendbarkeit derer für Info / ggfs Änderung ( Datum, Zeit, Klimaautomatik usw )

Weisst du eventuell noch wie du auf die 74,0 °C rechnerisch gekommen bist? 
7A wären 122, sollten denke ich dann 4C sein bei 74,0 °C. Nur Vermutung.

Werde da erstmal mich umsehen, wie die (Byte) Daten zu handhaben sind, was geschiftet oder umgewandelt werden muss, welche Datenpaare zu was gehören.

Sobald sich bei mir was ernsthaftes tut, werde ich hier mal berichten. Ich lese mich die Sommer Tage durch, sammle Infos, rückfrage das eine oder andere, werde ein erstes Test PCB  mit Touch Panel für den Eigenversuch aufbauen, Github erstellen - es wird zum Herbst/Winter Projekt überführt, also etwas auf längere und dauerhafte Zeit angelegt mit Ziel : GUI 

bis dann
lg

Bearbeitet von: evinrude am 25.06.2024 um 23:46:50

Bearbeitet von: evinrude am 26.06.2024 um 00:30:28
chris30o0
Dein Ansatz klingt schonmal gut - möglichst minimales Setup. Mein RPi war schon ziemlich overkill damals.
Hübsch machen kann man es irgendwann, Hauptsache es funktioniert!

Wie die einzelnen Werte zustande kamen, kann ich nicht mehr sagen. Du müsstest im Doc allerdings alle Formeln sehen können. Es wird sehr viel mit Korrekturwerten gearbeitet. Alles wo irgendwie komisch rumgerechnet wird, stammt aus der genannten Quelle von Trevor Cook. Der Link oben funktioniert nicht mehr, allerdings habe ich herausgefunden, dass es hierhin umgezogen ist. (OT: Habe gesehen dass der Typ auch den Polestar2 auseinandergenommen hat :D)

Es juckt mich gerade auf jeden Fall wieder in den Fingern..