It’s been a slow couple of years with my Car PC – after completing the setup a few years ago and making it work reliably, I haven’t had much motivation to make improvements. The main reason for this is that in 2006 I decided to start catching the train to work, therefore there became little reason to make improvements. The other reason is that as my wife was the main driver of the car, making major changes to a working setup wasn’t an option.
All that has changed, though in the last week! I’ve finally gotton around to getting a second car for my better half Lisa (we have a baby on the way so it made sense) so now she has a Mondeo, I am now driving into work daily again and more importantly, the Focus is mine to do with whatever I like!
So – since I last conducted any development work, what has changed?
In-Car Computing, through Satellite Navigation devices and on board entertainment systems has become common place and in new cars will be a standard feature.
Driving along the motorway, every other car now has a Tom Tom device attached to the windscreen. These are great – they now connect over the internet for traffic updates, can conduct local searches, download local petrol prices, upload map changes and act as hands free kits.
And soon, every single Ford vehicle will come with a Windows CE based computer built in (see this article on Engadget from CES 2009) enabling similar features to the Tom Tom along with full integration with the audio and CAN bus.
This means that no-longer are today’s Car PC’s innovative and cutting edge, but instead simply on a par with the automotive industry.
Mobile internet is now the norm.
Both my wife and I have had Windows Mobile devices with unlimited internet since 2006, and now we both have Apple iPhones. We’ve got decent internet connections where ever we go, without needing access to a full terminal and without needing to be near an WiFi access point.
For the last few years travelling into work via train, I’ve had also had the internet available – with 3G net access. 3G internet access take-up has actually surprised me, as in the last six months or so they’ve really, really become popular. It’s now possible to get mobile broadband for the same price or cheaper than many of the ADSL packages on offer.
This makes in-car computing with full internet connectivity completely possible – but the question is, what is the point of having interactive ‘net access on the Car PC touchscreen when the iPhone (and similar devices – even netbooks) have it there and works perfectly well!!??
Car PC’s are now pretty much mainstream
For a good few years now computer savvy ICE enthusiasts (those people that put massive speakers in their cars) have been putting PCs in the Car and doing a better job on finishing the dashboard and enclosures than I ever could.
At this year’s CES 2009, which has just finished, once again the basic hardware is a readily available – double-din Car PC units on dedicated(see here and here) and of course complete cars on show (see here and here). Just a few years ago, Car PC’s weren’t present at all. In my opinion, I think we have the enthusiast community to thank for this especially MP3Car, who have proven to the manufacturers that there is a market for this stuff by taking the risks themselves.
So - what am I going to do next?
I think I’m finished on the hardware side of things. I’ve got a baby on the way so investing more money in hardware isn’t really an option anyway. That’s not a massive problem though – I’ve got everything I could possibly need, I can interface with the engine management system, connect into the audio systems, hook into the lights, affix cameras, touch screens and of course provide continuous mobile internet access. Hardware isn’t the problem.
So making hardware improvements isn’t really a priority. And having a stable, proven hardware platform that has the same features as today’s cutting edge “off the shelf” hardware isn’t a bad thing. In fact, this coming May the setup I’m using will be four years old.
That means software is the area I am going to be working on next. My previous setups have always included my own own software – but only as a component – for example, to help the navigation system work in a car environment, or to link the car controls or reverse camera. The core software has always been developed by someone else.
The software I’m going to working on will be different to the way I’ve done it before, in that it won’t be a “front end” for an entertainment system. I’ve found that in-car entertainment isn’t what I really care about. I’m actually quite happy listening to the radio on the way in and given most Car PC enabled journeys effectively ended up just listening to the USB radio and nothing else – it’s actually a lot of equipment just to listen to the Chris Moyles show!
In fact, this time the software will be an ongoing development platform to provide useful information that relates to me based on the data it has available. I’ve asked myself the question – what is important to me when I am driving (mostly to and from work, a 60 mile round trip)? And the answer to that question is very different from the computer system I’ve built.
The high level aims of any software I’m going to write have to fulfil the following:
* Save me money.
* Make my journey safer.
* Get me to my destination faster.
* Cause as little harm to the environment as possible.
Which, so far means I’m looking to write software to:
* Read and log live engine management data using the OBDII protocol.
* Read and log environment data again using OBDII and if necessary custom sensors.
* Use GPS co-ordinates and GIS mapping.
* Download Highways Agency (TiH) and BBC TPEG data from CORBA / XML data sources at regular intervals.
* Use the combined data to make suggestions for the correct speed and gear (to provide the best economy in the conditions), work out how the fuel economy on this journey compares to previous journeys to the same destination; and intelligently inform me about how my journey time can be decreased by altering my path based on current weather and road conditions.
* Provide a user interface that does not require me, the driver, to take my hands or eyes off the wheel (we’re talking converting the existing screen to a HUD and re-using the steering wheel control as the main input).
and of course, anything else I can think of that will contribute to the high-level aims. For example – I’ve written some software at work to detect movement on our Computer Room CCTV cameras which I might re-write and improve to detect, say, the distance of the car in front or objects coming towards the car from the sides (i.e. pedestrians). However – the #1 priority in the short term will be the list above.
How far have I got so far?
Thus far, (in the last week) I have started coding and have built the initial interface to the engine management system – this logs data and works out current MPG. However I haven’t decided on the platform to use – it could be Windows CE, Windows XP Embedded or of course Linux. I have working Windows and Linux versions of the software so far but quite tempted to consider Java for it’s portability.
So, Want to look at where I’ve got to so far? Feel free. As usual it’s all BSD Licensed, there’s no support and version 0.01 for Linux/PHP is here and for Windows .Net 3.5/C# is here.
I will be updating the blog a lot more with my progress, so please stay tuned, or as usual email me!..