Pages: [1] 2   Go Down
Author Topic: My home-brew Arduino OBD-II connection kit  (Read 44638 times)
0 Members and 3 Guests are viewing this topic.
Sydney
Offline Offline
Full Member
***
Karma: 1
Posts: 108
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

After many researches and attempts to connect an Arduino with my car through the OBD-II connector and having some successful works of car dashboard gadget, I’ve finally made a kit which enables those who want to playing with Arduino and their cars to jump start quicky.

I am maintaining an arduino library for the adapteras an open-source project. It provides Arduino developers an easy-to-use APIs to connect to and retrieve realtime data from a vehicle, which include:
  • Vehicle speed
  • Engine RPM
  • Throttle position
  • Calculated/absolute Engine load
  • Engine coolant temperature
  • Intake temperature
  • Intake pressure
  • MAF flow pressure
  • Fuel pressure
  • Barometric pressure
  • Ignition timing advance
  • Engine running time
  • Vehicle running distance
The adapter can be easily used with Arduino or other MCU boards, providing 5V power supply (up to 500mhA current, with reverse protection), so a wire getting power from somewhere else is not needed. This helps to make the gadget you made looks tidy. The only interface to the car of the adapter is the OBD-II connector.





By having access to these data, the Arduino can compute, store or show the realtime vehicle status in any unique way.
Here is a fancy dashboard gadget I made for my car (with video).


If you are interested in my Arduino OBD-II connection kit, please see here for more details.
« Last Edit: June 24, 2013, 10:14:46 pm by stanleyhuang » Logged


Global Moderator
Netherlands
Offline Offline
Shannon Member
*****
Karma: 212
Posts: 13531
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Familiar with this site - http://www.obd-codes.com/- ?

still on my wish list smiley
Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Does the kit come with an Arduino board?  I have an Arduino Uno and it doesn't look like the harness will work with it. I guess I would just have to take the 4 wires out of the harness and wire them to the appropriate pins?  What board is best to use with your adapter?
Logged

CO, USA
Offline Offline
God Member
*****
Karma: 5
Posts: 711
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Looks like it's plugged into an Iteaduino. A Uno would be fine. Yes, you'd need to connect to VCC, GND, TX, and RX on your Uno, which aren't located in a 4-dip row as you see in the Iteaduino.
Logged

... it is poor civic hygiene to install technologies that could someday
facilitate a police state. -- Bruce Schneier

London
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

i am going to buy one for my wife's car. it will hopefuly prove how bad she drives.  smiley-eek
Logged

If only my wife was as easy to control as an atmega328!

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi Stanley!
I would really like to buy your adapter but had a few questions about it.
1. It supports all protocols? And has the ELM327 autosearch mode (for non-CAN compliant cars)?
2. I want to add to your library by adding more AT commands - So does the adapter support all AT commands?
3. Can you let the power line be at 12v instead of 5v? I'd like the 12v to power other components on my arduino shields and let arduino's power converter deal with the 12v.

Thanks.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@Stanleyhuang
I'm writing a similar application. I want to display the gear number in which the car is in but i'm having problem to get the pid or any relevant pids.
Can you provide me any formulas and any material or links which will help me. how where are you getting the gear number ?

cheers.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Stanly's website is down ...
I have bought the adapter, and I just got it ... and I can't find any documentation on how to connect it!!

Anyone used his adapter?
Logged

Dubuque, Iowa, USA
Offline Offline
Edison Member
*
Karma: 45
Posts: 2474
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I did not see any problems with his web site.

The library itself is hosted on Sourceforge: http://sourceforge.net/projects/obdcon/
Logged

Smithfield, Rhode Island
Offline Offline
God Member
*****
Karma: 3
Posts: 843
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Where did you find the enclosure?
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 5
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I think this is awesome.

I've always used an OBDII reader on my car but always hassle with having to drag my laptop around or using up my phone, which also means I have to plan ahead and didn't have a seamless way with out sitting in the car getting everything started before driving. Should record everything even on quick trips around town without me doing anything or watching a screen.

I hope to give this a shot!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi, I'm looking to do the opposite, I have an aftermarket ECU which I can get data out of from via a serial cable but I'd like to make this available to the ODB port for the ELM to read so a standard ODB code reader/ODB software will work, is this likely to be possible with the experience you've gained from doing your project?

Thanks
Logged

Johannesburg, South Africa
Offline Offline
Full Member
***
Karma: 0
Posts: 159
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

This looks like a great project and could be very useful.

As matter of interest, where do you find the different codes / commands for the car, if you for instance want to "check all the systems", or adjust the CO2, or something like that?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

First of all, download and read the ELM327 docs at the Elm Electronics site.

http://elmelectronics.com/obdic.html#ELM327

They made the Industry Standard decoder firmware for a PIC18 microcontroller that they called ELM327. It can talk to a car's ECU computer over most of the protocols in use, and convert them into a common ASCII form. OBD is the standard connector, with different car makes and models using different protocols over different pins on the connector. Software vendors then created allegedly specialized monitoring packages using the ELM327 for this or that car, at hefty prices. Companies in Asia then copied the ELM327 firmware and started selling clones using the PIC18 or other microcontrollers, presented through various interfaces: USB, Bluetooth, Serial, WiFi. These are available on e-bay at low prices. Some are better than others. I just got a working $15 unit with a USB plug that can be used with any computer that can virtualize a device USB connection as a COM port. There are many teaser PC programs available that allow you to read a handful of parameters (so you buy their full package), but a terminal program works too.

What Stanley is offering is an ELM327-compatible OBD-II interface, with a cable bearing TTL compatible serial data, so it can be directly connected to e.g. Arduino I/O pins. It's then a simple serial connection that any Arduino buff can use to query, store and display the desired car parameters, with Stanley providing some useful example code.

The place to start is understanding the base AT commands to control the ELM327, and then the deeper OBD "PID"s that can be used to request this or that specific parameter from the engine. OBD is mostly a "read-only" monitoring system, but not entirely. One of the clearer PID lists is on Wikipedia:

http://en.wikipedia.org/wiki/Table_of_OBD-II_Codes

You can use a terminal program to get your bearings. For Instance typing the ATI command (followed by Carriage Return) will probably evoke a reply like "ELM327 v1.5", though ELM never made a version 1.5. Once the interface is mated with the OBD connector on the car, you can type ATRV and read the battery voltage. Yes, there is a simple command to clear the annoying Engine Warning Light and wipe ALL the associated logs and diagnostic data, in one fell swoop, so I won't tell you what that is.

@DaveyRavey's request is more difficult. The ELM327s convert some quite knarly protocols into clear ASCII. To mimic an ECU talking from the car side of the OBD connector entails fully understanding and then emulating one of these protocols, complete with its specific modulations scheme, handshakes and error handling. Many of these protocols use the old annoying (and ineffective) "security through NDA and obfuscation" technique to waste your time.
« Last Edit: July 28, 2013, 04:13:31 am by Peakdesign » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi, i'm looking at getting into a project like this.
I own a japanese import car which is not obd2 compliant.
It uses some jobd protocol.

I'm just curious will this connection help me to read information coming from the ecu.
Also how with a obtain information coming from the ecu, would i just use the tx and rx pins?

Thanks.
Logged

Pages: [1] 2   Go Up
Jump to: