Raspberry Pi CarPlay Touchscreen

Incorporate a touch screen, navigation, and entertainment system into a 2007 Tacoma while maintaining current sound system

Goals and Requirements

  • Intuitive UI

  • Touch screen

  • Wireless Apple CarPlay

  • Integrate with Camera and Sensor System

  • Re-use current stereo components

  • Smooth and seamless functionality to avoid distractions or other safety concerns

  • Visually appealing; not obviously DIY

Before (Standard Double-DIN Stereo)

Finished Installation

Design Considerations

  • Although Spotify and navigation apps are possible on Raspbian OS, CarPlay is much better to use

  • Without CarPlay, many of the functions are less possible due to a current lack of support for ARM devices

  • Carlinkit wireless CarPlay dongle works with LineageOS, so that seems to be the best option available for CarPlay purposes

  • Current build of KonstaKANG LineageOS has issues with camera support, which prevents the use of this Pi for the camera system

  • Sensor integration is possible using GPIO with scripting in LineageOS, but it is not well documented

  • For proof-of-concept build and ease of construction, it may be best to have one Pi with LineageOS to run CarPlay, and a separate Pi to handle sensor communication and the camera system

  • Double-DIN stereo can be disassembled and reduced in size to tuck behind the touch screen in the dash board

  • Audio can be primarily bluetooth, enabling steering wheel controls to remain functional


Full Build Process


Components

  • Sunfounder 10.1" USB Touch Screen

  • Raspberry Pi 4 running LineageOS

  • Carlinkit USB CarPlay Dongle

  • DC-DC 12V Buck Converter to supply a constant clean 12V supply

  • Mausberry 4 Amp Car Supply for safe shutdown of Pi

  • Kenwood DBX500BT Stereo

  • LineageOS build developed by KonstaKANG

Raspberry Pi and CarPlay Dongle

Sunfounder 10.1" Touch Screen

Initial Testing

  • Initially attempted to use Raspbian OS

    • Spotify web application was made possible with some Python workarounds

    • Although navigation apps are available, the Pi would need standalone GPS functionality and would likely not have a very developed or user-friendly interface

CarPlay

  • Install LineageOS for the Raspberry Pi

  • Install the APK for Carlinkit dongle

    • CarPlay functionality extremely simple and plug and play

  • Connect Pi to the USB touchscreen with USB and HDMI

    • Pi is powered by the touchscreen power output during testing


Stereo

  • Double-DINStereo is much too large to hide behind the touch screen with the other components needed

  • With the CD player removed, the face plate control PCB is unable to move due to the orientation of the edge connectors

  • After hours of researching to attempt to find a similar connector, I found that it is likely a proprietary connector not available

  • With some careful Dremel work, I removed one plastic wall of the connector to allow for a flat orientation as opposed to 90 degrees, and stabilized the faceplate in position with standoffs

  • Disconnected the rotary encoder volume/control knob to be relocated below the touch screen

Dismantled Stereo with CD Player Removed

Modified Face Plate Connector

Stereo with Re-oriented Face Plate

Testing

  • Crude temporary mount made from scrap sheet metal from other projects for proof of concept

  • Spliced the buck-boost converter into a DC car charger to power the system

First System Test

Proof of Concept Mounting Plate

Proof of Concept Power Supply and Mounting Plate

Final Assembly

  • Modified the dashboard double-DIN face plate with some less careful dremeling to mount the touch screen

  • Mounted the touch screen to the face plate with standoffs

  • Mounted the buck-boost converter and touch screen PCB to fit inside dash

  • Added dual fan cooling case to Pi to prevent overheating

Dash Removed to Route Cables for Pi and for Electrical System Work

Modified Dash Face Plate to Mount Touch Screen

Touch Screen and Buck Boost ConverterMounted to Dash Face Plate

Pi and Dongle Hidden Below Console False Bottom

Future Improvements

  • Replace physical brightness adjustment buttons with transistors and photoresistor to auto-adjust brightness relative to ambient conditions*

  • Model and 3D print dash faceplate for embedded screen rather than floating screen*