Possible to read OBD2 with just arduino.

Hi, Im wondering is it is possible to read OBD2 without an extra adaptor so just the arduino and wires.

People read OBD1 without an extra adaptor like here: https://www.drive.net/l/3456653/

Why cant we read OBD2 without adaptor? is it electronics isue or makes it it only easyer to read ?

Looks like ODB2 has CAN signals


The Arduino Due (with an ARM Cortex-M3 core) has dual CAN bus Physical Layer (PHY) controller built into the Atmel chip but it needs transceivers (e.g. SN65HVD230) to drive the bus. On the other hand, there are shields that have both MCP2515 (the PHY) and MCP2551 (the transceiver).


The library to use the DUE looks active, I have no clue if it works with the MCP2551 or other CAN PHY chips (probably not).


thanks! i will take a look at it. And probably dive a little deeper in CAN. I was just wondering if you could just read in the signal en cut out the right bits on one of the pins.

But thats probably not going to work xD

The thing is, cant i just read CAN-high and CAN-low on analogIn pins and calculate on my own if it sends zero's or 1's and cut out the byte's i need for speed etc and convert that to numbers? see image: http://www.kfztech.de/kfztechnik/elo/can/bmw1.JPG I know that i can just use the shield but im stuck with this idea for a while now.

I will probably need a datasheet etc but isnt this theoreticaly possible? or am i overseeing some basic stuff here?

It is surprising what is possible given the will, but I think the ADC is too slow. The CAN bus is fairly fast and differential though not symmetric (news to me), it does look like the voltage levels on CAN_H could be seen by an MCU input as logic levels. Perhaps if watched with a tight code loop using a fast MCU the data could be decoded, but that MCU would be otherwise unable to do anything. The PHY hardware offloads all that work so the MCU can do something useful. I had no idea the CAN_H and CAN_L were so lopsided.