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

Arduino + Can Bus Shield / PID Filtern


FehlerdatenbankSuchen  LesezeichenLesezeichen  Garage - FahrzeugeGarage  InfoFAQ, Impressum & Datenschutz
RSS-NewsfeedRSS-Newsfeed  RegistrierenRegistrieren  LoginLogin
 
Neues Thema beginnen   Auf Beitrag antworten      Weitergeben, Thema teilen   Lesezeichen setzen   Druckansicht    CANhack.de - Übersicht » Mikrocontroller und Elektronik: Programmierung Vorheriges Thema anzeigen :: Nächstes Thema anzeigen
Autor Nachricht
Tobi163



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


Kostenloser Account, kein CAN Entwicklungs-Support

Beitrag12-10-2017, 15:33    Titel: Arduino + Can Bus Shield / PID Filtern Antworten mit Zitat

Hallo Canhack Mitglieder , ich bin Tobi und habe noch keine großen Erfahrungen was Can Bus etc. angeht ich finde das Thema aber sehr Interessant und da ich auch gerne mit dem Arduino bastel wollte ich mit einem kleinen Projekt anfangen.

Ich wollte bei meinem alten BMW E46 gerne mit dem Can Bus Shield und einem Arduino Uno so Standart Dann wie Drehzahl / Geschwindigkeit usw. heraus filtern und diese dann auf einem externen LCD anzeigen.

Ich habe einige Arduino Librarys für den Can Bus Bereich getestet aber leider nicht wirklich den Erfolg gehabt.

Mein Can Shield ist das Aptotec V1.2 mit dem MCP2515 CAN Controller und MCP2551 CAN Trans-ceiver.

Ich habe den Arduino nur per usb mit meinem mac book versorgt und das can high ( 6 ) / can Low ( 14 ) signal auf die 2 Schraubklemmen des Can Shields angeschlossen. Den optionalen Abschlusswiderstand habe ich ausgelötet.

Ich habe wie gesagt verschiedenen code s ausprobiert damit bekomme ich beim BMW keine Verbindung zum Fahrzeug aber bei einem w204 mercedes von einem Freund bekomme ich eine Verbindung und teilweise sendet das program auch ohne Fehler die Anfragen über den bus allerdings kommen trotzdem immer zwischendurch Verbindungsfehler.

Muss ich eine gemeinsame masse zwischen Fahrzeug und dem Arduino herstellen wie man es bei allen anderen elektrischen Schnittstellen auch macht zb. RS232 oder werden wirklich nur die 2 Signale also Can H / L benötigt ?!

Hier mal meine Versuche und danach die Ausgabe Seriell:

Code:

// MCP2515 Mask and Filter example for extended CAN message frames.
// Written by Cory J. Fowler (20140717)

/********************************************************************************​***
If you send the following extended IDs below to an Arduino loaded with this sketch
you will find that 0x00FFCC00 and 0x00FF9900 will not get in.

   ID in Hex is the same as the Filter in Hex.
   0x00FFEE00
   0x00FFDD00
   0x00FFCC00  This example will NOT be receiving this ID
   0x00FFBB00
   0x00FFAA00
   0x00FF9900  This example will NOT be receiving this ID
   0x00FF8800
   0x00FF7700

   This mask will check the filters against ID bits 23 through 8.
   (Those familiar with J1939 might see why I used this mask.)
    MASK = 0x00FFFF00
   If there is an explicit filter match to those bits, the message will be passed to the
   receive buffer and the interrupt pin will be set.
   
   This example will NOT be exclusive to ONLY the above message IDs, for that a mask such
   as the below would be used:
    MASK = 0x1FFFFFFF
   
   At the moment, to disable a filter or mask, copy the value of a used filter or mask.
   
********************************************************************************​***/


#include <mcp_can>
#include <SPI>

long unsigned int rxId;
unsigned char len = 0;
unsigned char rxBuf[8];

MCP_CAN CAN0(10);                          // Set CS to pin 10

void setup()
{
  Serial.begin(115200);
  if(CAN0.begin(MCP_STDEXT, CAN_500KBPS, MCP_16MHZ) == CAN_OK) Serial.print("MCP2515 Init Okay!!\r\n");
  else Serial.print("MCP2515 Init Failed!!\r\n");
  pinMode(2, INPUT);                       // Setting pin 2 for /INT input

  CAN0.init_Mask(0,1,0x00FFFF00);                // Init first mask...
  CAN0.init_Filt(0,1,0x00FFEE00);                // Init first filter...
  CAN0.init_Filt(1,1,0x00FFDD00);                // Init second filter...
 
  CAN0.init_Mask(1,1,0x00FFFF00);                // Init second mask...
  CAN0.init_Filt(2,1,0x00FFBB00);                // Init third filter...
  CAN0.init_Filt(3,1,0x00FFAA00);                // Init fouth filter...
  CAN0.init_Filt(4,1,0x00FF8800);                // Init fifth filter...
  CAN0.init_Filt(5,1,0x00FF7700);                // Init sixth filter...
 
  Serial.println("MCP2515 Library Mask & Filter Example...");
  CAN0.setMode(MCP_NORMAL);                // Change to normal mode to allow messages to be transmitted
}

void loop()
{
    if(!digitalRead(2))                    // If pin 2 is low, read receive buffer
    {
      CAN0.readMsgBuf(&rxId, &len, rxBuf); // Read data: len = data length, buf = data byte(s)
      Serial.print("ID: ");
      Serial.print(rxId, HEX);
      Serial.print(" Data: ");
      for(int i = 0; i<len; i++)           // Print each byte of the data
      {
        if(rxBuf[i] < 0x10)                // If data byte is less than 0x10, add a leading zero
        {
          Serial.print("0");
        }
        Serial.print(rxBuf[i], HEX);
        Serial.print(" ");
      }
      Serial.println();
    }
}

/********************************************************************************​*************************
END FILE
********************************************************************************​*************************/




BMW:

Code:


KEntering Configuration Mode Successful!
Setting Baudrate Successful!
MCP2515 Initialized Successfully!
Starting to Set Mask!
Setting Mask Successful!
Starting to Set Filter!
Setting Filter Successfull!
Starting to Set Filter!
Setting Filter Successfull!
Starting to Set Mask!
Setting Mask Successful!
Starting to Set Filter!
Setting Filter Successfull!
Starting to Set Filter!
Setting Filter Successfull!
Starting to Set Filter!
Setting Filter Successfull!
Starting to Set Filter!
Setting Filter Successfull!
Simple CAN OBD-II PID Request
Error Sending Message...
Error Sending Message...




Mercedes:

Code:


MCP2515 Initialized Successfully!
Starting to Set Mask!
Setting Mask Successful!
Starting to Set Filter!
Setting Filter Successfull!
Starting to Set Filter!
Setting Filter Successfull!
Starting to Set Mask!
Setting Mask Successful!
Starting to Set Filter!
Setting Filter Successfull!
Starting to Set Filter!
Setting Filter Successfull!
Starting to Set Filter!
Setting Filter Successfull!
Starting to Set Filter!
Setting Filter Successfull!
Simple CAN OBD-II PID Request
Error Sending Message...
Error Sending Message...
Message Sent Successfully!
Error Sending Message...
Error Sending Message...
Message Sent Successfully!
Error Sending Message...
Error Sending Message...
Message Sent Successfully!
Error Sending Message...
Message Sent Successfully!
Message Sent Successfully!
Message Sent Successfully!
Message Sent Successfully!
Message Sent Successfully!
Error Sending Message...
Message Sent Successfully!
Message Sent Successfully!
Error Sending Message...
Message Sent Successfully!
Message Sent Successfully!
Error Sending Message...
Message Sent Successfully!
Error Sending Message...
Error Sending Message...
Message Sent Successfully!
Error Sending Message...
Message Sent Successfully!
Message Sent Successfully!
Error Sending Message...
Error Sending Message...
Error Sending Message...




Würde mich sehr freuen wenn mir jemand Tipps geben könnte. Ich habe auch überlegt mir hier aus dem Forum den Can Hack Adapter zu bestellen aber was genau habe ich damit für Möglichkeiten ? Könnte ich damit sagen wir mal: Fensterheber Signale oder vom Lenkrad die Fernbedienung herausfinden ?

Gruß Tobi
Nach oben
CAN Hacker - Profil anzeigen Private Nachricht senden    
postmann
CAN-Profi
CAN-Profi


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


CAN Support

Beitrag12-10-2017, 20:48    Titel: Arduino + Can Bus Shield / PID Filtern Antworten mit Zitat

Ich vermute, du hast die falsche Baudrate eingestellt. Sicher, dass du beim BMW an einem 500 kBaud Netzwerk bist?
Nach oben
CAN Hacker - Profil anzeigen Private Nachricht senden    
Tobi163



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


Kostenloser Account, kein CAN Entwicklungs-Support

Beitrag12-10-2017, 23:25    Titel: Arduino + Can Bus Shield / PID Filtern Antworten mit Zitat

Lieber Leser, Du hast keine ausreichenden Rechte um weiter zu lesen, bitte melde Dich an.
Nach oben
CAN Hacker - Profil anzeigen Private Nachricht senden    
Neues Thema beginnen   Auf Beitrag antworten      Weitergeben, Thema teilen   Lesezeichen setzen   Druckansicht    CANhack.de - Übersicht » Mikrocontroller und Elektronik: Programmierung Seite 1 von 1
Ähnliche Fachartikel und Themen
Thema Community Bereich
Keine neuen Beiträge Arduino - Can Bus Shield Mikrocontroller und Elektronik: Programmierung
Keine neuen Beiträge Arduino - Adafruit CAN Bus Shield Mikrocontroller und Elektronik: Programmierung
Keine neuen Beiträge µC + 2x MCP2515 zum Filtern Mikrocontroller und Elektronik: Programmierung
Neue Beiträge Arduino & CAN 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.