Creating an automotive CAN-BUS OBD-II module w/Arduino

I just want to sanity check my idea and general plan. I've searched but all I can find is people using an Arduino to act as a specialized OBD-II reader.

My car (2005 Mazda RX-8) didn't come with sensors for oil temperature, oil pressure, or fuel pressure. I have added these sensors and made a digital gauge with an UNO, 20x4 LCD, and the appropriate sensors. It works great. No complaints.

Now it's time to take it a step further: I want to make this data available to OBD Fusion on my phone (via my PLX Kiwi3).

My general plan is this:
Configure OBD Fusion on my phone with a module ID that isn't already in-use (0x7E9 - 0x7EF) and PIDs.
Purchase/install CAN-BUS shield (ideally, do it correctly the first time but that isn't always how it works for me).
Filter out all rx messages except messages destined for 0x7DF (OBD-II PID request broadcast ID).
Reply to those requests with data as appropriate.

My plans are still broad because I'm just starting to teach myself CAN. If somebody has already done this and my Google-Fu is weak, please accept my apologies and point me in the right direction.

Thanks in advance for any help!


Configure OBD Fusion on my phone with a module ID that isn't already in-use (0x7E9 - 0x7EF) and PIDs.

I'm assuming that you know what CAN IDs are not used by your car then? if yes, then your plan sound good enough.

If not, I would be cautious about injecting a CAN id (ie the CAN ID to be transmitted by your arduino) onto the vehicle CAN bus.

If it was me, to be on the safe site I would use the one of the existing OBDII PIDs (e.g engine oil temp and fuel pressure) to which the arduino would also reply.

what is likely to happen is that if your car is configured to recognise those requests, it would reply negatively while your arduino would reply positively. hope your app will cope with that on the other hand I do not know.

hope that helps.

Thanks for the reply.

I'm planning on doing a little CAN sniffing before hand to make sure I don't step on any toes, as it were.

Beyond that, I think it should just be a matter of going back to my old IT days to see if I still remember the OSI model and datagrams/frames/segments and stuff.

Man, I thought I left all that behind me.