CAN Bus auslesen mit ESP32

Aus purer Lust am Basteln habe ich mir einen CAN Bus Sniffer für mein Model 3 gebaut. Hauptzweck ist der Ersatz von ScanMyTesla (SMT) als Datensammler für den TeslaLogger. So praktisch SMT für das Online-Auslesen des CAN Bus ist, so unpraktisch und unzuverlässig ist der Dauerbetrieb mit einem Bluetooth OBD Dongle und permanent verbundenem Android Handy.

Ich hatte folgende Anforderungen:

  • CAN Daten offline auf SD Karte sammeln und bei Verbindung mit dem Heimnetz Übertragung der Daten an den TeslaLogger.
  • Um die SD Karte zu schonen sollte es eine unterbrechungsfreie Stromversorgung geben

Die erste Version bestand aus einem Raspberry Pi mit CAN Hat und UPS Board, programmiert mit C# mit Mono - inspiriert durch den TeslaLogger. Diese Version hat ca. ein Jahr lang, auch in einem 2-wöchigen Urlaub, zuverlässig Daten gesammelt.

Dann bin ich auf den ESP32 aufmerksam geworden. Der bringt CAN und WLAN bereits mit. Mit einem der vielen verfügbaren ESP32 Boards, Breakout Boards für Stromversorgung und CAN Treiber war die Hardware schnell „zusammengesteckt“, die Software musste allerdings komplett neu in C++ geschrieben werden. Das lief dann ebenfalls mehrere Monate und einen Urlaub in meinem Model 3.

Der Aufbau war allerdings ziemlich abenteuerlich, deshalb kam die Idee auf das Ganze „professionell“ anzugehen. Nach langem Recherchieren und mehreren Fehlversuchen habe ich schließlich 2 ICs gefunden die mit 12V (oder mehr…) einen LiPo Akku laden können und die für den ESP32 benötigten 3,3V entweder von der externen Versorgung oder aus dem Akku breitstellen können. Aus diesen wurde eine Spannungsversorgungsplatine mit OBD Stecker. Der ESP32 selbst sitzt mit SD Karte und CAN Treiber auf einer Extra-Platine.

Da ich dem ESP32 internen CAN nicht so recht getraut habe, habe ich sogar noch eine Bestückungsoption für den MCP2518 CAN Controller vorgesehen. Da man den derzeit ohnehin nicht bekommt und der ESP32 interne CAN prima funktioniert war das eigentlich überflüssig.

Die Platinen kann man für wenig Geld in China fertigen lassen, die Bauteile (SMD „Vogelfutter“) gibt es größtenteils auch in China beim Ali, den Rest bei Mouser. Bestückt habe ich meine Testexemplare mit Pinzette und Lupe. Die ersten Platinen habe ich noch mit Lötkolben gelötet, dann aber einen günstigen Lötofen gekauft - natürlich auch aus China :smile:

Diese dritte Variante läuft jetzt auch schon wieder einige Monate.


Jetzt fehlt eigentlich nur noch die Möglichkeit das Teil als Bluetooth Dongle für SMT verwenden zu können. Bei einem ersten Versuch hatte ich allerdings extreme Probleme mit der Performance, es gingen ca. 90% der CAN Daten verloren. Muss ich wohl nochmal ran…

25 „Gefällt mir“

Wow! Wirklich cool und vorallem sauber gemacht!
Warum willst Du noch eine Verbindung zu SMT, wenn Du hier ja eigentlich alles hast?

Respekt! Echt tolles Projekt… Fehlt nur noch der OnlineShop wo man das Teil bestellen kann :stuck_out_tongue_winking_eye:

1 „Gefällt mir“

ja, sieht clean aus. Sehr cool!

Wie lange kann der LiPo überbrücken? Welche Daten werden an TL geschickt? Die Daten wandern automatisch an TL, wenn der ESP im WLAN ist?

Würde gerne das ganze mal ausprobieren.

VG,
Micha

Leider ist der Verkauf von Hardware wegen diverser Gesetze (Stichwort RoHS) in D für Privatpersonen beliebig schwierig. Meine Platinen sind noch nicht mal bleifrei gelötet :open_mouth:

Ich habe schon mal geschaut was fertig bestückte RoHS konforme Platinen kosten würden, dafür sind dann aber die von mir gewählten Bauteile für die Stromversorgung (Analog Devices LTC4091 und LTC3530) wieder zu exotisch. Also müsste man mit etwas gängigeren Bauteilen neu entwerfen.

Falls aber eine Firma die ohnehin Hardware vertreibt Interesse hat… EMDS…? Das Ding kann man ja theoretisch in jedem Auto an den OBD Port hängen! Die Software müsste man halt anpassen.

Ansonsten gibt es ja noch Projekte wie den CANserver oder (wie ich hier erfahren habe) OVMS.

LiPos gibt es beim Ali in allen erdenklichen Größen. Momentan verwende ich einen 300mAh, der hält bei vollem Betrieb vielleicht 3-4h, Standby mehrere Tage. Wenn ich den Stecker nicht so dämlich platziert hätte würde auch locker ein 1000mAh in den freien Platz passen. Bei einem größeren Gehäuse passt natürlich noch mehr rein.

Ich habe mir mal ESP32 SMT Adapter gebaut.
Ich beschwere mich pber Verlorene Pakete nicht. Es gibt Filterfunktion (wie beim OBDLink) und so kommt nur das nötige an SMT. 500 Pekete/s kommen an.

Gerber und Bestückungsdaten tun es auch. :wink:

1 „Gefällt mir“

Die Hardware ist gut getestet und funktioniert, leider wird das Model 3 noch nicht unterstützt, wäre schön wenn sich jemand mittuen Programmierkenntnissen finden würde, der das Projekt unterstützt

Gerberdaten wären echt cool, es gibt genug Hersteller in Deutschland wenn es schnell gehen muss und in China wenn man die Mindestbestellmenge von fuffzich Stück für eine Sammelbestellung haben will :slight_smile:

https://www.mikrocontroller.net/articles/Platinenhersteller#Liste_der_Hersteller

Ich empfehle pcbway.com

1 „Gefällt mir“

Ich habe die KiCad Projekte in mein Github hochgeladen. Das ist auch mal ein guter Test ob ich keine Dateien vergessen habe :grinning:

GitHub - mgerczuk/PCB-ESP32 und GitHub - mgerczuk/PCB-ESP32-power

Wenn jemand grobe Fehler findet bitte melden! Ich bin Anfänger…

In Europa gibt es auch noch Aisler, da hatte ich mal angefangen die Stückliste einzugeben. Zumindest die LTCs waren verfügbar. Meine Platinen habe ich bei JLCPCB fertigen lassen. Die können auch bestücken, allerdings sind die LTCs nicht im Angebot, soweit ich mich erinnere.

4 „Gefällt mir“

Meine Schaltung zur Stromversorgung kann man derzeit vergessen: LTC4091 ist kurzfristig nicht mehr lieferbar.

Hat hier jemand Erfahrungen welche Spannungsregler die Automotive Profis derzeit einsetzen?

Sieht sehr vielversprechend aus. Wie hoch sind denn die Bauteilekosten? Vielleicht könnte das eine Alternative zu OVMS sein?

3 „Gefällt mir“

Ich schätze ca. 40€ für Platinen, Bauteile und Bestückung.

Der OBD Stecker, die Pfostenleisten und der Akku Stecker müssen manuell gelötet werden, ich weiß nicht ob Aisler & Co. das auch übernehmen. Die Prozessorplatine ist doppelseitig bestückt (der SD Slot ist auf der Unterseite). Da weiß ich auch nicht ob das geht und was das evtl. mehr kostet.

Die beiden LTCs sind allein ca. 13€, das kann also mit gängigeren Teilen evtl. 5€ günstiger werden.

sicher geht das, wie bei allen doppelt bestückten platinen oder dachtest du die werden 2x gelötet ?

werden angeklebt und auf einmal zb im reflow ofen gelötet

und ja kostet etwas mehr… aber wie immer bei platinen…umso mehr, umso günstiger

Ich kenne jemanden, der hat ein OVMS (nach) gebaut, in der Größe von einem teas größerem OBD Dongle.
Mit WiFi, GSM u. GPS.
Das läuft jetzt in zwei Smarts ED Gen. 3 einwandfrei.
Würde uns derjenige unter Umständen weiterhelfen können?

image

OVMS ist opensource, kann jeder nachbauen. Das habe ich mir vor ein pasr Tagen angeschaut.
Wenn man aber selbst davon keine Ahnubg hat, ist echt einfacher HW zu kaufen

1 „Gefällt mir“

Dass OVMS Open Source ist, war mir schon klar :wink:

Mir ging es darum, dass ich eben jemanden kenne, der sich damit Beschäftigt, auch mit der HW und sich auch dem Programmieren auskennt :grinning:

Es ist sicherlich nicht falsch, Menschen mit Ahnung und Geschick zwecks Austausch zusammen zu bringen.
Mehr sollte mein Angebot nicht bedeuten. :wink:

1 „Gefällt mir“