Servus zusammen,
erst einmal ein dickes, fettes DANKE fürs Entwickeln und Veröffentlichen!
Das Projekt hier hat mir endlich den nötigen Arschtritt verpasst, mich hin zu setzen und mit dem CAN-BUS zu beschäftigen.
Ursprünglich wollte ich mich aufgrund einer Spezialanforderung für mein Fahrzeug in die serielle Kommunikation zum Display einklinken und die notwendigen Daten abgreifen.
Mittlerweile habe ich mich jedoch dazu entschieden, nur das Display und den Screen in abgeänderter Form zu verwenden und den µC durch einen ESP32 + SN65HVD230 zu tauschen. Ich hänge mich allerdings erst einmal nicht an den PT-CAN, sondern begnüge mich bis auf weiteres mit dem K-CAN.
Ziel ist, ein etwas erweiterter Bordcomputer bezüglich Spritverbrauch und Fahrzeiten (Spielerei), sowie diverse Funktionen per WLAN zugänglich zu machen. Hier lässt sich der ESP32 mit seinem integrierten WLAN-Modul ideal ausnutzen.
"Nebenher" entwickle ich noch ein eigenes Steuergerät, welches für die Schaltung und Überwachung von bis zu 4 Verbrauchern gedacht ist.
Das soll mit an den K-CAN vom Fahrzeug angeschlossen und vom ESP über Eingaben vom Display gesteuert werden.
Über das Display werden dann auch entsprechende Fehlermeldungen ausgegeben, sollte es Probleme mit einem der Kanäle geben (Kurzschluss, OpenLoad etc.).
Ob das problemlos laufen und keine Störungen im Fahrzeug hervorrufen wird? Keine Ahnung - wird auf alle Fälle getestet ![]()
Umgesetzt sind bisher:
- Hardware Testaufbau läuft (Gegenstück ist aktuell noch ein zweiter ESP32 mit MCP2515 + TJA1050)
- Nutzung von RTOS (real time operating system) auf dem ESP32
- Webserver auf dem ESP32 liefert html-Seiten vom integrierten Flash (SPIFFS) aus (vereinfacht den Code)
- Update des ESP32 per Webinterface
- Fast alle CAN-Botschaften, die ich aus diversen Quellen gesammelt habe, sind bereits in Methoden eingebaut und damit recht einfach fürs Display verwendbar.
Quellen sind unter anderem: http://www.loopybunny.co.uk/CarPC/k_can.html und die Excelliste von Ivy_E60 , die hier im Thread verlinkt ist.
In Entwicklung:
- CAN-Logger (linux can-utils per Serial über slcand)
- CAN-Logger (Per WLAN, UDP -> Aktuell nur über Wireshark o.ä. nutzbar)
- Update vom Display per Webinterface (Code ist geschrieben - Test steht aus. Warte noch auf den SD-Kartenhalter)
- Umstellung der HTML-Seiten vom SPIFFS auf die SD-Karte
- Aufhübschen der HTML-Seiten
- Nutzung der RTC-Uhr des Displays zum Wiederher-/Stellen der Fahrzeuguhr
- Bereinigung der festen, zeitlichen Aktualisierung der Daten auf dem Display auf OnChanged-Events und entsprechende Eventhandler, um ein Flickern des Displays zu verhindern. Library hab ich für ein anderes Projekt schon einmal geschrieben; muss ich "nur" noch auf dem ESP32 zum laufen bekommen. Da gibt's noch Abhängigkeitsprobleme.
Eine anständige Möglichkeit, die Aktualisierung Eventbasiert (und nicht timerbasiert) auf dem Display zu steuern, habe ich leider noch nicht gefunden...
Geplant:
- Zusätzliche Absicherung des WLANs / der Kommunikation (MAC-Filter, evtl. HTTPS...)
- Integration von Beschleunigungssensor & Magnetometer (FXOS8700 + FXAS21002) in den Datalogger
- Aktivierung der Standheizung per Webinterface
- Aufräumen des Codes (Objektorientierung verbessern, mehr Kommentieren), um ihn veröffentlichen zu können.
- Steuerung des Displays über die originalen Tasten am Lenkstock
Ein Bild vom BC hängt an.
Beim Druck auf das M-Logo links unten geht's auf den originalen Screen mit Drehmoment und Temperaturen.
Der Button unten Mitte ist für meine Spezialfunktionen.
Die Blätter-Buttons sind zum Durchschalten von "Ab Start", "Ab Tanken" und "Langzeit".
Das gezeigte Gehäuse für den Einbau links anstelle der originalen Defrosterdüse ... Das Displaykabel wird durch die Defrosterdüse in den Lüftungskanal geführt und hinter dem Kombi dann aus dem Lüftungskanal bis zur CAN-Elektronik.
Zwei Fragen hätte ich zum Gehäuse für die Defrosterdüse:
- Für welche Schrauben ist das Gehäuse denn designed?
- Wie bist du denn mit dem Kabel aus dem Tunnel raus? Loch gebohrt?
Nachdem der Tunnel scheinbar eingeklebt ist (oder täusche ich mich da?) könnte man ja sonst nur durch die Steckverbindung des Lüftungstunnels in der Mitte zum Klimakasten gehen...?