'simple' CANBUS or OBDII project - where to start

Ordinarily, I try to find an existing thread which is a close match to my case and wake that up, but the problem this time is that there are a lot of unfinished / aborted threads on this subject and none of them really get there.

So to explain: We have two cars of a certain age, neither have coolant temperature gauges on the dash and I consider this to be an essential instrument, as there have been times past when I have averted disaster by noticing that the temperature gauge has failed to rise because there is no coolant in the engine for it to measure the temperature of.

There are commercially available OBDII 'Hud' displays which plug into the OBD2 connector and display a selection of parameters including the coolant temperature., but their support for vehicles is patchy across the range and both of our vehicles do not appear to be supported by the firmware in these commercial devices.

So the aim is to decode the CANBUS or OBD2 traffic (receive only) and extract the engine coolant temperature from it and display it on a standard alphanumeric or dot matrix display.

First question : Which canbus shield / Arduino combination? I would probably dedicate an arduino, to this job - ideally both the arduino and the shield need to be small.

Second question: Is there a native CANBUS library or third party CANBUS library, perhaps supplied by the canbus shield makers?

Third question, is there a reference document about CANBUS / OBD2 which will enable me to pick out the coolant temperature values from the rest of the information being streamed?

I recommend starting with a ODBC interface like the Freematics or Sparkfun. I have not used the Sparkfun, I use the Freematics ODBCII. Yes the device is a plug into kinda thing but it saves a lot of work in getting at the ODBC data. My Freematics is interfaced to a ESP32 and a display.

And the nice thing is they have a library which you can view the code of and even modify to suit your own thingies, GitHub - stanleyhuangyc/Freematics: Official source code repository for Freematics.

Looks great, but the only problem I have with it is that it would be too useful and a little bit too expensive to leave in the car as the back end for a single-parameter-readout device. At around 40 GPB it would be somewhat wasted if dedicated to that purpose. That is approximately the cost of the various ready made and professionally housed and finished OBD2 'gauges' which are already available but of course don't work with either of the cars in question.

I was thinking more of using a 'dumb' CANBUS shield and trying to learn enough about CANBUS to try to extract the data which the Freematics box extracts for you.

Then the library might be of help there.

There's a pretty decent looking entry level guide here -

it soon starts to sound complicated but it would probably become clearer if I had some actual CANBUS output to look at. I'm thinking to order the Sparkfun interface in order to follow that article.

There is one little back door for me here, one of the cars I want to try this with has a 'hidden' menu where you can temporarily bring up some of the system parameters on the dash display, including the ECU's figure for the coolant temperature. I would be looking for something in the data stream which only changes at the same moment as those temperature digits change on the temporary temperature display.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.