Steering wheel controls to Arudino to iPhone to Car Stereo

My 2004 vehicle didn't come with an AUX input or any method to control an iPhone at all. I solved one part of this problem by opening up the factory car stereo and splicing in a connector on the CD input so that I can now feed my iPhone audio via a headphone jack connection to the car stereo. I switch to the CD input on my stereo and the iPhone plays perfectly through the stereo. Success!

The next problem I ran into is that it's a complete pain in the butt to switch songs short of looking down at the phone, unlocking it and then trying to tap a tiny "next" or "previous" arrow all while driving. Unsafe at best.

So what I want to do is utilize the factory track up/track down buttons on my steering wheel to communicate with the phone via an arduino. It would work like this:

  1. Track comes on the iPhone that I don't want to listen to.
  2. I press the "track up" button on the steering wheel.
  3. The press sends a voltage level to an arduino (I believe through a resistor ladder).
  4. The arduino captures the voltage on the incoming pin, determines that the track up button was pushed
  5. The arduino issues a next/track up command to the iphone.
  6. I jam along to the next track.

Here's are the issues:

  1. I need a lightning connector that I can use to send signals to the iPhone and receive audio out from. I've seen the Redpark lightning to serial and the lightning breakout board. I don't think either will work for me. The breakout is flimsy, I want something that will get plugged in and out daily multiple times.
  2. I would need to be able to detect incoming voltage on the arduino which I believe it's capable of doing through code.
  3. I would need to work out the communications from the arduino to the iPhone.
  4. Charging isn't a MUST HAVE, but would be nice if that came along.

Does a nice finished cable exist that allows me to talk to and receive audio from the iPhone?

Has anyone done anything remotely similar to this that I can scavenge some info from?

Is there a wireless method (via bluetooth) that could work and eliminate the cable issue?

Any direction is appreciated. I know where I want to go with this, I am just missing all the important bits to tie it together.
Thanks

Ok, can anyone answer this then? Our other car has a built in USB port. The USB port has four pins. Ground, VCC, data in and data out. That's it. Four pins and the car can control track up/down as well as read and display the song data (track, artist, album, song title) on the radio display using the standard Apple USB cord.

All I want to do is replicate this. So the ground and VCC pins are fairly obvious. Ground one, add 5 volts to the other. If one of our cars can use the USB data in/out to do everything then I should be able to retain my existing Apple cord and send data the same way. All I need is a push to get started down this path. Can I simply hook up the data in/out pins from an arduino to the data in/out of a usb port and then plug the Apple cord into that USB port?

Is there a way to open a stream (well, clearly there is since our other car does it) so the audio from the phone can stream through the TX/RX pins of the USB port?

I don't want to buy the Arduino hardware only to find out I should have bought a different one for my application.

Anyone? I'm dying to add this to my car so I don't have to use the iPhone screen functions to change tracks.

In your other car the USB is used for both the audio and the controls. As arduino is unlikely to have the processing power nor the ports to process the music, you need to investigate if a scenario where the media player is controlled by USB, but the audio is handled via the 3.5mm headphone plug. Even IF this is possible you need an arduino with USB host capabilities.

The other part you need to deal with is the capture the steering wheel button activity. This will be highly dependent on the actual car. Some cars you can plug a ELM327 scanner in the OBDII outlet and you can capture the key presses that way. If your car works that way you will have an ELM327 connected to your Arduino, which will listen for key presses. You will need to apply some filters to the data stream in the ELM327 or you will get way to much data.