Vehicle Arduino: Difference between a CAN-BUS and OBD2 UART connections?

Hi friends,

Forgive my newb-ish question. I would like to hook up my Arduino Uno to my 1997 Honda Civic to see what I can dig-out of it’s system (and perhaps what I can control). To do this I’ve found a few different devices from doing forum searches here:

1.) SparkFun’s OBD2 UART connection (
2.) ArduinoDev’s OBD2 UART connection (Freematics OBD-II Adapter for Arduino |
(Tutorial on same page)
3.) SparkFun’s CAN-BUS shield (
(Tutorial not found yet, maybe here,131096.0.html or here

My question’s are:
Q1.) What’s the difference between ODB2 UART and CAN-BUS? (Maybe I’m comparing apples to oranges?)

Q2.) If they are simply different connections for different information, which information is available on each connection?

Q3.) If you have attached an Arduino to your vehicle, which device did you use?

Thanks a bunch in advance.

For those interested, I think i found my answer on ArduinoDev FAQ:

  • The [ArduinoDev] adapter retrieves data from CAN bus, like a CAN bus shield does and convert the more complicated CAN bus interface to simple serial UART interface which Arduino and most embedded systems are easy to access. The data connection is provided by adapter’s data connector (Rx and Tx). (

I ordered the ArduinoDev OBD2 UART connection. It comes with extras like 1.) Data Logger Shield, 2.) "MPU6050 module inside the case, which provides accelerometer, gyroscope and temperature sensor all accessible via I2C" 3.) no soldering required. It looks like SparkFun's ships with the pins detached.

I'm not sure why one would want to buy the CAN-BUS shield if the other 2 do so much more?