“Where are those transmissions you intercepted?” – Darth Vader.
Well, perhaps I’ve not intercepted any transmissions just yet, however it is still the plan. If you recall from an earlier post (here), I had plans on listening in to the GMLAN messages on the single wire CAN bus that is my Holden VE International’s internal communication system. All of this for the purpose of eventually building an iPhone interface for my car.
At present, I can pair my iPhone with Bluetooth to the car – but only for hands-free phone calls, not for music. I can however send music through the iPhone’s headphone jack (now a lightning connector of course) to the car stereo’s 3.5mm auxiliary input. The downside with this approach is that I am unable to utilise the steering wheel controls for changing track. Given it is highly illegal to touch your phone while driving, this technically means one would need to pull over and switch the engine off in order to change tracks – and who has the time for that.
I did have to put this project on hold as I was working in another country for the last two years, however now that I am back, the inefficiency of the music interface in my car has become problematic once again (or at least I’m told it is problematic…).
Given the difficulty in building a device with a lightning connector (to receive audio from my phone) due to Apple Development licensing, I will instead pursue a Bluetooth connection option.
The diagram below depicts a conceptual view of what I’m trying to achieve. I’m keeping it fairly basic for this initial prototype.
I’m going to try and use a standard Arduino Uno as the base board. That board will power a Bluetooth audio module, which is capable of pairing with a phone and converting the received digital audio to analogue audio, which will be sent out the Bluetooth module’s 3.5mm headphone jack. Meanwhile, the CAN Bus Shield will connect via its DB9 connector to the car’s ODB-II connector (directly under the steering wheel).
So, in theory, the car will receive the Holden GMLAN messages from the car’s ODB-II connector, which it will feed back to the Arduino. If the Arduino detects the appropriate code for track change (forward, back etc), it will then trigger those actions on the Bluetooth module through a simple transistor switch simulating a momentary button on the Bluetooth module.
For this prototype, the device will be quite standalone. It will be USB powered from the car’s cigarette lighter socket; provide audio to the car through the car’s auxilary input 3.5mm jack, and receive track change requests from the car’s standard ODB-II socket. Assuming this works, for the next revision I will try and power the Arduino directly from the car (possibly from the stereo), and look at other places to tap into the SW CAN bus that doesn’t rely on the socket under the steering wheel. For the first prototype though, the device will be very easy to add/remove as it only connects to the car through easily accessible standard plugs.
For reference, these are the key parts I’m starting with for this prototype:
- Arduino Uno.
- SparkFun CAN-BUS Shield.
- SparkFun ODB-II to DB9 cable.
- DFRobot Bluetooth Audio Receiver module.
All of the parts have been ordered, now it is time to wait for the delivery!