The name OBDuino comes from OBD, which means On Board Diagnostics and from the development board which was an Arduino (a clone, in fact). Some technical info: it is based on an Atmel AVR ATMEGA168 chip that contains 16K of flash, 1K of RAM and 512bytes of EEPROM, an LCD display, 3 buttons and a few $ of electronics components. Firmware has evolved so much that nothing from the Arduino/Wiring API is left.
The OBDuino connects to the car on its OBD-II plug which is, in general, under the dash. A lot of signals are on this plug as well as battery voltage and ground.
The interface to the car is made with a pair of Microchip 2515/2551 for CAN only protocol.
I reduced the size especially for the height which is now less than 2" so it can fit in a 1 DIN size empty tray slot for instance.
The 3 buttons are on the side and can be separated from the main PCB, they are connected with wires so they can be put anywhere on the dash or even the steering wheel, being creative.
Full schematic:

Populated:
PCB and all components are RoHS compliant. LCD display is a high quality FSTN one, with black pixels, rated to -20°C.


A CAN only cable, small and thin, use a 4P4C telephone handset plug:
| 4P4C | OBDII |
|---|---|
| 1 (black) | 5 (Signal ground) |
| 2 (red) | 14 (CAN Low) |
| 3 (green) | 6 (CAN High) |
| 4 (yellow) | 16 (Battery) |
Populated:




For development, the interface connects to the Arduino on a few pins as well as the LCD and the buttons, and to the OBD-II plug with a serial cable. It looks like a rats' nest as is but this is what I used to develop!
Whole setup with Arduino board, interface, LCD, buttons:

CAN Interface that also takes the +12V from the OBD2 plug, it also includes a voltage divider and a on/off switch:

Home made OBD2 Serial cable:

Pinouts:
DB9F OBD-II 1---------------5 (Signal ground) 2---------------4 (Chassis ground) 3---------------6 (CAN High) 4---------------7 (ISO K line) 5---------------14 (CAN Low) 6---------------10 (J1850 bus-) 7---------------2 (J1850 bus+) 8---------------15 (ISO L Line) 9---------------16 (Battery)

Arduino 0 (RXD/PD0) - nothing 1 (TXD/PD1) - nothing 2 (INT0/PD2) - LCD VCC (pin 2) 3 (INT1/PD3) - MCP2515/INT (pin 12) 4 (T0/PD4) - LCD Register Select (pin 4) 5 (T1/PD5) - LCD Brightness (pin 15) 6 (AIN0/PD6) - LCD Contrast (pin 3) 7 (AIN1/PD7) - Button Right 8 (ICP/PB0) - Button Middle 9 (OC1/PB1) - Button Left 10 (SS/PB2) - MCP2515/CS (pin 16) 11 (MOSI/PB3) - MCP2515/SI (pin 14) 12 (MISO/PB4) - MCP2515/SO (pin 15) 13 (SCK/PB5) - MCP2515/SCK (pin 13) 14 (ADC0/PC0) - voltage divider input 15 (ADC1/PC1) - LCD Enable Strobe (pin 6) 16 (ADC2/PC2) - LCD Data4 (pin 11) 17 (ADC3/PC3) - LCD Data5 (pin 12) 18 (ADC4/PC4) - LCD Data6 (pin 13) 19 (ADC5/PC5) - LCD Data7 (pin 14)You can use something like the CANSPI Extra Development Board from mikroElektronika to help you.
CAN library courtesy of Fabian Greif, see http://www.kreatives-chaos.com/artikel/universelle-can-bibliothek for more details
/*
* Copyright (c) 2007 Fabian Greif, Roboterclub Aachen e.V.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: mcp2515.c 6927 2008-12-03 22:42:59Z fabian $
*/