Android Tablet as Car Info System Project

25 Oct 2012

Hello All,

About two years ago I started with an mbed to develop a shifting control system for my Chrysler 300. I'm still working on it to this day... It's called the VTCM.

Lately I've been wondering what it would take to install a Android tablet into my car to replace my old non-touch screen OEM system. The thought of loosing proper integration into the cars controls has always put me off of the idea however... I've given thought to a carputer in the past but the tablets seem to make it a more viable device.

A well integrated tablet it would need to do the following...

  • Control volume and tracks via steering wheel buttons...
  • Adjust screen brightness with Day / Night mode (or dimmer)
  • Have Larger Icons limited to the apps that are approprate for the car. (Pandora, Music, EQ, GPS, ???)

Anyway, I already read and decode a lot of information from the chryslers two CAN bus networks. I can detect steering wheel button presses, whether the lights are on or off, the dash light dimmer level, and a whole bunch of other information too...

Now comes the question... How hard would it be to use the mbed andriod library that I've been reading about to try and control the tablet based on my steering wheel buttons? Meaning, I would capture the button presses in the CAN, and then issue commands to the tablet to do something...

What would best is to have an android app designed for a car... Large Icons to launch and control Music & Navigation apps that already are on the android tablet... I'm getting ahead of myself now...

Lets start with a simple example... If I have my music app playing on the tablet, how difficult would it be to post commands from the mbed to have the music app Skip forward, backward, or pause / play?

Any guidance on how to get started would be appreciated.

Best regards

Tim

26 Oct 2012

Are you writing the tablet software yourself? I'm sure it wouldn't be hard to use the Android's built-in commands to skip/pause/play. Not sure if there are apps that may.

I'd suggest using the Canbus ports on the mbed to comm to the car. At that point, you can read the values on pretty much any part of the vehicle (and set them in some cases). Then use a Bluetooth-serial device like the RN-42-SM, or RN-41-SM to communicate to a smartphone or tablet.

I've gotten the Mbed reading incoming canbus requests from an OBD2 reader and can send that to the USB Comm port, a RN41 bluetooth serial dongle or a Serial LCD. Getting the info on the canbus (if you know what the requests/responses need to be) is fairly easy. Then you just need to parse that data and send it to your App.

I don't think creating a standalone app that runs in the background would be too hard to develop. You'd pair to the BT device, set baud rate, recieve commands (or poll) and then execute skip/play/pause Android cmmands.

good luck, keep us posted, this is a cool project that I may just have to implement..... just need to get the Audi button controls figured out. If you write an app, hardcode the commands (or polling) and give the code out for the mbed. People can change the Canbus requests there.

01 Nov 2012

Hi Travis,

Thanks for the response. Odd that I did not get an email showing you responded. Maybe need to check my junk mail folder....

Anyway, The CAN bus (mbed) end of the business is already covered pretty well in my current project. It's the android programming and the communication method to the android that is the challenge for me (Since I have zero experience in android). I've been doing turorials and reading up on android all week and all I can say is my opinion of android (and the android OS) has dropped alot lol... It's not all as cute as the little green robots would lead you to believe. I can see where the design really does make it resistant to virus attacks etc.. So in that respect it's interesting.

So what I've learned is this... Android apps operate in complete isolation from each other. You cannot control window states between apps or simply make any another app do anything. In most cases you cannot even close an app... Your app can only broadcast requests (intenets) for a another app or service to respond to. And if they respond is controlled by the OS, of which you cannot make "Do" anything.

It's like standing in a room full of people (apps) and yelling out that you need someone (an app) who can change a light bulb, and three guys (apps) raise their hands. Then the OS let's the droid user (the person holding the tablet) select which person (app) will carry out the action. But at no time can any one app tell another app what to do...

I posted a question to an andriod developer on how to simulate the "Return Button" press on an android device and his response was that he did not think you could do that directly from an app without the device being "Rooted" (unlocked to where you are a superuser admin).

Furthermore, the recient press release on the new google IO interface (to supprt accessory extensions) shows almost all examples having the driod controlling something else. I've yet to find an example of something else contolling the driod...

Bottom line is this not going to be as easy as I thought...

Tim