This is the closest to a "finished product" I've come with one of my gauge projects. It takes the place of the OEM clock and shows oil temp, coolant temp, battery voltage, a/f ratio and intake temp. I'll post all the info as an FAQ sort of thing:
1) What did you use to make this?
An arduino, specifically the "Pro Trinket" sold by adafruit (
https://www.adafruit.com/products/2000), a UART OBD II board sold by sparkfun (
https://www.sparkfun.com/products/9555), wires, and a 128x32 SPI monochrome OLED display. Oh and some solder and more wires, and a couple resistors, and electrical tape.
2) How long did it take?
Less than 9 months for this iteration (The wife is pregnant, I wanted to "finish" before the birth of our next child). My wife would tell you it took longer. I had another gauge project (non-OBDII) that used off the shelf senders and was started and quasi finished about 6 years ago (
https://code.google.com/p/robotmeter/).
3) Why OLED?
Because it fit in the space, it is viewable from a lot of angles, an easy to use API for the display was available, I can see it easily with polarized sunglasses (visibility is better than the headunit), low power, etc. Also, I tried to screw with the clock and figure out the multiplexing scheme it uses, but failed...got close...but failed.
4) Why is it ricer blueish/white?
Because that is the only color the display came in. I do want to experiment with placing a tint in front of it to get an amber/red color that matches the other interior lighting. Ideas in this area would be helpful.
5) Will it eat battery with the car off?
It shouldn't. The OBD II board's chip has a cool "sleep" feature that goes to ultra low power draw if it isn't being queried for anything. The board that drives it (the arduino) only powers on when the car is powered on (it's plugged into a usb cig lighter adapter right now).
6) What are your future plans for it?
-Leave it in the car and drive with it for a while.
-Make the warning function work (blink or something when a threshold is met).
-Write a function that is called periodically and checks the non-visible readings for warning thresholds being met and then warning the user.
7) What else could it do?
It can read any CAN or OBD II reading that the BRZ supports. I am probably not going to get into the business of CANbus sniffing (the aforementioned newborn will steal time from such projects), but if people share their CAN sniffing results (like people have for the oil temp) I could possibly include them in this. I also have code from the previously mentioned old project that will let me do accelerometer, oil pressure, oil temperature, boost pressure, air temperatures, etc.
8) Cool, I want one, sell it to me, make me one (NOWNOW MEMEME!). Will you commercialize it?
Maybe. A lot of things would have to be solved.
-Hacking up the stock clock is messy. I'm sure I could get better at it and do it in a reliable way, but it would still be sort of a hack.
-My current solution for getting the buttons to work is at best a temporary hack and would need to be better.
-Packaging the OBD II board and the arduino together would need to be done.
-I'd love to make some mod/beer money on the side with this, I'm just not sure how. All of the code used is open source, all of the hardware used is open source, even my code is open source. So, there is nothing stopping anyone from doing this as a service. There is no real secret sauce here.
Thanks and other links:
-Sparkfun WIG ELM327 library from David Irvine (released under the GNU license). I forked it and added a little too it (
https://www.clusterfsck.io/blog/2014...lm327-library/).
-Whoever found the CAN PID for oil temperature, you are a prince among men.
-The adafruit libraries for SPI graphics that make the little icons possible.
-I used the Stino Sublime Text 2 editor to write all of the code. It blows the regular arduino one out of the water.
-The robot head graphic is modified from something given to me (Creative Commons licensed) a while ago for another project. I've lost touch with the guy, but his screen name was "Hands Down" and I met him on iwsti.com .
-My code is here:
https://github.com/stirobot/arduinoModularTFTgauges, specifically this file:
https://github.com/stirobot/arduinoM...IrvinedLib.ino