Araç OBD sinden kapı açık bilgisini çekmek.

Başlatan Melih1802, 18 Ekim 2021, 14:00:57

argeman

Alıntı yapılan: mur@t - 21 Ekim 2021, 14:25:00Tahminim sizin araçta da böyledir.
CAN Interior hattında aradığınız bilginin olması muhtemel.

There are actually three separate CAN bus systems used in the vehicle: the CAN-Interior (also known as CAN Interior High Speed/IHS), the CAN-C and the Diagnostic CAN-C. The CAN-Interior bus is used for communication between the interior modules of the vehicle, such as the dashboard and radio and runs at 125 Kbps. The CAN-C bus is used by the power train components and runs at 500 Kbps. Finally, there is the Diagnostic CAN-C which also runs at 500 Kbps.

The Diagnostic CAN-C bus is used to talk to a gateway computer, the Totally Integrated Power Module or TIPM. This gateway implements all of the logic needed for onboard diagnostics, and communicates to the other two buses as needed. One effect of this implementation is that data from the other buses is not easily obtained via the data link connector (a.k.a the ODB-II port) underneath the dash. While a tremendous amount of information is available via the diagnostic bus, it isn't easy to hack or obtain without getting official documentation from the manufacturer directly.


  Merhaba, daha önce bloğunuzda bulunan CAN ile ilgili sayfaları okumuştum, bloğunuz harika bilgiler içeriyor, benim sorum şu; otomobillerde kullanılan SAE J1939  protokolü ile tarım makinalarında kullanılan ISO 11783 birbirine oldukça benziyor, işim gereği tarım makinaları elektroniği ile uğraşıyorum, bir sniffer yapabilmem için mutlaka bloğunuzdaki cihaza sahip olmak mı gerekiyor? Eğer öyle ise cihaza nasıl sahip olabilirim ve  WireShark programını önerir misiniz. Teşekkürler

mur@t

Alıntı yapılan: argeman - 21 Ekim 2021, 21:54:45Merhaba, daha önce bloğunuzda bulunan CAN ile ilgili sayfaları okumuştum, bloğunuz harika bilgiler içeriyor, benim sorum şu; otomobillerde kullanılan SAE J1939  protokolü ile tarım makinalarında kullanılan ISO 11783 birbirine oldukça benziyor, işim gereği tarım makinaları elektroniği ile uğraşıyorum, bir sniffer yapabilmem için mutlaka bloğunuzdaki cihaza sahip olmak mı gerekiyor? Eğer öyle ise cihaza nasıl sahip olabilirim ve  WireShark programını önerir misiniz. Teşekkürler

Merhaba,
Anladığım kadarıyla ISO-11783, CAN 2.0b (29bit) uyumlu.
Bloğumdaki veya herhangi bir Snifferı kullanabileceğiniz gibi, Arduino+CAN Shield ile kendiniz de yapabilirsiniz.
Donanımdan ziyade, gelen dataları kolayca okumanızı sağlayacak bir yazılım olması gerekiyor. Wireshark bu konuda bence çok başarılı değil (veya ben kullanamadım). Başka bir uygulama wireshark kullandığı için nasıl yapabilirim diye araştırdığımda yapmıştım.


argeman

#32
Evet şimdi nano+mcp2515  ikilisiyle denedim teşekkür ederim, veriler geliyor, kodları paylaşıyorum belki arkadaşların işine yarayabilir. CS  yani chip select pinini 10 nolu pine bağlamayı, karşı tarafın iletim hızını,  çalışma frekansını (örnek 250 kbit - 8 Mhz) aynı tutmayı  ve  interrupt pinini 2 nolu çıkışa bağlamayı unutmayın.


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

unsigned long Time;

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_250KBPS, 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
  
  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
    {
      Time = millis();
      
      CAN0.readMsgBuf(&rxId, &len, rxBuf); // Read data: len = data length, buf = data byte(s)
      
      Serial.print(Time);
      Serial.print(", ");
      Serial.print("ID: ");
      Serial.print(rxId, HEX);
      Serial.print(" Data: ");
      for(int i = 0; i<len; i++)          // Print each byte of the data
      {
        Serial.print(rxBuf[i], DEC);
        Serial.print(", ");
      }
      
  Serial.println();
  
    }

}

muhittin_kaplan

#33
--