The Raspberry Pi Car Stereo (Double DIN size)

    Before you read this page, you should know that using an Odroid C1 might be a better choice if you'd rather have an Android based stereo using all the same hardware, except for the Raspberry Pi, and the screen. You want to use a touchscreen that does not use the GPIO and uses the USB port, if your using an Odroid. If you already have a Raspberry Pi touchscreen and an Odroid, I made an Android app to enable the touch input for it. It only works for Odroids and doesn't support all gestures.

    With Android, many of the problems are solved, like having everything made for touchscreens instead of keyboards and mice. Also the Odroids offer the EMMC storage option. Not only is EMMC faster than SD cards, it doesn't screw things up when you kill the power on the device without shutting down the software properly. In other words, you can just turn off the car without shutting down your stereo and waiting for it to unmount drives and whatever. Odroid with Android might actually be a better choice for many people. You can just Install Android, get whatever hardware you want your stereo to support and plug it in the USB ports and download some apps from the store. Done with a Android stereo.

Now that we got that Android and Odroid stuff out of the way...

    RasPiCarStereo is an app that turns a Raspberry Pi 2 or 3 (maybe 1 too) into a car stereo complete with touchscreen, GPS navigation, bluetooth, MP3 player, FM radio and access to the vehicle's computer. It's still being worked on, but most everything works. The bluetooth stuff could be done better. Some bluetooth stuff is broken, but it should be able to pair a new device. It can connect to devices that have already been paired fine.

    To use the stereo should be pretty straight forward, mostly. To change a radio station preset thats already set, press and hold for a second then let go. If there is no station set yet, just a regular tap will do. The MP3 player is set up like a juke box. To play a song, find it on the list and press the play button. To add a song to the play list, select the song on the list and press the add button. If there is no song playing, the add button will play the song instead. Currently playing songs are not listed on the playlist. To view the playlist, press the playlist button. You can also shuffle the list and remove songs here too. If there is no songs on the list, the playlist button wont do anything. In the playlist screen, if the play button is pressed while a song is playing, it will stop the song and play the new one while keeping the playlist if there is one.

Amazon links to these parts are at the bottom of this page
- Touchscreen - 5 inch - plugs directly into GPIO
- Amplifier - (small board, not like the kind for subwoofers)
- GPS receiver - usb get one with long wire, not a little dongle thing
- RTL-SDR receiver - usb FM radio - (search for RTL2832U or R820T) - no AM, i think
- USB drive - for storing MP3s and stuff
- ScanTool OBDLink - usb connection to car's OBD2 computer - needed to look at engine info USB only. Bluetooth wont work with scantool app
- mini sdcard for raspberry pi - about 8GB or more, class 10 speed
- usb hub to make things easier to assemble
- WIFI usb dongle - even if you have a Raspberry Pi 3 which comes with wifi. Built in one has many problems, disable it
- Bluetooth dongle if you dont have the raspberry pi 3
- USB Car cigarette lighter adapter - 2 USB ports with 2.4 ampere each

Things I'd like to do:

- finish bluetooth stuff - it hurts my head
- make buttons/text change colors so it can match car's dash/interior lights
- better MP3 player
- improved FM quality - currently seems to have noise, could be raspberry pi's analog out too
- bluetooth audio is choppy - could be hardware issue, raspberry pi 3's bluetooth/wifi sucks. I turned off wifi to improve
- custom OBD2 reader, get rid of scantool and make my own screen
- redsea app only gets the FM station name sometimes and doesn't seem to get song info either. I want more info!

Other useful info:

This is just a big wrapper for omxplayer media player, rtl-sdr software, navit navigator, and scantool OBD2 app.

    The built-in wifi seems to have serious problems in the Raspberry Pi 3. Mine suddenly stopped working for no reason. After many hours of research and troubleshooting, determined it to be a hardware failure. Its recognized by linux, but will not do anything. It also has a problem with bluetooth. The same radio is used for both bluetooth and wifi which is a problem if you have both on. So even if my wifi was working I'd have problems with it anyways. So just buy a cheap usb dongle that works with raspbian and disable the built-in wifi. If you don't know which usb wifi to buy just search for a WIFI that is "Raspberry Pi compatible". USB adapters based on the Ralink RT5370N chip work just fine without any setup, try searching for that or just click on the link at the bottom of this page for the USB WIFI from Amazon.

    This could be made with different computers other than Raspberry Pi, but you will have to change the code to play MP3s/media with another player than omxplayer, because its made for Raspberry Pi only. Also the screen I used was made to plug into a Raspberry Pi's GPIO. You will have to make sure it works with your computer or simply get a more expensive one without the GPIO connector that has usb instead. Make sure you get a TOUCH screen and not just a screen.

Parts used in this project: