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 :
Have you done anything to integrate a cell phone for making and receiving calls. I want to add this to Navit.