My home-brew Arduino OBD-II connection kit

@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.

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?

I did not see any problems with his web site.

The library itself is hosted on Sourceforge: OBD-II for Arduino download | SourceForge.net

Where did you find the enclosure?

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!

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

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?

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:

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.

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.

Hello,
congratulations for a job well done!
Also I have created a dashboard OBDII but I used another microcontroller, the NXP LPC1768.
I'd like to have your opinion, HERE you can find the video demo! :slight_smile:
Hello and congratulations again!

I have ordered one. How long it takes for shipping to U.S.? Thanks.

@Dario Gogliandolo
looks pretty good!

Really nice product, I think....

I've purchased two of these things thinking the first might be defective as I couldn't get any sort of clear readings out of it even when I connected the UART lines to an oscilloscope.

I'm an electronics engineer and I don't see any issues on my end, I can't even get the simple LED program to work for engine RPM over 2000.

I've tried it on a 1999 and a 2000 Firebird with no results. But cars OBD ports work fine with all other scanners.

Really is a shame, would love to figure it out finally

Any news on this?

1 Like

I was able to communicate with my car using Stanley Huang's (Freematics) OBD adapter - 2008 Hyundai Accent\Verna CRDi (turbo diesel).

The OBD CAN bus data is displayed on 20x4 LCD using Arduino Mega 2560 & OBD UART version adapter.

Left side
Engine rpm
Fuel Rail Pressure in kpsi
Boost in psi
Voltage at ECU

Right side
Intake Air temperature in celsius
Coolant water temperature in celsius
Load in %
Commanded EGR in %

1 Like

Coded a RPM based dual stage LED shift light. The LED shift light is programmed to 'blink' between 2800-3800rpm, more than 3800rpm it remains 'on'. Its a direct injected turbo diesel hence the rev range is limited unlike gasoline.

Dual Stage RPM Shift Light

The solution is to put your seat belt on

Sorry to bump an old thread but am i able to use this alongside another OBD2 connection, i require another connection in order for me to log variables on my ecu for home tuning.

Hello.
I need necessary hardware to control the Light Module on an 2006 BMW, especially to activate the brake lights.
Can this be done by any of Telematics Kits?

I don't recommend buying this product as the support is abysmal at best.

I've tried emailing support directly as well as using their dedicated forum and haven't received a reply
in over a month.

If you go to the forum you will see hundreds of questions without replies from the developer.

I had to figure out the problem myself which was a misdirected reference to the folder than contains
the .h and .cpp files.

This was also communicated to other members on the Freematics forum and the designer, without any
acknowledgement.