CAN Bus- KLine, PT und OBD2 - Arduino Projekt

  • Dank der netten Hilfe von approximate ist es mir gelungen einen ersten funktionsfähigen Prototypen zusammen zu löten.

     [Blockierte Grafik: https://picload.org/thumbnail/dgrilwor/img_20170913_172005.jpg

    Das ganze besteht aktuell aus einem Arduino Nano, einem 16x2 LCD und einem MCP2515. Da das Ding nicht schön genung ist um fest im Auto zu bleiben, hab ich momentan einen OBD Stecker an einem alten Netzwerkkabel. Das Netztwerkkabel bietet sich wegen des "twistet-pair" an.


    Ich muss noch viel programmieren denn momentan kann ich mir nur die Motortemperatur anzeigen lassen.
    Mal schauen wie es weiter geht...

  • Interessantes Projekt, auch wenn ich den Sinn noch nicht ganz sehe, approximates Lösung sollte das alles bereits ermöglichen? Oder bearbeitest du das Projekt um dich mit CAN-Nachrichten und Co einfach beschäftigen? Keine Kritik, wir machen sowas auch, aber beruflich :D

  • Ja einzig und allein aus privatem Interesse.
    Ich finde das Datendisplay von awron ganz cool und will einfach wissen was ich selber so machen kann.


    Wenn es ein paar Leute interessiert kann ich Mal aufschreiben wie ich vorgegangen bin

  • Hatte auch ähnliches vor, auch wie du einfach nur weil es mich interessiert.
    Allerdings fehlt mir einfach die Zeit dazu :(


    Wäre also cool, wenn du dein Projekt ein wenig dokumentierst.
    Danke, schonmal

  • Ich fände es auch gut, wenn du dokumieren würdest wie du was gelöst hast.

  • Sammlung von Can Bus Nachrichten (fett gibt immer die CAN ID an)
    Alle Can Nachrichten sind in DEC (Dezimal)


    Schaltzentrale (Knöpfe 1-6 von links nach rechts) (Man kann die Knöpfe auch wenn man die Ausstattung nicht hat so mechanisch bearbeiten, dass sie funktionieren) evtl müssen Widerstände eingelötet werden:


    1 Sitzheizung Fahrer
    <487,253,255,>//Press
    <487,252,255,>//Release


    2 PDC?
    <791,253,255,>//Press
    <791,252,255,>//Release

    3 Heckrollo
    <621,253,255,255,>//Press
    <621,252,255,255,>//Release


    4
    <794,253,255,>//Press
    <794,252,255,>//Release


    5 Start/Stop
    <405,253,255,>//Press
    <405,252,255,>//Release

    6 Sitzheizung Beifahrer
    <488,253,255,>//Press
    <488,252,255,>//Release


    Vorfeldbeleuchtung genau wie beim aufschließen:


    Einschalten
    <1777,114,4,48,47,7,1,0,100>//Die 100 gibt die dauer an wie lange das Licht an bleibt. In dem Fall 10 Sekunden.

    Auschalten
    <1777,114,4,48,47,7,1,0,0>


    Tacho:

    Geschwindigkeitszeiger
    <1777,96,5,48,32,6,0,0,100>//0 km/h
    <1777,96,5,48,32,6,18,14,100>//260 km/h
    <1777,96,3,48,32,0,13,227,100>//Steuern aus

    Drehzahlzeiger
    <1777,96,5,48,33,6,0,0,100>//0 rpm
    <1777,96,5,48,33,6,18,55,100>//7500 rpm
    <1777,96,3,48,33,0,2,109,100>//Steuern aus


    Tankzeiger
    <1777,96,5,48,34,6,0,0,100>//0
    <1777,96,5,48,34,6,7,82,100>//100
    <1777,96,3,48,34,0,2,109,100>//Steuern aus


    KVA (Momentanverbrauch)
    <1777,96, 5, 48, 35, 6, 0, 0, 100>//0
    <1777,96, 5, 48, 35, 6, 7, 21, 100>//10
    <1777,96, 3, 48, 35, 0, 13, 227, 100>//Steuern aus



    Schlüssel/Zündung:

    Schlüssel drin
    <304,65,...>//Kommt zyklisch


    Schlüssel draußen
    <304,64,...>//Kommt zyklisch

    Zündung an
    <304,69,...>//Kommt zyklisch


    MFL (Multifunktionstasten am Lenkrad):

    <470,192,12,...>//Keine Taste gedrückt kommt ca. alle 100ms

    <470,192,13,...>//Sprechen Taste gedrückt
    <470,192,28,...>//Stern Taste gedrückt
    <470,192,76,...>//Raute Taste gedrückt
    <470,200,...>//Vol + Taste gedrückt
    <470,196,...>//Vol - Taste gedrückt
    <470,193,...>//Telefonhöhrer Taste gedrückt
    <470,224,...>//Pfeil Hoch Taste gedrückt
    <470,208,...>//Pfeil Runter Taste gedrückt



    Fernbedieung (Zentralverriegelung):


    <304,64,...>//Aufschließen
    <304,65,...>//Abschließen
    <304,69,...>//Kofferraum für 3 Sekunden gedrückt


    Gang:


    Rückwärtsgang
    <944,253,...>//Nicht Eingelegt
    <944,254,...>//Eingelegt




    Was noch kommen soll:



    Testen:

    - Alle Fenster komplett hochfahren ohne Zündung (so wie beim gedrückt halten der Fernbedienung)

    Geht nur mit kleiner Unterbrechung beim Hochfahren:
    <622,0,27,63,2,255,255,255,255,>//Hinten
    <622,27,27,63,2,255,255,255,255,>//Vorne


    - Das reagieren vom Auto auf MFL Tasten ausschalten wobei Tasten vom Schaltzentrum (Sitzheizung usw.) noch funktionieren

    CCC Datenverkehr Einschalten
    <1777,160,2,41,1,21,7,4,0,>//Ungetestet
    CCC Datenverkehr Ausschalten
    <1777,160,2,40,1,21,7,4,0,>//Klappt iDrive und Lautstärke Drehknopf werden auch abgeschaltet

    - CCC Quelle umschalten (AUX/CD/RADIO)

    Aux
    <1777,160,4,46,249,2,9,4,0,>//Ungetestet
    evtl. <1777,160,3,34,249,2...
    Radio
    <1777,160,4,46,249,2,1,4,0,>//Ungetestet
    evtl. <1777,160,3,34,249,2...

    CD
    <1777,160,4,46,249,2,3,4,0,>//Ungetestet
    evtl. <1777,160,3,34,249,2...


    - CCC Lautstärke
    Mute
    <1777,160,4,46,249,1,0,4,0,>//Ungetestet

    15
    <1777,160,4,46,249,1,15,4,0,>//Ungetestet

    16
    <1777,160,4,46,249,1,16,4,0,>//Ungetestet

    18
    <1777,160,4,46,249,1,18,4,0,>//Ungetestet

    geht in 2er Schritten weiter bis 62
    Lautstärke MAX gibt es auch noch


    Herrausfinden/ToDo:


    - CCC Einschalten ohne Zündung bzw Schlüssel im Schloss

    - Bordsteinfunktion der Seitenspiegel (Bei Rückwärtsgang Rechten Spiegel nach unten fahren) nachrüsten mit ein/ausschalten per Spiegelwahlschalter


    - Evtl. Hupen beim Auf-/Abschließen


    - Autobahnlicht = Anhebung der LWR bei schneller Fahrt z.B. > 130km/h


    - Alle Fenster Hochfahren wenn abgeschlossen wird per Fernbedienung, ohne das man sie gedrückt halten muss

    - Tablet steuern per iDrive/MFL z.B. Lautstärke/Nächstes Lied usw.

  • Hier ist mal eine kleine Anleitung um einen Arduino an den Can Bus anzuschließen.


    Benötigt wird:
    - Ein Arduino Controller (Dabei ist es relativ egal welchen man benutzt ich persönlich nutze einen Leonardo Micro, da er eine Maus/Tastatur für ein Android Tablet emulieren kann. Es geht aber auch ein Arduino UNO)
    - Ein Can Bus Shield (Ich nutze das MCP2515)
    - 5V Netzteil (z.B. einen Zigarettenanzünder Adapter zu USB und dann mit einem Micro USB Kabel zum Leonardo Micro)
    - Ein paar Kabel (gut wäre ein Twisted Pair Kabel um die Störungen auf dem Can Bus zu minimieren)


    Man sucht sich nun eine Stelle aus, so man den Arduino einbauen möchte, dort sollte man auch an Strom und Can Bus kommen.
    Ein Paar möglich Ort sind:
    - Hinterm Radio am Quadlock Stecker
    - Am Klimabedienteil Stecker (Links der Schwarze)
    - Hinterm Handschuhfach
    - Am iDrive Controller Stecker
    - ...


    Die Kabel sind immer verdrillt und haben folgende Farben:
    - Can High = Orange/Grün
    - Can Low = Grün


    Die Stromversorung habe ich von der Taschenlampenvorbereitung im Handschuhfach genommen, dort liegt Spannung an sobald man das Auto aufschließt, bis es eingeschlafen ist so ca. 15 min nach dem Abschließen.


    Das Can Bus Shield MCP2515 hat 6 Anschlüsse wovon wir 5 brauchen.


    INT - wird nicht gebraucht
    SCK - 15 SCLK
    SI - 16 MOSI
    SO - 14 MISO
    CS - 10 (Pin 9 oder 10 je nach Arduino Board. Wird im Programm festgelegt)
    GND - Masse vom Arduino
    VCC - VCC vom Arduino


    Ich nutze folgende Library für das Can Bus Shield:
    https://github.com/Seeed-Studio/CAN_BUS_Shield



    Im Beispiel Code muss nun der CS Pin und folgende Zeile angepasst werden von 500 auf 200:
    while (CAN_OK != CAN.begin(CAN_500KBPS))


    while (CAN_OK != CAN.begin(CAN_200KBPS))


    Auf dem MCP2515 ist ein Quarz verbaut. Bei mir ist es 8000 MHz es kann aber auch 16000 MHz sein.


    Wir brauchen eigentlich 100KBPS aber da wird von einem 16000Mhz Quarz ausgegangen
    Hat man 8000 MHz muss man wie folgt rechnen: Statt 16 MHz : 8Mhz = 2 => 2 * 100KBPS = 200KBPS


    Der Quellcode sieht nun wie folgt aus:


    Sorry für die Formatierung, klappt irgendwie nicht

  • 586 steht nicht für den rückwärtsgang, sondern wird vom PDC steuergerät gesendet und gibt den status von diesem wieder!!!

    2007 E92 325i | SPACE GREY | INDIVIDUAL MERINO COHIBABROWN | BBS CH-R BLACK 9x20 - 10.5x20
    KW VARIANT II | E9x M3 SUSPENSION PARTS | E93 M3 FRONT ANTI-SWAY BAR | CDV DELETE
    CIC RETROFIT | COMBOX RETROFIT | JBBFE III (D-CAN) RETROFIT
    DIAGNOSE BLOCKER | iDRIVE DATA DISPLAY

  • Wenn du mir sagst was für den Rückwärtsgang steht, verbessere ich es.