chipKIT® Development Platform

Inspired by Arduino™

Extracting Data From Vehicle OBD or OBD II Port

Created Thu, 29 Jan 2015 20:16:26 +0000 by BobCochran


BobCochran

Thu, 29 Jan 2015 20:16:26 +0000

[color=#0000FF]I would like to do a project where I connect a Fubarino SD to the "On Board Diagnostic" (OBD) port of my car, extract information from it, and wirelessly send that data from the Fubarino to a host computer at my home. My vehicle is quite old, a 1996 Toyota Corolla. It probably has an "OBD" port as opposed to an "OBD II" port. I would like this to be possible even if I am driving. However it seems possible to get a wifi connection close to my home: my car is usually parked about 150 feet from my house, on the street.

I'm specifically looking to identify the presence or absence of "trouble codes". If there are no trouble codes, send the current date and time, the vehicle identification number, and the text "No trouble codes reported". If there are trouble codes, send the current date and time, the vehicle identification number, and a list of trouble codes found. The data has to be encrypted and and needs to be sent to my home network.

From the standpoint of hardware, I know I will need an "On Board Diagnostic" connector with all the pins and wires available for connection to the Fubarino. Perfboard, the Fubarino, and a radio transceiver of some sort. For power, I can regulate down the vehicle's 12v power (from the accessory power plug).

Does this seem like a very difficult project to do? Has anyone else on this forum done exactly this sort of thing?

Thanks

Bob [/color]


GrahamM242

Fri, 30 Jan 2015 12:12:52 +0000

Never tried it personally, but wow, that's a fair few challenges going on there. I'd recommend you find out what kind of ODB connector you have, as I suspect it may be ODB II, and it may be utilising the ISO 9141 standard.

In terms of power, it is possible that if you have ODB II that there may be permanent power available on the connector.

You may find it easier to utilise one of the ELM OBD chips, as it makes talk to the car easier. On the other hand, there's nothing stopping you attempting to do it all on the Fubarino SD, but it means you'll need to handle the physical layer as well the protocol in use.

Once you're able to talk to the car, you'll need to know the commands to send to retrieve the list of trouble codes and how to interpret it.

If you have Wifi accessible, you may be able to make use of a wifi module to transmit the data back somewhere. It'll also give you the ability to set the date/time via NTP. The Fubarino SD has a RTC, but the crystal and capacitors are not factory fitted, so you'd want to consider adding those.

Sounds fairly ambitious to me!


BobCochran

Fri, 30 Jan 2015 19:56:51 +0000

[color=#0000FF]Thank you very much! I will do more homework and see what I can come up with.

Bob [/color]


jmlynesjr

Sat, 31 Jan 2015 18:03:03 +0000

Hi Bob:

The November 2013 issue of Elektor magazine([url]http://www.elektor-magazine.com[/url]) has an article on building a CAN Tester. It uses a SJA1000 CAN Protocol Controller and a PCA82C250 CAN Transceiver. This project is based on an ATmega8515 processor.

James


GrahamM242

Sun, 01 Feb 2015 10:09:54 +0000

Given the age and manufacturer of the car, it's less likely to use CAN on the OBD-II connector. That's not to say CAN isn't used elsewhere - my 2006 Toyota utilises CAN between a couple of the ECUs, but doesn't present it for diagnostics. Sadly, it utilises ISO 9141 for diagnostics.

The quick search I did on Bob's vehicle suggested it'd probably be OBD-II and ISO 9141, although that's no replacement for actually checking out the vehicle for real!


BobCochran

Sun, 01 Feb 2015 14:15:13 +0000

[color=#0000FF]Thanks a lot to both of you for your help. I will do my homework and keep checking. I have a definite project in mind: I want the vehicle to send any trouble codes to a host system in my house, using wifi. Apparently, OBD information plus some type of wireless transmission is used to monitor driver behaviors -- I assume the "drivers" being monitored are professional truck drivers and fleet vehicle users. Since the idea is already in use I might be able to tap into it to get some sort of early information about whether my car is developing a fault. I'm only expecting to do this as I park close to my home or drive close by the house -- which is sufficient. Or, I could possibly get real time information by having a connection to my cell phone -- an iPhone. It could send me a popup message when trouble codes are received.

Based on what you are both saying I also wonder if it is possible to upgrade the original OBD system in my car with something more modern?

Thanks again to both of you! I will keep working on this idea.

Bob [/color]


GrahamM242

Sun, 01 Feb 2015 15:09:28 +0000

I'd presume that driver behaviour is monitored by a mixture of data sources, such as accelerometers as well as OBD information. OBD can get you information such as fuel levels, accelerator position, vehicle speed and so on.

You may find information such as http://www.outilsobdfacile.com/obd-mode-pid.php and http://en.wikipedia.org/wiki/OBD-II_PIDs to be useful in determining if fault codes are present (Mode 1 PIDs 1 and 2).

In terms of upgrading the ODB system - I'd not recommend it. On my vehicle, the body ECU appears to manage the ODB connection, which means it does a whole bunch more stuff than just ODB. The overview of the electrical system for my vehicle is about 8 pages long - if you really want to get into this stuff, I'd recommend having documentation on your car's electrical system if you can.


singhal2

Wed, 18 Mar 2015 07:28:50 +0000

Hello,

Sorry for the lack of information provided, I am a newbie and have close to no experience in the field. I am working on a really straightforward project in which I am required to extract sensor data from the OBD II port from a car and transmit that data preferably via satellite. I am a beginner and not quite sure what hardware to use in order to extract the data and transmit it via satellite to a remote computer.

I was doing some research and found that an OBD II to USB cable can be used to extract the information to a laptop directly, but I need to use some hardware in order to redirect this data to a remote PC.

Best regards, Abhi