After seeing some people on YouTube linking an arduino to their car so they could read the current speed, engine RPM and engine temperature, and someone on the Dutch Peugeot 306 forum doing something similar I decided that would be a fun project to tackle.
So after some reading on the workings of the ELM327 (the datasheet came in handy) and some searching for a good Arduino library I started mocking things up on a breadboard, which resulted in the first prototype:
I took apart the ELM327 bluetooth adapter and started investigating the PCB. I noticed it uses a HC-05 bluetooth module and looked up it's datasheet.
Once I found the RX/TX pins of the module I traced it to a point on the PCB to which I could solder some wires to tap into the microcontroller <> bluetooth module communication.
I connected the RX/TX pins of the ELM327 adapter to the RX/TX pins of the Arduino (ELM327 RX to Arduino TX and ELM327 TX to Arduino RX), wrote a little bit of code to print out the commands sent to the adapter to the LCD and read the RPM from the car's ECU.
After walking up and down the stairs from my computer to my car (I live in a 2nd floor apartment) to debug the library and client code I decided that I've had enough exercise and created a very crude ELM327 "emulator" in C# (sources on GitHub):
After a lot of debugging, head-scratching and cursing I finally got it reading data from the car
So, the next step is to create a prototype shield PCB and start coding!