Close
0%
0%

The Cherokee Carputer

Fitting a carputer in my 2000 Jeep Grand Cherokee

Similar projects worth following

This is my 2nd carputer, this time running an Intel NUC with a Lilliput 669GL.

It boots directly into Navit, with some experimental features (integrated Spotify player, Foursquare places search/explore and checkins and GooglePlaces search).

Fully operated from the touchscreen with audio control from the steering wheel.

I've been using this setup in the car for a couple of months now.

The software

The carputer runs on Gentoo and boots directly into Navit (with some experimentals plugins). Boot from power-on to Navit is <10s, partly because it's running on SSD.

After an unsuccessful try of using a Joycon EX, I figured that my car actually use CANBUS for the communication between the steering wheel and the audio unit.

Using a cheap OBD2 to USB interface i was able to read commands from the steering wheel. The code to accomplish this is now available as a Navit plugin : https://github.com/pgrandin/navit/blob/master/navit/navit/plugin/j1850/j1850.c (instead of the POC code in python which was talking to evdev). Further ideas for this plugin include monitoring the vehicle speed in case of the loss of GPS signal, and to use it for dead reckoning.

This is a work in progress and will be further documented in another project. This has been inspired from the amazing post from Thesksmith on his blog about canbus hacking, kudos to him for a very detailed explanation and for getting me started. Applying his method with another script I wrote allowed me to figure out some of the other J1850 messages while avoiding the use of a spreadsheet. The script builds a baseline of the messages which are being exchanged on the bus, and is able to find easily the related message if you perform a specific action ( like a button press). Further details to come.

Voice synthesis

Most of the voice synthesis for Linux are OK. But they are just... OK.

Using the following script gives a way better result. Voice synthesis is downloaded once and stored in a cache.

The script will also lower the volume of the music before playing the guidance and restore it afterwards. It will also fallback to using festival if the voice synthesis cannot be downloaded at this time ( no network or no tethering ).

#!/bin/sh

echo "$1" >> ~/.navit/speech.log
md5=`echo "$1" | md5sum -|awk '{print $1}'`
[ -d speech ] || mkdir speech

use_fallback=1
if [ -f "speech/${md5}.mp3" ]; then
    echo "[cache] Saying $1"
    use_fallback=0
else 
    echo "Saying : $1"
    s=`echo $1|sed -e "s/ /+/g"`
    wget -q -U Mozilla -O speech/${md5}.mp3 "http://translate.google.com/translate_tts?ie=UTF-8&tl=en&q=$s"
    use_fallback=$?
fi

amixer set Spotify 10%-
if [ $use_fallback -eq 0 ]; then
    mpg123 -q speech/${md5}.mp3 || echo "$1" | festival --tts
else 
    espeak -s 130 --stdout -ven+f4 "$1"|aplay -
fi
amixer set Spotify 10%+

The Hardware

Most of the electronics fits in a custom aluminium case in place of the factory headunit.

This case contains:

  • an intelligent power controller which handles the startup/shutdown signal
  • a 12V to 19V converter to power the NUC
  • a USB soundcard (the Nuc only has HDMI output)

The touchscreen

One of the biggest challenge was to fit the screen in place of the factory head unit, because it is a 1.5 DIN instead of the now standard 2DIN. I had to build a custom frame and the screen fits to the millimeter.

The custom frame is based upon a refurbished bezel:

Beta testing the setup in the car :

Polishing the bezel design. You can see here that the Lilliput bezel was merged into the headunit bezel.

Final result :

View all 6 components

  • Some updates

    Pierre11/08/2014 at 02:24 0 comments

    I've been working on the hardware part lately since the software part is quite mature now.

    I've fitted a cheap USB board with 2 relays to drive the amplifier. Now, the amplifier is only powered once the carputer has booted, and is shut off first thing when the carputer is shutting down. This avoids getting some interferences during the boot when the USB sound card is not ready.

    I've also started to replace some parts that were manually crafter by some 3D printed parts. This is still a work in progress as I need to fine-tune the parts design.

    First part I printed is a replacement for the box holding all the electronics where the factory radio was sitting. It fits nicely in the car, I now need to design the other parts like the screen frame to make sure that they integrate nicely all together. I have also printed a 1:1 replica of the LCD panel and its PCB to avoid the need of using the real display for prototyping.

    The parts are available in Github.

    The current, aluminium-based prototype :

    The new part being printed using PLA:

View project log

Enjoy this project?

Share

Discussions

Pierre wrote 11/01/2014 at 19:54 point
Thanks :) I will share a video of the setup in the following weeks.

  Are you sure? yes | no

Michael Haas wrote 11/01/2014 at 19:26 point
Cool project. I like how you integrated the Google tts engine with a simple shell script.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates