Project JeePi – Raspberry Pi Car Computer!
I spend a lot of time in the my Jeep (2004 Grand Cherokee) and I normally either listen to NPR, Podcasts or Pandora while driving. I wanted a way to interface Pandora directly to my Jeep without spending a bunch of money. After researching I devised a plan that would get me what I wanted for about $200, a fraction of the $400+ dollar units.
I already had a Raspberry Pi Computer [LINK] laying around, 512mb model and it was already housed in the perfect case, an indestructible Cool Trays Aluminum Case [LINK]. The RPi is a $35 dollar computer with 512mb of RAM and an ARM Processor, prefect for projects like this!
So I set out to find an LCD screen to interface with the Pi. I was planning on something in-dash, but it had to be a single-din unit since the Jeep doesn’t easily support double-din. I didn’t want anything motorized, I could see that lasting maybe a month… tops. Thats’ when I found the POWER ACOUSTIK PD-710B [LINK] on Amazon for roughly $150. The PD-710B has a 7″ fixed (detachable) display and Bluetooth input. It’s a great bargain for the price.
I also ordered an AirLink Wifi Adapter [LINK] and FAVI Entertainment Wireless Keyboard [LINK] for my RPi.
I quickly got to work ripping the dash apart in my Jeep.
I ordered a wire harness for the Jeep, instead of hacking the factory harness, allowing me to work on the wiring in the comfort of my house with my trusty soldering iron at hand.
One thing I did, was wire a 12v outlet into the Switched 12v and ground on the wiring harness. The will allow for a 12v -> 5v USB adapter to be plugged in and turn on and off with the key. I used a 1A USB charger in the socket to power the RPi.
I took and chopped the “A/V Cable” that was included with the stereo, which is essentially a special 3.5mm Headphone plug with 3 RCA connections, 1 video and 2 audio. The included cord was only about 4″ long, so I cut the RCA ends off and spliced in a longer RCA cable. This cable plugs into the side of the screen, as you will see in future photos, and attaches to the RPi’s RCA Video Out and attaches to 3.5mm Audio -> RCA adapter for audio from the Pi.
Got everything positioned back into the dash so now onto figuring out the Pi configuration. The unit itself functions better than expected for such an inexpensive unit. The Bluetooth syncs well with my phone and the touch screen seems decently responsive.
I installed the latest RasbpMC [LINK] on my Raspberry Pi’s memory card. This is a custom build that includes the popular XBMC media player. I installed the Network Manager addon from the official XBMC Repo to allow me to configure Wireless on my device. I enabled Wireless Tethering on my phone (Galaxy Nexus) and configured the Pi to connect to the new portable hot spot.
I then configured the XBMC Media Player with the PandoraJSON Plugin [LINK] and created an autoexec.py in my /home/pi/.xbmc/userdata/ directory that contained the following to automatically start Pandora when XBMC starts.
Plugged the Pi into the USB cable and RCA cables now placed in my glove box and turned the key. The screen turned and and the Pi fired up!
Using the XBMC Remote for Android, since the unit is connected via Wifi to the phone, I am able to control the music! Notice in the picture above, how small the text was for Pandora, this made it difficult to read, so I dove into the script and found the Skin file. I increased the <font>font12</font> sections inside the script to <font>font16</font> and removed the “List Border” image control. The result is a much easier to read for this size screen.
So far, I have cycled the power in the car about a dozen times, and it doesn’t seem to have an effect on the SD Card, however keep in mind you will want to keep a backup image of the card handy, as this technically isn’t good for the health of the card. I will update this post as progress is made and I am open to suggestions!
*note* It is dangerous and unlawful to be distracted by anything while driving. Do not try to do stuff with the unit when you should be driving, use common sense. I am not responsible for any adverse outcomes of this simple write-up. *note*