Mutli Gauge display for automobile.

Hello all, I have been looking for a solution to digitally display data from different sensors on my vehicle. The car is a 2013 Mitsu Evo. I am looking to display boost, oil temp & pressure and maybe fuel pressure or coolant temp. As I was looking across the web for solutions I came across a few guys who have used an arduino and LED or LCD display to do so. I think this is awesome since I can literally make a data display of my own. Problem is, I have NO IDEA where to start. I dont know code, but I can learn if I study it. I dont know which board to use, as I am wondering if there is a single board that can recieve 4 or 5 inputs and output them to 2 or multiple screens. I also dont know where to start to begin learning the proper code.

In all seriousness I would be willing to take courses to learn. All input is helpful. I have already made a mounting solution, now I just have to figure out the hard part LOL.

Looking forward to everyones help!

-David

...I don't know anything about the gauges or sensors in your car.

I am looking to display boost, oil temp & pressure and maybe fuel pressure or coolant temp.

That should be no problem if there is an analog signal (maybe 0-12V) for those things. In that case, you can use a voltage divider (2 resistors) to knock that down to 0-5V. (You'll probably need to add a "protection diode too in case the voltage spikes higher than expected.) The Arduino Uno has 6 analog inputs. If the signals are digital, it might be difficult to "decode" them. If it's a CAN bus, you might be able to find some information on The Net. But, you'll have to find the information specific to your car. From what I understand, the CAN bus is very "flexible" so one manufacturer's protocol may be different from another.

For the display, there are several types of LCD display and you'll need to know how to interface with and control the particular LCD.

I dont know code, but I can learn if I study it.

Do you know any electronics?

A couple of things about programming - The compiler (which turns C/C+ human-readable code into machine code) is "picky". One little typo and the compiler can report hundreds of errors. So as you are programming, start with the simplest program (like the Blink LED example) and add one or two lines of code at time, test-compiling, test-running, and debugging as necessary as you go along. The biggest mistake beginning programmers make is trying to write the whole program at once.

And, make use of the serial monitor which can send information to your computer monitor. That allows you to "see" what your program is doing, especially when it's not doing what you want. You can send messages like "Reading Oil Pressure", or "Oil Pressure Input = X and Oil Pressure = Y PSI".

There are [u]examples[/u] for doing most of the "little things" that you'll need for making your "big complete project". For example, reading an analog input and sending the ADC reading to the serial monitor, or for converting that "raw" reading to a voltage.

Assuming these gauges use analog voltage, you'll need to figure-out how the voltage correlates to the particular thing you are tying to read. For example, maybe 12V is a full fuel tank and 6V is half a tank. You can't directly read more than 5V, but you can read 12V through a voltage divider and convert it to a fuel-gauge reading. (A multimeter will be almost mandatory for checking/reading voltages and checking connections.)

If all of the information is on a CAN bus, the Arduino doesn't have a CAN bus interface, but it can be added. (The CAN bus hardware should be straightforward, but the digital protocol/data format would be the tricky part).

There's also an LCD library and examples.

After you've tried-out some of the examples, and you are starting to see how a program ("sketch" in Arduino terminology) works, read through the [u]Language Reference[/u] to get an idea of the instructions/functions you can use in your program. (External libraries such as the LCD library are additional to in the standard language.)

The two most important concepts in programming that make programming really useful are conditional execution (if-statements, etc.) that allow your program to "make decisions" (if the button is pushed, do this, otherwise do that, etc.), and loops (doing something over-and-over, usually until some condition is met). An example of a loop would be a counter that starts at zero and adds one every time through the loop ''till it gets to 100. Or, reading through a file, one byte at a time 'till you get to the end.

Once you've learned enough of the basics to get started, start with one of those gauges. Then, add one at a time, or maybe "breadboard" one at a time until they all work independently before trying to put everything together.

Thank you very very much. I am very appreciative of all the info you just gave me.

Can the Uno output to different LED or LCD’s?
I will not be using CANbus, simply individual sensors. Probably standard pressure sensors i have been reading others use. And a temp sensor should be just as easy to come by.

I dont know electronics very much. ALL this is pretty new to me. But I want to learn. I am going to research if there are any courses I can take to speed up the learning curve.

David,

I am in the exact same position you are, complete newb, and I want to learn all I can. I want to add 2 temp sensors, water-in-fuel sensor, low fuel pressure sensor, and inside air temp for the cab and have the info displayed on a 16x2 OLED display. But have no idea where to start.

Do you have an update for your project?

Any info is greatly appreciated.

Craig

I want to add 2 temp sensors, water-in-fuel sensor, low fuel pressure sensor, and inside air temp

Do you have the sensors and/or the specs for the sensors?

Make sure you protect the 5V Aruino from any 12V signals that may come out of the sensors!

The easiest way to measure ambient temperature is with an [u]LM34[/u] or LM35. I don't know about the other automotive-related sensors.

Otherwise, the place to "start" is with the [u]Analog Read Serial Example[/u]. If the water-in-fuel sensor is digital (high/low = true/false), there is a Digital Read Serial Example.

and have the info displayed on a 16x2 OLED display. But have no idea where to start.

There is a [u]Liquid Crystal Library[/u], but I don't know if your OLED display is compatible with that. You might have to research & study and teach yourself how to write to the OLED display, or you can choose a display that works with the library and examples.

P.S.
It's probably best to start with one sensor... Either the easiest to install or the most important. Then once you've got the hang of things, and once you can display information on your display you can add more sensors.

The easy way would be to use an Android tablet and an app called Realdash, available on the PlayStore.
Right now it is in development and only supports Megasquirt ECU's, but they are planning an OBDll app in the future. I am not sure but I think it has some 5v analog input if you wanted to add a sensor that was not available on th OBD port.