Interpreting CAN bus data from OBD port

arduinocanobd

I'm using an Arduino with MCP2515 and MCP2551 to read data from a CAN bus over the OBD-II port of my car, Honda Jazz 2012. From what I've read on other forums and the OBD wiki, I can transmit the PID query to the engine over CAN ID 0x7DF and should be receiving the data on 0x78E.

I'm transmitting the data in the format described on the wiki:

Number of bytes|01|PID|0|0|0|0|0

The data I'm receiving doesn't contain data from CAN ID 0x78E or any ID nearby. Also even if I'm not sending data to the CAN bus, I'm still receiving the data, so using that I tried to remove noise, but it seems all the CAN IDs are broadcasting all the time.

So, I sampled some STN1110, OBD-to-UART interpreter, and tried to tap the connection between STN and the car ECU. It appears that the STN has a CAN ID of 0x18DB33F1 and the ECU is transmitting the data queried over CAN ID 0x18DAF110. I've put some of the data here: https://goo.gl/zTTIkk.

  • Do I need to assign my circuit an ID manually. I believe it's done automatically, otherwise I won't be getting any data.
  • How do I interpret this data? Is there a way or I'll just have to go with reading more data and making sense out of it, removing noise little by little.

I have read that there is a gateway between the OBD port and the CAN bus, so to access data from the bus, I'll need to pass the gateway. How?

Best Answer

It appears that the car ECU was a bit old and it uses raw can instead of diagnostic can. I changed the car and everything is working as it should.

Related Topic