A little background:
I've been logging lap times using RaceChrono for motorcycle racing and for training and video overlay for a while now (
). I'll start by saying thank you, this app is amazing. I was a die hard trackmasters fan, but one try of RaceChrono and I was hooked. Everything works so much better. I literally never go to the track without my timer setup and I get a lot of good comments on how great this system is for the cost. I have also verified the lap times using a 818xt vs the Westfield transponders used in CCS Racing and the difference is generally in the .0x seconds.
Sadly, motorcycles in general are not OBD2 complaint, so there is no option to log data from them using a OBDII reader off the shelf. I've been wanting to get data from my bike for a while now so I took on trying to achieve this and have sucesfully built a real time data viewer.
After some research on the Honda ECU, its message structure, etc (http://forum.pgmfi.org/viewtopic.php?f=57&t=22199&sid=42dceeae3e52ca83a70b340ace2ccdd4&start=60
) and after seeing that the physical layer is basically OBDII (iso9141-2) with different message structure I thought it would be worth a shot to attempt to obtain connection to ECU via an ELM327 Bluetooth adapter using serial comm. I've basically built a DLC (Honda Test Connector) to OBDII cable and linked the pins appropiately (Pin 7 is K-Line, others are just ground and battery power).
I tested the connection and the ELM is answering fine, but I couldn't even get the Slow Init (communication initiation) to work, it turns out that the Honda ECU Slow Init is radically different from any OBD standard, I did not want to build custom hardware since my electronic engineering skills are pretty much non existant. So my new approach was to the use a GiPro DS Gear indicator (http://www.healtech-electronics.com/
) (which logs the data I need from the ECU in order to calculate the current gear) as a comm manager and use the ELM327 as a sniffer to just get the information that I need.
So I built a cable that splices in between the DLC and GiPro DS and plugs the KLine into the appropiate pin on the ELM327 and bingo, I can see all the data comming and going from and to the ECU. It is rather limited since the GiPro uses only one command to extract data, but this pulls all the relevant data needed. With some tinkering on the ELM327 settings I can get messages to come and go in perfect structure, the only issue I have is that at the end of every line I get a "<DATA ERROR" indication. This is due to the fact that the ELM327 doesnt recongnize this as a valid data structure. It does not really matter though, I just filter it out by software.
An example of the data
In this first example the GiPro requests data, but the ECU does not answer. That is what a request looks like.
72 07 72 10 00 11 F4 <DATA ERROR
In this second example we can see the request and then the response. Interpretation for most of the data is already on PGMFI (link posted before).
72 07 72 10 00 11 F4 02 17 72 10 00 05 91 19 00 5C 5A 8A 46 75 4F FF FF 83 0C 03 00 A1 3B <DATA ERROR
Different command but still same data explained:
72 05 71 10 08 ----|
02 16 71 ------- [c m d]
10 -------------- [table]
00 00 ----------- [rpm]
18 00 ----------- [tps]
37 70 ----------- [ect]
56 5C ----------- [iat]
87 5C ----------- [MAP]
FF FF ----------- [...]
7A ------------- [Battery Voltage]
00 -------------- [Speed]
00 -------------- [...]
00 -------------- [Fuel injection valve]
80 -------------- [.?.]
1B -------------- [checksum]
Based on that I've built an app that can display the data from the ELM327 in realtime averaging about 15hz. (it goes down to 10 or peaks out at about 32 - sometimes the ecu gets a request and does not respond several times in a row, when this ocurrs that data is ignored, hence dropping the refresh rate considerably).
What I want to do is tie this data logging together with RaceChrono in order to get lap times + datalog just like you would for an OBDII enabled vehicle.
Now, I know it would probably not be of much interest for the community as a whole since I'm currently the only person with this logger setup, however we could look at some kind of interaction between Apps through a Service or Broadcast where data could be shared in a standarized way, that way any custom logger could be built as long as it adheres to standard way of communicating that RaceChrono could understand. Or maybe its just easier to include the data interpretation code into RaceChrono as it is quite simple and have it only show up in the menus when people have installed a certaint app as a key (not for money, but as to not clutter the UI with unneeded options). In the end, there are many ways of doing it, it is always a possibility to export the data and then combine it, but I would love to be able to have an export auto sync the data.
Does any of this seems interesting to you? could we somehow work together on getting integration on this?