RKS+CAN Adapter für CAN-Bus Sniffing
CAN-Interface
CANhack.de - CAN Hardware, CAN Software, CAN Protokolle - Das CAN-Bus Forum für Dein CAN-Bus Projekt. eLearning CAN-Bus und Elektronik.

Arduino - Can Bus Shield


 
Neues Thema beginnen Auf Beitrag antworten Weitergeben, Thema teilen Lesezeichen setzen Druckansicht CANhack.de - Übersicht » Mikrocontroller und Elektronik: Programmierung
Autor Nachricht
zndpp



CAN Hacker seit: 03.03.2017
Beiträge: 1
Karma: +0 / -0   Danke, gefällt mir!


Kostenloser Account, kein CAN Entwicklungs-Support

Beitrag28-07-2017, 18:15    Titel: Arduino - Can Bus Shield Antworten mit Zitat

Hallo zusammen,

kurz zu meiner Person: Heiße Michael, bin 22 Jahre alt und studiere Maschinenbau. Bin Hobbyelektroniker und benötige eure Hilfe.

Zu meinem Vorhaben: Ich habe einen Audi A3 8P (Baujahr 2011). In diesen möchte ich mir einen Car PC bauen. Über das Konzept habe ich mir schon einige Gedanken gemacht. Nur habe ich dabei das Problem, dass ich meine Lenkradfernbedienung erhalten möchte (also das Multifunktionslenkrad). Ich habe mich dazu in der Vergangenheit bereits schon etwas informiert wie die Ansteuerung des Radios funktioniert und habe mir daraufhin einen Arduino mit dem Can Bus Shield von Seeed zugelegt. http://wiki.seeed.cc/CAN-BUS_Shield_V1.2/
Der Ablauf meines Projekts war jetzt so geplant, dass ich erstmal meinen Can Bus auswerte, und mir ein Programm (für den Arduino) schreibe, welches mir zunächst die wichtigen Werte raus filtert (lauter, leiser, Titel vor und zurück...) und dann über USB an meinen PC "Werte" sendet. Dort wollte ich mir dann nochmal ein kleines Programm schreiben, welches die "Werte" auswertet und dann intern im Windows lauter und leiser dreht. Sobald dann Softwareseitig alles stehen sollte, wollte ich Hardware kaufen (Bildschirm und PC) und alles fertig zusammenbauen und Spaß haben.

Nun zu meinem Problem: Ich schaffe es einfach nicht, mir die Can Codes anzeigen zu lassen. Dabei muss ich anmerken, dass ich definitiv kein Programmierprofi bin und meine Kunstwerke auf Trial & Error beruhen. Zum Auslesen habe ich bis jetzt einen Beispielcode von Seeed verwendet, nur damit ich mal was in der Hand habe. Den Code hab ich unten mal angehängt. Kann leider nicht sagen, ob dieser grundsätzlich geeignet ist. Verkabelungsfehler schließe ich aus. Hab das Can High und Low vom Radio Stecker abgegriffen und mit dem Oszi bekomm ich auch ein Signal.

Wenn jemand vielleicht drüber schauen könnte um mir womöglich die Augen zu öffnen, wäre ich sehr dankbar (ich persönlich vermute ja sehr schwer einen Fehler im Code).


Viele Grüße
Michael


Code:
// demo: CAN-BUS Shield, receive data with check mode
// send data coming to fast, such as less than 10ms, you can use this way
// loovee, 2014-6-13


#include <SPI>
#include "mcp_can.h"


// the cs pin of the version after v1.1 is default to D9
// v0.9b and v1.0 is default D10
const int SPI_CS_PIN = 9;

MCP_CAN CAN(SPI_CS_PIN);                                    // Set CS pin

void setup()
{
    Serial.begin(115200);

    while (CAN_OK != CAN.begin(CAN_500KBPS))              // init can bus : baudrate = 500k
    {
        Serial.println("CAN BUS Shield init fail");
        Serial.println(" Init CAN BUS Shield again");
        delay(100);
    }
    Serial.println("CAN BUS Shield init ok!");
}


void loop()
{
    unsigned char len = 0;
    unsigned char buf[8];

    if(CAN_MSGAVAIL == CAN.checkReceive())            // check if data coming
    {
        CAN.readMsgBuf(&len, buf);    // read data,  len: data length, buf: data buf

        unsigned int canId = CAN.getCanId();
       
        Serial.println("-----------------------------");
        Serial.print("Get data from ID: ");
        Serial.println(canId, HEX);

        for(int i = 0; i<len; i++)    // print the data
        {
            Serial.print(buf[i], HEX);
            Serial.print("\t");
        }
        Serial.println();
    }
}

/*********************************************************************************************************
  END FILE
*********************************************************************************************************/
[/url]
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden  
postmann
CAN-Profi
CAN-Profi


CAN Hacker seit: 23.05.2013
Beiträge: 117
Karma: +37 / -0   Danke, gefällt mir!


CAN Support

Beitrag28-07-2017, 21:10    Titel: Arduino - Can Bus Shield Antworten mit Zitat

Falsche Baudrate. Du hast bei dir einen CAN mit 500 kBd eingestellt, meines Wissen läuft der Komfort CAN bei 8p aber mit 200 kBd.
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden  
Ulli13



CAN Hacker seit: 08.10.2012
Beiträge: 23
Karma: +14 / -0   Danke, gefällt mir!
Wohnort: Senden
2009 Audi A4 Avant Verbrauch
Kostenloser Account, kein CAN Entwicklungs-Support

CAN-Diagnose gefällt das.
Beitrag29-08-2017, 23:11    Titel: Komfortcan Antworten mit Zitat

Hallo Michael,
bei meinem A4 8k läuft der Komfortcan mit 100kBit/s.

Habe meinen A4 einen Arduino erfolgreich am Motorcan (500kBit/s) drangehängt,
kann dort Daten auslesen, Relais nach signalen schalten und Diagnose anfragen an Motor senden und auswerten.
Wichtig ist bei den Canshield Masken zu setzen und nur die Ids die man benötigt durchzulassen. Der Arduino ist sonst heillos überfordert.
Bei Diagnose mit ID 7E0 und 7E8 kamen nie die Ids zum Arduino durch wegen der niedrigen Prios. Nach den Masken setzen läuft es super und zuverlässig.
Ach ja mein Canshield hatte nur 8MGhz Quarz, in der Config so gesetzt ging es. Auf 0x10B läuft mein ACC Hebel, kann damit die Relais schalten:

if(rxId == 0x10B) // Abfrage ob ACC Schalter gedrückt
{

if(bitRead(rxBuf[2],1)==1) // 2. Bit gesetzt Set ACC
{digitalWrite(Relais3, LOW);} else {digitalWrite(Relais3, HIGH);}
if(bitRead(rxBuf[2],2)==1) // 3. Bit gesetzt beschleunigen
{digitalWrite(Relais4, LOW);} else {digitalWrite(Relais4, HIGH);}

} // Ende if rx 0x10B

Beispiel für meine Filter: IDs mit 0x10B, 3C0, 640, 6B4, 6B7, 7E8 lasse ich durch

// Initialize MCP2515 running at 8MHz with a baudrate of 500kb/s and the masks and filters enabled.
if(CAN0.begin(MCP_STD, CAN_500KBPS, MCP_8MHZ) == CAN_OK) // if(CAN_OK == CAN.begin(CAN_500KBPS))
{Serial.println("MCP2515 Initialized Successfully!");
lcd1.setCursor(0,0);lcd1.print("Motor 500kB Ok");delay(1000);}
else
{Serial.println("Error Initializing MCP2515...");}
CAN0.init_Mask(0,0,0x07FF0000); // Init first mask alle sperren...
CAN0.init_Filt(0,0,0x06400000); // Init first filter 0x640 Sensoren
CAN0.init_Filt(1,0,0x06B70000); // Init second filter 0x6B7 Tank

CAN0.init_Mask(1,0,0x07FF0000); // Init second mask...
CAN0.init_Filt(2,0,0x07E80000); // Init third filter MR Diag rx
CAN0.init_Filt(3,0,0x06B40000); // Init fouth filter. FIN
CAN0.init_Filt(4,0,0x010B0000); // Init fifth filter ACC Hebel
CAN0.init_Filt(5,0,0x03C00000); // Init fifth filter Key Status 0x16 1 = Key on 7 =Zündung an

Lenkradtasten am 8k laufen auf 0x66A Lenkwinkel auf 0x525 und die Hebel auf 0x3C2

mfG Ulli
Audi A4 8K Bj 2009
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden   Fahrzeuge des Benutzers ansehen
Neues Thema beginnen Auf Beitrag antworten Weitergeben, Thema teilen Lesezeichen setzen Druckansicht CANhack.de - Übersicht » Mikrocontroller und Elektronik: Programmierung
Ähnliche Fachartikel und Themen
Thema Community Bereich
Keine neuen Beiträge Arduino + Can Bus Shield / PID Filtern Mikrocontroller und Elektronik: Programmierung
Keine neuen Beiträge Arduino - Adafruit CAN Bus Shield Mikrocontroller und Elektronik: Programmierung
Keine neuen Beiträge Arduino & CAN Mikrocontroller und Elektronik: Programmierung
Keine neuen Beiträge Arduino mit MCP2515 als Steuerung Mikrocontroller und Elektronik: Programmierung
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst Deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst Deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten.
Du kannst Dateien in diesem Forum herunterladen.