Thanks Zack,
There are two components key components, the hardware and the software.
Hardware:
- 12 voltage regulator
- an Arduino
- blue tooth module
- 5.1 volt zenier diodes
The voltage regulator simply limits the power supply voltage into the Arduino at 12v. The Arduino is the computer making the computations.
The Bluetooth module provides the pathway to get the data to your phone/tablet. The 5.1v zenier diodes are used limit (cap) the voltages from the igniter (rpm feed) and/or a injector feed.
Voltages being read by the Arduino "must" be in a 0-5v range. The key ECU measurements, MAF, TPS, Vac/Boost pressure are already done at a 0-5 volt signal range. Thus, they can be monitor directly by the Analog to Digital input ports.
The igniter and fuel injector are "pulses", not a signal defined by a "changing" voltage. Once the Zenier diode has reduced the voltage to 5v it can be feed into one of the digital inputs which can detect interrupts. An interrupt occurs when the voltage "state" changes. There are four states: low (0v), rising (0-5v), high(5v), and falling (5v-0). The interrupt is then used time the pulses. For RPMs an interrupt is used to count one of the four states (Revolutions), divide by time, yields RPM. With the fuel injectors the 'rising' (injector open) and 'faling" (injector closed) states are used to calculate the injectors open time. Knowing the injectors open time with and injectors flow rate and some math will show "load" based on fuel consumption.
In my first pass at this I used the Fuel Injector pulses to calculate the RPMs. But it did not always work. Reason: when you let off the gas and the cars momentum is spinning the engine, you don't need fuel.
The Wiring Harness... unfortunately, you have to at least "touch it". But, you do not need to "cut it". I tapped into my wires a couple inches from the ECU. I did NOT cut any wires. I did: carefully remove some insulation, solder on a signal wire, and replace the insulation with liquid tape and electrical tape. Also, I used a old PC serial cable for the 'signal/power' wire to the Arduino. This was done to allow it to be easily removed from the car.
Software:
It was some time ago that I wrote the software. At hat time I did quite a bit of research to ensure it had not already been done.
What I did find was the MPGuino project, a project to calculate realtime MPGs, which helped with the fuel injectors. But it had nothing about bluetooth, ODB2, etc....
I researched the ODB2 protocol and then wrote the code to provide the data stream accordingly through the bluetooth device. I haven't looked at the code in years, thus don't want to dive into it at the moment...
If anyone wants a copy I can dig it out and email a copy. You will need to install the Arduino code compiler onto your PC to compile and upload the compiled code to the Arduino.
Oh, it was not a "simple" task there were no "how to's" when I put this together. There are a ton of them on this topic now. Buying an ELM327 and plugging it in, that was simple.
Hope this helps.
Andy