Ideas for an Android-based app to help you drive economically
I'm thinking of starting work on an Android application which would pull information from the car's ECU and display the information in such a way as to allow the driver to modify their driving style to be as economical as possible. This app would in no way compete with the more full-featured apps out there like Torque and OBDroid. My app would focus entirely on allowing the driver to get all the information he/she needs to drive as efficiently as possible.
The interface would be optimised for communicating the information as clearly as possible on a small screen (which rules out analogue "gauges"!).
- Display a user-configurable set of realtime sensor data / data calculated from sensor data (instant MPG, trip MPG, engine load etc). Display it using a simple, clear display which makes efficient use of the small screen (i.e. don't display retro "dials" or just numbers, instead display coloured bargraphs so you can still determine what the display is telling you even if you only glimpse it out of the corner of your eye
- Log OBD data plus GPS location and accelerometer data (from the phone)
- Allow the user to label the trip and select from a list of "properties" for that trip (e.g. declare if the windows are open, if the air conditioning is on, if you've just pumped up the tires, how many people are in the car etc)
- Start showing some useful stats. E.g. plot a scatter graph of MPG against speed (and allow the user to tell the system to only include data taken whilst cruising - i.e. not accelerating). It could label points on the plot a different colour based on properties like "windows open = blue, windows closed = red" so you should be able to quickly see if these changes make a measurable difference. By looking at the RPM and speed, it should be able to determine which gear and hence can display this too on the scatter plot).
- It should be possible to categorise the driving as "city" or "motorway" just by looking at the speed against time and then the system can work out av MPG for these different driving situations
- Once it's done some stats on historical data, it should be able to tell you if you're currently performing better or worse than the historical data (compensating for speed and acceleration). Using the phone's GPS, it could even bin the data by road. The aim here is to allow the system to determine if something is wrong (whether it's low tyre pressure or something) just by looking at the stats.
- plot your current MPG along side histograms of past MPG data so you can quickly and easily compare your current performance to previous performance. Multiple histograms available e.g.
- all MPG data ever collected
- all MPG data for this journey (and the system would detect when each "jouney" starts and finishes: automatically (based on if the car has been stationary for over x hours) and manually)
- MPG for the gear you're currently in
- MPG for speed range you're currently at
- MPG for current driving style
- MPG for current acceleration (as measured from the phone's accelerometers)
- MPG for this particular stretch of road (as figured out from the GPS)
- The system should be able to map out MPG for a given speed for a given gear and hence could advise the driver to change up/down to improve efficiency
- Add an option to display miles per £/$ of fuel so you can see how much the trip is costing you
Any other ideas? Are there any apps out there which already do something similar?
What other information could I pull off the ECU to help inform the driver? For example, I read somewhere that "labouring" the engine (i.e. loading it at very low RPMs) reduces efficiency and is bad for the engine. Would the ECU be able to detect "labouring"?
A quick dislaimer: at the time of writing, I haven't ever coded a single line of Java and I only just got my first OBD interface! This "MPG" project is kind of a way for me to learn to develop for Android and to learn more about engines. It will take me months to get the first version out the door.