I hate to reawaken a dead thread, but this information is not completely accurate...
OBD-II includes 5 different signalling protocols:
- SAE J1850 PWM
- SAE J1850 VPW
- ISO 9141-2 (K-Line)
- ISO 14230 KWP2000 (Keyword Protocol 2000)
- SAE J1939 / ISO 15765 CAN
Which protocol was used depended on the manufacturer of your vehicle. Both the ELM327 and the STN1110 are able to use all five protocols, so that they will talk to any vehicle with an OBD-II port.
However, here in the US, all cars manufactured after 2008 are required to have a CAN interface to OBD-II. There are sometimes multiple CAN buses, with a high speed bus (500kbps) used for engine information and a medium speed (125-250 kbps) bus used for entertainment controls and air conditioning. I use a SeeedStudio CAN shield to pull OBD-II information from my 2009 Ford Focus. It's a bit primitive compared to some of the nicer tools out there, but I've learned quite a bit about CAN in the process.
And to answer the questions listed:
- Yes, the ELM327 or the STN1110 can directly act as the interfacing device between OBD and Arduino
- No, the MCP2551 (or MCP2515) won't work with ELM327 protocol
- The MCP2515 is the CAN controller chip, similar to a UART for a serial port. The MCP2551 is the CAN transceiver chip, similar to the MAX232 for a serial port. The MCP2515 will generate the correct signals as far as timing is concerned, but they will be at the wrong (TTL) voltage. The MCP2551 takes in the signals from the MCP2515 and converts them to a voltage that the rest of the CAN bus understands
- For new cars in the US, all you technically need is CAN. For the maximum number of new and old cars, either the ELM327 or STN1110 are your best bet