Jump to content

Read Vehicle OBD (& Need somebody who knows serial)

My goal is to read the vehicles codes (such as Tach, fuel level, oil temp) out of the OBD port on my car. But I have an odd situation.

 

From my research, the computer in this car is a GM OBD "1.5" (As Described in the OBD-1.5 section here) the computer using something called "ALDL" at 8192 baud. I figured out this is some format of a serial interface. I tried using an arduino to interpret the data pin on the OBD port but just got a bunch of nonse in the serial log. I have searched through tons of forums and information pages to no avail and i'm pretty confused. Is there anything anybody could shed light on? 

 

 

Computers r fun

Link to comment
Share on other sites

Link to post
Share on other sites

you'll need to cipher the data stream to input device. usually an emulator will sort the data and extract what is necessary and what is not.

if you can find you an old auto X-Ray and backward engineer what you are looking to do. the X-Ray in its format does all what you have laid out and more..

fuel level is an analog output and isn't related to the data stream.

Link to comment
Share on other sites

Link to post
Share on other sites

11 hours ago, TheNuzziNuzz said:

My goal is to read the vehicles codes (such as Tach, fuel level, oil temp) out of the OBD port on my car. But I have an odd situation.

 

From my research, the computer in this car is a GM OBD "1.5" (As Described in the OBD-1.5 section here) the computer using something called "ALDL" at 8192 baud. I figured out this is some format of a serial interface. I tried using an arduino to interpret the data pin on the OBD port but just got a bunch of nonse in the serial log. I have searched through tons of forums and information pages to no avail and i'm pretty confused. Is there anything anybody could shed light on? 

 

 

saw your post, I have a couple of quick questions.

1.) why are you using an arduino (just curious).

2.) what arduino.... the mega? the uno?

3.) do you need to use an arduino? like are you making a real time display for your dash? (very cool if ya are).

4.) can you post the sketch you used?

5.) can you post the garbage the arduino output.

6.) how did you hook up the arduino to the odb port (wiring diagram or something, anything)

7.) for the love of all, what kind of car is it? year, model, pic of odb port.

8.) have you tried a real odb diagnostic tool as @airdeano mentioned, if not, why, and do you plan to?

9.) are you sure its "ODB-1.5"?

Spoiler

image.png.ca01360f923e7677749acdd5b365450e.png

 

Research Dump (no fancy hyperlinks, copy and paste your heart out)

Spoiler

https://github.com/search?q=ALDL+arduino

https://web.archive.org/web/20160710195758/http://wbo2.com/~techedge.com.au/vehicle/aldl160/160serial.htm

https://web.archive.org/web/20160723015028/http://wbo2.com/~techedge.com.au/vehicle/aldl8192/8192hw.htm#connectors

https://web.archive.org/web/20160723012011/http://wbo2.com/~techedge.com.au/vehicle/aldl160/aldl_hw.htm

https://web.archive.org/web/20160714164122/http://wbo2.com/~techedge.com.au/vehicle/aldl160/aldl_sw.htm

https://web.archive.org/web/20160519164449/http://wbo2.com/~techedge.com.au/vehicle/aldl8192/8192baud.htm

https://web.archive.org/web/20000506043523/http://www.isthq.com/~dan/aldl.htm

 

In my semi-expert opinion, you 'should?' (I'm 45% confidant) be able to interpret the odb output with an arduino, if and only if....

1.) you know the data format, "data map"?.... how the data if being packed and sent.

2.) you connect at the right baud rate and voltage (mmm smells like cooked arduino). For this, I bet you could manually poll a digital pin at the right freq (like softserial), or use a rs232-ish chip that can handle your wonky baud rate (then interface that into the arduino).

 

if your 100% committed, I would buy a cheap logic analyzer (ebay, 10 bucks) and maybe a test computer to poke at (junk yard fun).

 

Hope your project turns out, quote me if ya need me, i'm not a car guy though.

 

P.S. This is old stuff, your gona have to look real hard to find answers.

 

Link to comment
Share on other sites

Link to post
Share on other sites

13 hours ago, TheNuzziNuzz said:

I tried using an arduino to interpret the data pin on the OBD port but just got a bunch of nonse in the serial log.

Even if we assume you're monitoring the data correctly, did you expect the car's computer to spit out human readable ASCII text ?

A protocol is more then just the electrical connection and the way individual bits are sent, it also includes the way the data is formatted, the "language" if you will. Without exact knowledge of this format and some program code to decode it, the raw data will of course look like nonsense.

 

Link to comment
Share on other sites

Link to post
Share on other sites

Spoiler
19 hours ago, airdeano said:

you'll need to cipher the data stream to input device. usually an emulator will sort the data and extract what is necessary and what is not.

if you can find you an old auto X-Ray and backward engineer what you are looking to do. the X-Ray in its format does all what you have laid out and more..

fuel level is an analog output and isn't related to the data stream.

11 hours ago, Unimportant said:

Even if we assume you're monitoring the data correctly, did you expect the car's computer to spit out human readable ASCII text ?

A protocol is more then just the electrical connection and the way individual bits are sent, it also includes the way the data is formatted, the "language" if you will. Without exact knowledge of this format and some program code to decode it, the raw data will of course look like nonsense.

 

 

12 hours ago, KeyboardCowboy said:

saw your post, I have a couple of quick questions.

1.) why are you using an arduino (just curious).

2.) what arduino.... the mega? the uno?

3.) do you need to use an arduino? like are you making a real time display for your dash? (very cool if ya are).

4.) can you post the sketch you used?

5.) can you post the garbage the arduino output.

6.) how did you hook up the arduino to the odb port (wiring diagram or something, anything)

7.) for the love of all, what kind of car is it? year, model, pic of odb port.

8.) have you tried a real odb diagnostic tool as @airdeano mentioned, if not, why, and do you plan to?

9.) are you sure its "ODB-1.5"?

  Reveal hidden contents

image.png.ca01360f923e7677749acdd5b365450e.png

 

Research Dump (no fancy hyperlinks, copy and paste your heart out)

 

In my semi-expert opinion, you 'should?' (I'm 45% confidant) be able to interpret the odb output with an arduino, if and only if....

1.) you know the data format, "data map"?.... how the data if being packed and sent.

2.) you connect at the right baud rate and voltage (mmm smells like cooked arduino). For this, I bet you could manually poll a digital pin at the right freq (like softserial), or use a rs232-ish chip that can handle your wonky baud rate (then interface that into the arduino).

 

if your 100% committed, I would buy a cheap logic analyzer (ebay, 10 bucks) and maybe a test computer to poke at (junk yard fun).

 

Hope your project turns out, quote me if ya need me, i'm not a car guy though.

 

P.S. This is old stuff, your gona have to look real hard to find answers.

 

First, woah thank you so much for the help, I was honestly surprised because I knew its a little abstract a topic for this forum. Alright so here are some answers.

 

As you guessed I am using the arduino because the goal is to build my own gauge/instrument cluster (real time display) for the dash. 

 

Now for the fun stuff. The car is a 1964 4 door impala.

Spoiler

IMG_20190716_160138.thumb.jpg.8a07c340a734e3df267148ae04fab0be.jpgIMG_20190716_160148.thumb.jpg.4d9b443bdcf495ec035c5ff38133e189.jpg

It has a 94 LT1 Engine, the goal being a 94 Impala theme (As you can see with the 94 wheels). The tuner that I use said he can only hack the OBD1 computer. The engine is OBD2 but it is connected as normal to the OBD1 computer:

Spoiler

IMG_20190716_160235.thumb.jpg.b4dd84290d34faf73aafab1168438554.jpg

The wiring OBD harness however is as follows:

Spoiler

IMG_20190716_160232.thumb.jpg.122ae529d52f360ff2ab6eb6cbe73c03.jpg

Which is confusing because it is connected to an OBD1 computer. 

 

Using a volt meter and some research I found that this OBD2 port matches what i found to be called "OBD 1.5" with a 16 pin OBD2 connector despite being OBD1. The bottom left most pin (pin #9) carries 8192 baud data. I have found the first two on the top are ground, the 3rd is 5 volts and the bottom right is 12 volts. With my multimeter i also found that the data line operates at max 5 volts. 

 

I used my Arduino Uno oscilloscope on the 8192 pin and it does infact appear to be a square wave digital signal with a max of 5 volts. The next thing I did was use the following code on one of my megas:

 

void setup() {
  // initialize both serial ports:
  Serial.begin(9600);
  Serial1.begin(8192);
}

void loop() {
  // read from port 1, send to port 0:
  if (Serial1.available()) {
    int inByte = Serial1.read();
    Serial.write(inByte);
  }

  // read from port 0, send to port 1:
  if (Serial.available()) {
    int inByte = Serial.read();
    Serial1.write(inByte);
  }
}

And in the console of my computer appeared:

Spoiler

IMG_20190716_160210.thumb.jpg.c43ca7ee8972ea5a8eeec1a09693b2d3.jpg

Also:

I have a snap-on scan tool that can read pretty much anything. It does read from this OBD port and gets the full plethora of diagnostics data (tach, pedal actuation percentage, etc)

 

Also pt2:

I have found this motherload of research on a forum, its actually quite impressive and I think goes into detail about the protocal, how it works for what cars, what the codes mean, and how to make your own "ALDL" cable which seems to be what this 8192 baud data stream is.

 

Check it out here: http://www.mediafire.com/?0elo4c935uc5s#myfiles

 

Anyway, thank you all for your kind help, I really do want to see this through. I have some parts coming Thursday to make this OBD1 ALDL scan cable, i'm going to see if that gets me anywhere. 

Computers r fun

Link to comment
Share on other sites

Link to post
Share on other sites

  • 2 weeks later...
On 7/16/2019 at 9:25 PM, TheNuzziNuzz said:

- SNIP -

It could also be worth looking into the ELM327 IC which is designed for reading the OBD interface:

 

https://en.wikipedia.org/wiki/ELM327

I will only ever answer to the best of my ability - there is absolutely no promises that I will be correct. Or helpful. At all.

 

My toaster:

Spoiler

CPU: Intel Core i5-4670k @ 4.3GHz
Motherboard: Asus Maximus VI Formula
RAM: 16GB Corsair Vengeance DDR3
GPU: Nvidia GeForce GTX770 2GB
Case: Some free Sharkoon case
Storage: Crucial MX500 500GB SSD | Western Digital Blue 1TB
PSU: Corsair HX750
Display(s): Acer framless 24" 1080p thing | Acer 22" 1600x900 thing
Cooling: Corsair H100i AIO | 2 x Corsair LL120 front intakes on radiator | 1 x Corsair LL120 rear exhaust
Keyboard: Steelseries Apex
Mouse: R.A.T 7
Sound: HyperX Cloud II headset | Creative EAX 5.1 speakers
OS: Windows 10 Pro

 

Link to comment
Share on other sites

Link to post
Share on other sites

13 hours ago, TheNuzziNuzz said:

I don't believe it supports ALDL Interface ("Obd 1.5")

It looks as though you may be correct - sorry about that ...

I will only ever answer to the best of my ability - there is absolutely no promises that I will be correct. Or helpful. At all.

 

My toaster:

Spoiler

CPU: Intel Core i5-4670k @ 4.3GHz
Motherboard: Asus Maximus VI Formula
RAM: 16GB Corsair Vengeance DDR3
GPU: Nvidia GeForce GTX770 2GB
Case: Some free Sharkoon case
Storage: Crucial MX500 500GB SSD | Western Digital Blue 1TB
PSU: Corsair HX750
Display(s): Acer framless 24" 1080p thing | Acer 22" 1600x900 thing
Cooling: Corsair H100i AIO | 2 x Corsair LL120 front intakes on radiator | 1 x Corsair LL120 rear exhaust
Keyboard: Steelseries Apex
Mouse: R.A.T 7
Sound: HyperX Cloud II headset | Creative EAX 5.1 speakers
OS: Windows 10 Pro

 

Link to comment
Share on other sites

Link to post
Share on other sites

5 hours ago, MrJoosh said:

It looks as though you may be correct - sorry about that ...

Thank you anyway thought!

 

I actually did figure something out. I got this FTDI chip and it seems to allow me to interface between my computer and the ECU. I just ran jumpers between the ground connections, and the 8192 pin in the ECU and the TX/RX on the ftdi chip. I just have to figure out what the hexidecimal I'm receiving means.

Computers r fun

Link to comment
Share on other sites

Link to post
Share on other sites

On 8/1/2019 at 4:18 PM, TheNuzziNuzz said:

Thank you anyway thought!

 

I actually did figure something out. I got this FTDI chip and it seems to allow me to interface between my computer and the ECU. I just ran jumpers between the ground connections, and the 8192 pin in the ECU and the TX/RX on the ftdi chip. I just have to figure out what the hexidecimal I'm receiving means.

 

What protocol are you expecting? I would assume you want to parse either UDS or J1939 data, which means you first have to find CAN data. It's possible you're looking at CAN data in some form or another.. 

 

If you are expecting CAN data, I would suggest buying a USB-CAN interface (I recommend LAWICEL as it comes with very easy to use C# and C++ libraries and drivers to use it), and connect it to a PC to figure out what kind of data you are expecting.

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×