Car Radio-->Arduino-->Android

Hello,
I want to use an Arduino to connect my ZTE Blade (Android 2.2) with my Kenwood KDCW4537u. This should be possible though the CD-changer-port off the radio. The protocol is known and supports things like getting the title from the device to the radio, commands like next title/next folder to the device and an easy sound in over an analog left and right channel + audio ground.

I've built a small adapter to get the sound into the radio (nodivisions) , and it works as expected. Now I want more. I want to control the playback through the radio-knobs, since it is quite difficult to handle a touch-interface while driving, and as a small extra, I want to have the title displayed on the radio.
The main reason I started this project is the high cost off a bluetooth solution by Kenwood (>100€) and that I wanted to learn programming an Arduino. I've built some Android apps and think I will have no problem to get the Arduino to understand the protocol of the radio (it even has a clock pin to synchronize the devices, that can be easily used as "interrupt").

So the main problem is the communication between the Android device and the Arduino. This would easily be possible with a bluetooth shield, but I want to avoid additional costs. So I hoped this can be done through the USB port. The ZTE Blade even has the ability off USB host-mode, just to mention it.

Can this be done?
What I found is this:
http://www.anothem.net/archives/2010/02/15/communicating-over-the-usb-cable/
So any Android-device can send and receive data over USB through sockets. Is there anything for the Arduino to do the other part?
Or any other kind of protocol that I can use?

So I hoped this can be done through the USB port

In theory this should be possible.

However, one member of the forum has been trying to connect an android tablet to and arduino and is having no luck getting the drivers to recognise the serial USB bridge.

Link to the other Topic with this other guy?

Tablet:

USB-Host-Mode for the ZTE Blade:
http://sven.killig.de/android/Blade/usb_host/

For the Nexus One (with information how to include additional drivers)
http://sven.killig.de/android/N1/2.2/usb_host/

In theory this should be possible.

However, one member of the forum has been trying to connect an android tablet to and arduino and is having no luck getting the drivers to recognise the serial USB bridge.

So the network-sockets are not the right way?

I'm always happy to help a fellow ZTE Blade owner :slight_smile: I've implemented an ADB library for the SparkFun USB host shield which lets you talk in both directions.

http://code.google.com/p/microbridge/

I've noticed some instabilities when the Blade is trying to charge off the USB shield, so I'd recommend supplying your own VBUS, or getting Oleg's shield which is a bit better designed (http://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-2-0-for-arduino/).

If you enable USB host on the blade, you should be able to just load an FTDI driver and connect your Arduino, but you'll need to supply your own 5v.

Hi Inopia, I recognize your name from Modaco.

Thank's for your answer, that's what I wanted to try already. Busybox has the command stty included (which I will need) and Sven Killig included a driver for the FTDI in his package for me three days ago :wink:
I will just use a y-cable I have from an old harddrive to get the power from the wall charger or a car charger, and an USB-OTG-cable for the Blade to connect to the y-cable. Maybe I will try to port everything over to the new kernel, first.

I will keep you updated as soon as I get the USB-OTG-cable.

I was trying to do something very similar, but with a Corolla OEM radio. I got the arduino sniffing information from the car AV bus pretty quickly (which I thought would be the harder part), but getting the radio buttons to control my Android phone has been frustrating.

There is the kludgy solution of sending headset clicks to the phone through the headphone jack. Connecting the microphone line to ground via ~10 Ohm should register as a headset click. According to some testers, grounding the L/R stereo audio lines will give you forward/back clicks, but in my testing this also just registered as single headset clicks, which should generally give you pause/play function. If you give two clicks in rapid succession, you (may) get skip track forward in the standard Android music player.

Unfortunately Android's handling of media control is pretty bad in general. The system does a poor job of deciding which app to send commands to, without any respect for which app has focus. This is supposed to be improving in new versions.

There is an app called DroidShuffle that allows you slightly more control with nothing but headset clicks, but it's still a pretty kludgy way to go.

I also tried using a BlueGiga WT12 bluetooth module. This has AVRCP support built in, so would be great if current Android supported basic bluetooth profiles adequately, but it doesn't. I've been planning for a while to build my own bluetooth Android service around Amarino, but haven't gotten around to it yet.

I love my Android phone but for this particular project it's been pretty disappointing... Tempted to try USB now that there's a bit of infrastructure...