An interesting solution to adding phone support to CarPC
Hey everyone, I thought I'd share my solution to adding Bluetooth phone integration to my CarPC.
Making your carPC talk to your cell phone should be easy, right? I mean, your cell phone has bluetooth... and your car PC has bluetooth (either built-in or with a USB adapter)... so what's the problem? Well, as I found out, there are a lot of problems. On the front-end side, Streetdeck has had BT support "coming soon" for years it seems, and Centrafuse's BT support didn't work worth a damn the last time I tried it.
Then there's the other solutions, like PhoneControl.NET which is not even available anymore, plus it apparently sucks, and FreeFone, which also doesn't seem to work.
I use a PocketPC smart phone, so integrating bluetooth hands-free shouldn't be this difficult. I knew trying to do it via the "computer" route would be a nightmare. So I went the hardware route.
First, I did some research, and then bought a Parrot CK3000 bluetooth car kit.
This kit seemed to do everything I needed, and the reviews said it was quite a nice kit. It also seemed like integrating it into my CarPC setup would be not too difficult.
It's designed to cut off your car's speakers when a call comes in or when you dial a call, and has it's own internal amplifier. I didn't want that -- I wanted the CarPC to control those things. It turns out that the mute box's grey wires (for the + of the rear speakers) can be used to switch arbitrary voltage, such as 12V.
So, here's what I did:
First, I opened up the little control knob and soldered 4 wires onto the red and green phone buttons:
These would later allow a relay to control the phone buttons. Here's what the box looks like once it's all closed up:
Then, I added some more relays to my existing Arduino Box:
The left three relays are controlled by the Arduino and are "outputs" -- the bottom left two are for the red and green button. The right three relays are "inputs" -- 12V from the car turns them on or off to trigger commands on the computer.
In the case of the phone setup, I've wired the mute box so that when the mute is off (not in a call), the relay is switched on. As soon as a call comes in, the Parrot mute box cuts power to the relay. The Arduino sees this and sends a command to the computer, telling it that the mute has been initiated.
When the CarPC computer gets this command, it carries out a series of instructions, such as pausing the music, increasing the volume for the phone, etc.
To get the phone audio into the CarPC, I bought a "Line Output Converter" for $30 at a local car radio shop. This takes the amplified audio output from the Parrot box and connects it to the Line In on the sound card. With that done, the software now simply unmutes the Line In when a call is in place, and mutes it again when the call is complete.
It also knows when a call is coming in -- when the mute signal occurs, but without me issuing a voice command to start "phone mode", it knows that it must be an incoming call.
I installed this in my car yesterday, and so far it is working like a charm. But as with any solution, there are some negatives. Let's look at the pros and cons of my solution vs. a proper car PC bluetooth integration.
My Solution w/ Parrot device:
- Pro: Works 100% of the time.
- Pro: No need for drivers or com ports or stacks
- Pro: Works with all cell phones
- Con: No caller-ID on-screen.
- Con: No ability to dial via the screen.
- Pro: Caller-ID can work
- Pro: Uses your existing audio connection and existing microphone
- Pro: Can (with phone support) read your phone book
- Pro: Can dial calls from Touchscreen of CarPC
- Con: Unreliable!
- Con: Different bluetooth adapters and stacks cause massive headaches
- Con: No good software out there to do this properly.
- Con: Doesn't work with all models of phone
The biggest item for me is the reliability. When a call comes in while I am driving, the last thing I want is to be fiddling with my phone in my pocket, or dealing with bluetooth drivers that didn't seem to reconnect to the phone.
Anyway, I'd love to hear your thoughts. If you have any more questions please feel free to ask!