Jump to content
local stone

Smart 451 CDI Daten über CAN-Bus auslesen

Empfohlene Beiträge

Hallo liebe Smart-faszinierte...

Ich habe ein kleines Projekt, das ich endlich mal machen will.

Über OBD2 mit einem CAN-Adapter Daten auslesen und Filtern (Füllstand Tank, Öltemp, Kühlflüssigkeittemp usw).

Dazu folgende Bauteile:

 

https://www.amazon.de/AZDelivery-MCP2515-Shield

https://www.amazon.de/gp/product/B081N7G2BR/ref=ewc_pr_img_1?smid=A3LR51RN935ZZX&psc=1

Einen Arduino habe ich bereits.


Aufbau:

----------------------------------------------------------------------------

Verbindung des MCP2515-Moduls mit dem OBD2-Port

OBD2-Port MCP2515-Modul
Pin 6 (CAN-H) CAN-H
Pin 14 (CAN-L) CAN-L
Pin 4 (GND)

GND

-----------------------------------------------------------------------------

 

 

Ist das bei dem Smart technisch möglich? Ich muss nur das wissen und vielleicht ein paar nützliche Tipps falls das jemand schonmal gemacht hat.

 

Danke!

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ja, ist möglich. Beim 451 ist im Gegensatz zum 450 ja praktischerweise der CAN-Bus gleich über die OBD-Dose erreichbar.

 

Wenn du die Nachrichten-IDs mit den Werten noch nicht kennst, ist die Analyse mit einem Arduino aber recht mühsam, da man von der Masse der Daten sofort erschlagen wird.

Ich habe mir dafür eine Lösung mit einem RaspberryPI Zero W und diesem Adapter (KLICK) gebaut, als WLAN AccessPoint konfiguriert und eine Powerbank drunter geschnallt. Zugriff dann drahtlos mit dem Notebook über SSH. 

Der Adapter wird von Linux unterstützt und man kann z.B. die CAN-Tools verwenden.

Damit geht die Auswertung, in welchen Nachrichten sich die gesuchten Werte verstecken, viiiiel einfacher und schneller :classic_smile:

 

raspi_can_interface.jpg.5ecc3f9f4749c9c76678e6e55ec0ee4b.jpg

 

Vieles von dem, was über die Diagnose als Parameter ausgelesen werden kann, liegt aber auch gar nicht direkt auf dem CAN-Bus. Für diese Werte müsstest du dann noch zusätzlich das Diagnoseprotokoll emulieren, um die Parameter aktiv beim Steuergerät abzufragen, so wie es auch das Diagnosegerät macht.

Das Diagnoseprotokoll selbst läuft beim 451 dann aber auch wieder auf dem CAN-Bus, kann also ebenfalls recht einfach analysiert werden, wenn du dich parallel zum Diagnosegerät an den Bus klemmst und den Datenverkehr beobachtest.

 

bearbeitet von 450-3

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 7 Minuten schrieb 450-3:

Ja, ist möglich. Beim 451 ist im Gegensatz zum 450 ja praktischerweise der CAN-Bus gleich über die OBD-Dose erreichbar.

 

Wenn du die Nachrichten-IDs mit den Werten noch nicht kennst, ist die Analyse mit einem Arduino aber recht mühsam, da man von der Masse der Daten sofort erschlagen wird.

Ich habe mir dafür eine Lösung mit einem RaspberryPI Zero W und diesem Adapter (KLICK) gebaut, eine Powerbank drunter geschnallt und als WLAN AccessPoint konfiguriert. Zugriff dann drahtlos mit dem Notebook. 

Der Adapter wird von Linux unterstützt und man kann z.B. die CAN-Tools verwenden.

Damit geht die Auswertung, in welchen Nachrichten sich die gesuchten Werte verstecken, viiiiel einfacher und schneller :classic_smile:

 

raspi_can_interface.jpg.5ecc3f9f4749c9c76678e6e55ec0ee4b.jpg

 

Vieles von dem, was über die Diagnose als Parameter ausgelesen werden kann, liegt aber auch gar nicht direkt auf dem CAN-Bus. Für diese Werte müsstest du dann noch zusätzlich das Diagnoseprotokoll emulieren, um die Parameter aktiv beim Steuergerät abzufragen, so wie es auch das Diagnosegerät macht.

Das Diagnoseprotokoll selbst läuft beim 451 dann aber auch wieder auf dem CAN-Bus, kann also ebenfalls recht einfach analysiert werden, wenn du dich parallel zum Diagnosegerät an den Bus klemmst und den Datenverkehr beobachtest.

 

Das nenne ich mal informativ!. Mega!. Ich habe noch einen esp8266. Müsste mit dem ja auch gehen weil er auch wlan hat, oder sind die Datenmengen so groß? Welche Libary nutzt du auf dem Raspi, bzw wie funktioniert es im Detail? Dann bestelle ich das OBD Kabel oder vielleicht ein günstigeres und den Can-bus Adapter.

 

Für die Analyse gibt es ja dann relativ praktische Tools, die die Auswertung erleichtern.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Auf dem PI Zero (nicht die Pico-Version mit dem Microcontroller sondern nur der etwas geschrumpfte Standard-PI) läuft bei mir raspbian Linux mit dem Paket "can-utils".
Damit gibt es dann ein paar Kommandozeilen Tools zur Auswertung, z.B. den cansniffer, der aus den Tausenden Nachrichten pro Sekunde schön übersichtlich nur die anzeigt, die sich wirklich geändert haben.

Wenn du also wissen willst, ob der Status der Klimaanlage auf dem Bus verfügbar ist, startet man das Tool, schaltet die Klima einmal ein und aus und sieht sofort, welche Nachrichten sich geändert haben und interessant sein könnten.

 

Es gibt auch Tools, um Nachrichten zu erzeugen und dann zu sehen was passiert. Damit habe ich am Kombiinstrument die verfügbaren Symbole in der Ganganzeige gefunden, mit einem Shellscript, dass einfach über zwei Schleifen alle Bits durchprobiert hat. 

Das kann man natürlich auch alles irgendwie in den Arduino programmieren aber mir fehlt da die Flexibilität um schnell mal etwas auszuprobieren. Und warum sich unnötig Arbeit machen, wenn es die Tools schon gibt.

 

Sobald dann alle Infos bekannt sind und es an die Umsetzung des Projekts geht, nehme ich natürlich auch einen Arduino oder einen ESP. Allein schon weil der PI Zero mit seinem fetten Betriebssystem für die meisten Projekte total überdimensioniert ist und auch nicht echtzeitfähig.

 

bearbeitet von 450-3

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 1 Minute schrieb 450-3:

Auf dem PI Zero (nicht die Nano-Version mit dem Microprozessor sondern nur der etwas geschrumpfte Standard-PI) läuft bei mir raspbian Linux mit dem Paket "can-utils".
Damit gibt es dann ein paar Kommandozeilen Tools zur Auswertung, z.B. den cansniffer, der aus den Tausenden Nachrichten pro Sekunde direkt nur die anzeigt, die sich wirklich geändert haben.

Wenn du also wissen willst, ob der Status der Klimaanlage auf dem Bus verfügbar ist, startet man das Tool, schaltet die Klima einmal ein und aus und sieht sofort, welche Nachrichten sich geändert haben und interessant sein könnten.

Es gibt auch Tools, um Nachrichten zu erzeugen und dann zu sehen was passiert. Damit habe ich am Kombiinstrument die verfügbaren Symbole in der Ganganzeige gefunden, mit einem Shellscript, dass einfach über zwei Schleifen alle Bits durchprobiert hat. 

Das kann man natürlich auch alles irgendwie in den Arduino programmieren aber mir fehlt da die Flexibilität um schnell mal etwas auszuprobieren. Und warum sich unnötig Arbeit machen, wenn es die Tools schon gibt.

 

Sobald dann alle Infos bekannt sind und es an die Umsetzung des Projekts geht, nehme ich natürlich auch einen Arduino oder einen ESP. Allein schon weil der PI Zero mit seinem fetten Betriebssystem für die meisten Projekte total überdimensioniert ist und auch nicht Echtzeitfähig.

Cool, leider habe ich aktuell nicht so viel Zeit, habe eine Petition gegen 30 auf der Bundesstraße gestartet und bin ziemlich eingebunden (6800 Unterschriften bis jetzt).

Mein Smart mag 30 nicht. 40 oder 50 war ihm doch lieber. Vor allem weil der Spritverbrauch steigt durch das ganze Stop and Go.

 

Ich werde auf dich zurückkommen. Ich glaube ich habe sogar nen raspi 4 noch da. Dann hole ich mir den can-hat für raspi und den für den ESP. Macht das Sinn?

 

Danke für die Hilfe

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Das kommt ja wie immer drauf an :classic_smile:

Ich habe mal einen Controller für das Kombiinstrument des 450 mit einem kleinen Arduino gebaut. Die Nachrichten mussten mit 10ms getacktet sein, sonst gingen schnell die Warnlampen an. War kein Problem aber eben auch nicht so komplex.

 

Wenn du z.B. einen Datenlogger bauen willst, der dir bestimmte Werte auf eine SD Karte schreibt und vielleicht noch ein paar Sachen berechnet, könnte es aber schon wieder knapp werden, da die kleinen Arduinos nur einen einzelnen, im Vergleich zum ESP recht langsamen Prozessorkern haben, der das Timing für CAN und SD zusätzlich zu deinem Code allein schaffen muss.

 

Der ESP8266 hat da schon mehr Dampf, aber nur wenn WLAN deaktiviert ist, sonst geht ihm schnell die Luft aus.

Damit habe ich einen Feinstaubsensor mit einer komplexen Alarmfunktion mit ESPHome gebaut. Das ging eine Weile gut aber irgendwann war der Code dann zu rechenintensiv und das WLAN wurde instabil und es gingen keine OTA-Updates mehr. Musste dann auf den ESP32 umsteigen und damit läuft wieder alles wunderbar.

 

Den ESP32 gibt es mit zwei Kernen aber da musst du dich selbst darum kümmern, dass dein Code auch auf beiden Kernen ausgeführt wird. Von allein passiert das nicht.

 

Wenn es aber nur ein temporäres Projekt ist, könntest du auch einfach probieren, alles direkt auf dem Raspbery zu machen. Der Adapter von Waveshare ist kompatibel zu socketcan und damit dürfte es für fast alle Programmiersprachen irgendeine Anbindung geben. Muss dann halt nur immer booten und Linux ist ja auch nicht für jeden so der Hit :classic_wink:

 

Der Arduino hat den Vorteil, dass es schon tonnenweise Beispiele und Libraries für alles Mögliche im Netz gibt. Je weiter man sich vom De-facto-Standard weg bewegt, desto holperiger wird es.

 

bearbeitet von 450-3

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 2 Stunden schrieb 450-3:

Das kommt ja wie immer drauf an :classic_smile:

Ich habe mal einen Controller für das Kombiinstrument des 450 mit einem kleinen Arduino gebaut. Die Nachrichten mussten mit 10ms getacktet sein, sonst gingen schnell die Warnlampen an. War kein Problem aber eben auch nicht so komplex.

 

Wenn du z.B. einen Datenlogger bauen willst, der dir bestimmte Werte auf eine SD Karte schreibt und vielleicht noch ein paar Sachen berechnet, könnte es aber schon wieder knapp werden, da die kleinen Arduinos nur einen einzelnen, im Vergleich zum ESP recht langsamen Prozessorkern haben, der das Timing für CAN und SD zusätzlich zu deinem Code allein schaffen muss.

 

Der ESP8266 hat da schon mehr Dampf, aber nur wenn WLAN deaktiviert ist, sonst geht ihm schnell die Luft aus.

Damit habe ich einen Feinstaubsensor mit einer komplexen Alarmfunktion mit ESPHome gebaut. Das ging eine Weile gut aber irgendwann war der Code dann zu rechenintensiv und das WLAN wurde instabil und es gingen keine OTA-Updates mehr. Musste dann auf den ESP32 umsteigen und damit läuft wieder alles wunderbar.

 

Den ESP32 gibt es mit zwei Kernen aber da musst du dich selbst darum kümmern, dass dein Code auch auf beiden Kernen ausgeführt wird. Von allein passiert das nicht.

 

Wenn es aber nur ein temporäres Projekt ist, könntest du auch einfach probieren, alles direkt auf dem Raspbery zu machen. Der Adapter von Waveshare ist kompatibel zu socketcan und damit dürfte es für fast alle Programmiersprachen irgendeine Anbindung geben. Muss dann halt nur immer booten und Linux ist ja auch nicht für jeden so der Hit :classic_wink:

 

Der Arduino hat den Vorteil, dass es schon tonnenweise Beispiele und Libraries für alles Mögliche im Netz gibt. Je weiter man sich vom De-facto-Standard weg bewegt, desto holperiger wird es.

 

Als angehender Fachinformatiker ist Linux kein Problem. Hatte paar Smarthome Projekte, Trafficfilter, Visualisierung etc. Bin aber leider noch nicht allzu tief in der Materie drinnen. Ich würde mich einfach bei dir melden wenn alles soweit ist.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Na dann bist du ja schon mal gut gerüstet. 

Kannst mich gerne kontaktieren. Es sind auch noch ein paar andere hier in dem Thema drin, da bleibt dann hoffentlich keine Frage offen :classic_smile:

 

bearbeitet von 450-3

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Das hab ich auch schon hinter mir, der Smart ist ein super Auto um den Canbus und das UDS Protokoll besser zu verstehen. Da Wenige Steuergeräte und sehr wenige CAN iDs.

34d1ef1a-ffa9-488b-8669-fb18b2655535.thumb.jpg.d8cc1df02f7047aac6fdde793e193dd9.jpgdwd.thumb.jpg.6c75f4e0fde1041a0cde900367c1c942.jpgd4451162-c3cd-44d1-9f10-467cd325e6b9.thumb.jpg.5767163d07b0a050673db28013c5bfac.jpg.bc5f1295f0e97cd83daf3e02e4fbdb64.jpg


forum.jpg

2010 // Smart ForTwo Brabus Xclusive 102 //

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Am 1.12.2024 um 21:39 schrieb Petros_T:

Das hab ich auch schon hinter mir, der Smart ist ein super Auto um den Canbus und das UDS Protokoll besser zu verstehen. Da Wenige Steuergeräte und sehr wenige CAN iDs.

34d1ef1a-ffa9-488b-8669-fb18b2655535.thumb.jpg.d8cc1df02f7047aac6fdde793e193dd9.jpgdwd.thumb.jpg.6c75f4e0fde1041a0cde900367c1c942.jpgd4451162-c3cd-44d1-9f10-467cd325e6b9.thumb.jpg.5767163d07b0a050673db28013c5bfac.jpg.bc5f1295f0e97cd83daf3e02e4fbdb64.jpg

Woher sind die auf den Bildern?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Am 6.12.2024 um 19:25 schrieb Funman:

Hat Petros selbst gemacht. 

Ah ja habe es jetzt auch gesehen 🙂 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 25 Minuten schrieb local stone:

Okay ich finde das Pinout Can H/L nicht für den OBD Stecker, wo kann ich das finden?

 

Sollte laut Schaltplan auf Pins 6 (High) und 14 (Low) anliegen, wie im Standard vorgesehen. In der Wikipedia gibt es ein Bildchen mit den Pinnummern,

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Gerade eben schrieb 450-3:

 

Sollte laut Schaltplan auf Pins 6 (High) und 14 (Low) anliegen, wie im Standard vorgesehen. In der Wikipedia gibt es ein Bildchen mit den Pinnummern,

Habe gar nicht daran gedacht, dass das standartisiert ist, danke dir.

Macht jetzt natürlich alles Sinn jetzt

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden

  • Aktuell beliebt

  • Der letzte Post

    • Warum? Wenn er Probleme mit der Kupplung(sbetätigung) hat, würde er ständig Probleme mit dem Schalten haben weil Aktuator und/oder Kupplung am A... wäre. Das Fehlerbild ist typisch für eine sporadische Signalstörung, egal ob durch Verschleiß auf der Widerstandsfläche des Poti oder Kabelbruch/Wackelkontakt. Der DWS gibt gelegentlich blödsinnige Werte an das Steuergerät, somit weiß der Gangwahlmotor nicht, wann er aufhören soll zu steuern und er fährt in eine Situation rein, die extrem verschleißgefährdend für die Getriebezähne werden kann. Zähne putzen tun wir jeden Tag, das Getriebe sollte das unterlassen.   Ich könnte drauf wetten, dass es der DWS ist.   EDIT: DWS = Drehwinkelsensor
  • Forenstatistik

    • Themen insgesamt
      151.784
    • Beiträge insgesamt
      1.589.150
×
×
  • Neu erstellen...

Wichtige Information

Wir haben Cookies auf Ihrem Gerät platziert, um die Bedinung dieser Website zu verbessern. Sie können Ihre Cookie-Einstellungen anpassen, andernfalls gehen wir davon aus, dass Sie damit einverstanden sind.