Car Dashboard Project

It’s been quite a long time since I’ve posted here. To tell the truth I’ve been quite busy lately, and lazy when not busy. That doesn’t mean however that I’ve stopped hacking, or discovering new things though.

At the beginning of the year, reading PlanetQt, I discovered the Automon Project
Based on Qt, it allows you to monitor various sensors from your car using the ODB II interface.

In parallel, I’ve been doing a bit of electronics with an Arduino and learned about a new board the UDOO which basically is an Arduino embedded on a 4 core Arm board.

In addition to that, I’ve made a XBMC remote in Qt/QtQuick2 which allows you to nicely go through your media libraries, launch medias on your XBMC server and (in some mesure at the moment) play them on your device.
SmoothRemote
It works on Linux and Android at the moment.

sr5

sr7

sr6

All those things seem unrelated at first but as a side project, I’m also in the process of restoring / improving a car. Thinking about how easy it is to retrieve sensors’ data with an Arduino, how easy it is to make nice UI with QtQuick and how powerful embedded boards are becoming, I though why not recreate my car dashboard.

Using a UDOO with a Qt Yocto operating system, it could have a screen with gauges instead of regular analog gauges. As for the central dashboard. Why not, remove everything and keep a large touchscreen there. XBMC could be installed on the UDOO and, the remote would act as a frontend for it. Or I could just rewrite a complete media player with QtMultimedia.

I’ve already started making some gauges in QtQuick. Keep in mind I’m not a UX designer. QtQuickCarGauges

compteur3

compteur4

I tried to make them as customizable as possible to adapt them to pretty much any kind of style or sensor.

compteur

Instead of making this alone, I believe if other people are interested that we could build something great together. I’ve already contacted Donal of Automon and he might be interested if some parts overlap with his project.

This could become the Open Dashboard Project.

This project could be divided in 3 parts regarding the software:

  • Sensor/Acquisition : Either based on Automon if Donal is ok with it or made from scratch. Acquisition of analog sensors and/or ODB interfaced sensors.
  • Gauges : Speedometer, tachometer, oil pressure, engine temperature …
  • Entertainement System : Media player, Maps, Reverse Camera – Radar, day and night lighting, air conditionning …
  • As for the hardware, any platform capable of running Qt with OpenGL 2 support should be fine. The UDOO looks quite interesting but other board could work. The advantage of the UDOO being having easy access to the GPIOs and being able to have things run independently on the Arduino, not interfering with the rest of the system. Maybe using Android as an operating system on the UDOO could also be something to think about.

    The only issue that I see at the moment, is having a protected voltage source in the car. I’ve already started looking through that. Basically it needs protections against :

  • Transient voltage spike
  • Reverse polarity
  • Dump load
  • A circuit based on a LM2917 or LM2678 for voltage regulation and protected by a RBO-40 would do the job but I’m no expert either. Also, in case of sudden voltage drop (cold winter engine start), the system should either shutdown quickly or stay alive thanks to some kind a battery or capacitor.

    Anyway, there is plenty to do, on many different aspects so if anyone is interested in working on that project, please let me know. I’m open to ideas and the goal is just
    to have fun and possibly produce something that can compete with 5000$ car systems for 500$.

    Advertisements

    19 thoughts on “Car Dashboard Project

    1. Wow! Very cool! I especially love that fancy looking album scroll list with the reflections. Excellent job on that.

      The idea of some Qt-powered car gauges is very interesting. I like the widgets you made. However, I would personally prefer a sleeker, primarily text-based HUD. I find gauges to be a bit clunky myself. Maybe I will hack onto your project if I can find some time. 😉

      • I though about doing a HUD but, it seems quite complicated as you need to be able to project on your windshield. But maybe there is a simpler way I’ve not thought about. What could be nice though is to have a repository with various types of gauges accessing sensors with a common protocol and leave the choice up to the end user to choose which ones he likes best.

        • Oh, I must have not been clear. By HUD, I meant replacing the traditional-looking gauges with a primarily text-based display of things like speed, percentage of fuel in the car’s tank, etc. From a UX standpoint, you have some trade-offs. Gauges allow people to visualize “where they are” in a range. A good example is how fast you are moving. It’s much easier to see an exact amount with a large, text readout with your speed than with a gauge. However, if you want to visualize “where that speed is” in the range of min/max speed, gauges make more sense. So that’s why I said I “personally” prefer the text-based readouts, as they aren’t a perfect solution.

    2. For the power protection, stabillity and buffer you can use a simple rc filter constuction. If you use from the 12v car power first a rectifier, next a resistor and then a supercap between the + and – (14Volt or more). If you keep in mind that the supercap wil be a zero Ohms at start the rectifier must be protected by the resistor and if you use a 2 Ohm the peek current will be 6 Amp and so you will need at minimal 6 Amp rectifier. If the Udoo using a 1 Amp the resistens is 12 Ohm and with the serial 2 Ohms the power wil drop a 1,7 volts over the resistor and to be save usa a 5 Watt version. The Udoo will work from 7 to 15 Volts so no problem there.

      Sucses

      • To be honest I’ve made some progress but I’m still a long way from the complete package. I’ve got a bunch of things that perform the reading of sensors values then transmit and convert that to be displayed on screen. I’ve also spent some time optimizing the drawings of gauges on the embedded board as I’ve realized that my mock ups weren’t rendered fast enough by the device. Now I need to start merging those parts together, improve the design and start testing. I have barely touched the electronic part, I’m reading values from a small potentiometer and a light sensor for my testing at the moment. I’ll have to spend some time building a small circuit to convert the signal from the ignition coil pickup to a concrete RPM value. Same for oil pressure, water temperature, oil temperature, fuel level…. Out of curiosity which aspect of the project are you interested in ?

    3. I see that this is a little dated but has there been any progress on this project, I can see potential here. A friend and I are resorting a 30′ yaht and have been looking into making the insterment and control panels fully electronic but the price tag for this could run into the $1000s this may be an alturnative we are not that interested in the media player aspect of this just engine monitoring control and navigation. Hope this project is still being worked on.

      • Hi Gerald,

        I’m still working on the project but haven’t made much progress lately. The media player is completely separate from the gauges and sensors. I’ve been working on a private repository and will try to push that publicly if you’re interested. Could you give me a few more info about what type of things you’ll need to monitor. I suppose at least engine RPM and temperature. What kind of signal pickup do you have for the RPM, is that from a coil or already handled by the ECU of your engine ?

    4. Hi mate!, I compiled your QuickGauges without any problem, they are awesome!. I’m not using any ViewManager since I load them as a QQuickView.
      I noticed they are a bit resource hungry, specially when opening or resizing the container window. Have u found any way to optimize them??. Cheers

      • Unfortunately that’s because they rely on QtQuick Canvas which is slow as hell when things need to be redrawn. The only fast alternative would be to have custom QtQuick Item nodes implemeting their own drawings with QSGNode subclasses.

    5. Hi, how can I have access to the code for car dashboard? Also do you think something like this can be built using QT or what should I use ?

    6. Nice to see people found this interesting. I have since made the gauge work with QSGNode and can reach around 60fps on raspberry pi/imx6 with a 1920×1080 display. Will try to push the code online when I get a moment.

    7. Hi…. any thoughts about capturing the output of analogue gauges? these use a 0-10v or 0-12v input also oil pressure 0-100psi down a capilliary pipe, measuring rpm from a pulse 0/12 high/low and a speedo cable?

      A big task for someone who never did electronics, or physics!

      • I’m no electronics expert either but I guess in that case using an ADC such as an ADS1115 to convert the voltage to an integer value ranging from 0 to n bits would be a great help. Measuring RPM from pulses is a bit tricky as you need to have something fast enough to count all the pulses. Assuming that’s the case you could attach an interrupt to a pin and everytime the pin gets high increase a counter. That way you could count the number of pulses you have over a period of time. The other option is to use an LM2917 or similar which converts a frequency to a voltage and then you would just have to read the voltage and convert it to an RPM value.

    Leave a Reply

    Fill in your details below or click an icon to log in:

    WordPress.com Logo

    You are commenting using your WordPress.com account. Log Out / Change )

    Twitter picture

    You are commenting using your Twitter account. Log Out / Change )

    Facebook photo

    You are commenting using your Facebook account. Log Out / Change )

    Google+ photo

    You are commenting using your Google+ account. Log Out / Change )

    Connecting to %s