Custom Car Display

A quick and cheap DIY solution for making your own custom display cluster to fit in your car. Car must support OBDII.

Similar projects worth following
This project documents the DIY project for building a car powered display connected to the OBDII reader on a car for rendering a custom dashboard of the values read from the car in real-time.

This project doesn't involve many difficult parts, but there are lots of little bits to get sorted for it to work, these involve setting up hardware/physical bits and software. This is why I've decided to put all the steps to get this setup in the instructions sections, so if you want to build this or something similar, click down to view all of the instructions. Up here, I'll just write a brief review of everything done.

1. Screen Setup

Just buy a RPI 4 or 5, a WaveShare RPI 7.9Inch, follow the assembly and software guidance instructions to get it rotated horizontally and you've got the display ready!

PI & display setup

2. Wiring

Time to power this device up in the car. You'll need to tap off the 12V power supply from the ignition (used to power the stereo) through a DC-DC 12V to 5V downconverter that outputs through USB-C. You can now power the RPI! Be sure to add a momentary push-button on a configured GPIO4 pin so you can safely power off the PI.

3. OBD Bluetooth

Plug your OBDII Bluetooth device into your car and install and configure everything bluetooth related on the PI to automatically search and connect to the OBDII bluetooth device. That's sorted, great! Now you can start writing programs that can read OBD data from your car over a bluetooth. Nice.

4. PyGame Rendering

Now you can make whatever program you want to display things however you want! If you want to start with using my python script as a template, be my guest, it's on GitHub here. I used the OBD library to write callbacks for data I want from the car, then a PyGame rendering loop to render these changes to some dials, gauges and a simple line animation connected to the car speed.

That's it! One thing to note, I initially tried this project with the Raspberry Pi 3B, which didn't turn out to perform well rendering graphics the way I did it using PyGame. RPI 3 is a bit weaker in compute than the later generations, and has smaller RAM options. Instead, I decided to just buy the latest RPI 5 with 8GB RAM to avoid performance issues as much as possible, but I'd imagine a RPI 4 with 4GB RAM should do the trick.


Tap power off 12V ignition wire to DC-DC converter down to 5V USB-C output for RPI.

JPEG Image - 2.34 MB - 05/18/2024 at 19:29



Display hardware including RPI5, wave share display & heatsink.

JPEG Image - 2.18 MB - 05/18/2024 at 13:42



Circuit Diagram to show basic wiring on project.

Portable Network Graphics (PNG) - 18.60 kB - 05/10/2024 at 21:11


View all 6 components

  • 1
    Screen Setup

    With the purchase of a WaveShare RPI 7.9Inch display, mount it and connect the correct USB (for power) and HDMI adapters between the display and the PI as seen below

    PI & display setup

    By default, the display orientation shows up along vertically, so just flip that 90 or 270 degrees to the horizontal side that makes sense for how you'll mount it. You can do this on the Raspberry Pi OS desktop, or edit the config.txt boot file, both options explained in the guide here.

  • 2
    Touch Screen [Optional]

    Getting the touch screen capability setup correctly takes a little more work if you want that in your setup. Go to the Rotation (Working with Raspberry Pi) section here and follow the steps on Touch Orientation. If you rotate the screen differently, you'll need to adjust the values of the line you put into the 40-libinput.conf file appropriately. This will probably take a few trial and error attempts until your touch accurately selects where your finger touches.

  • 3

    Okay so you've got your PI display built but now you need to get it to run in your car. Although a bit intrusive, I'd say the best way to do this is to tap off the ignition 12V supply used for the stereo. The Raspberry PI MUST be powered by 5V, so you'll need to wire the 12V ignition wire to a DC-DC 12V to 5V converted with a USB-C output. Then, just get some T-tap connectors on the 12V ignition wire (Should be the red one going to your stereo, but double check with your car manual) and you can power your PI off your car!


    You might be able to get away with this setup so far, as the display will only power up when the ignition is on, but a sudden loss of power will likely corrupt your OS image on the SD card at some point. Therefore, you'll need to add a way to soft-power off the RPI. I've gone with connecting a momentary push-button configured to GPIO 4 to initiate the RPI to power off. To do this, wire up a momentary push button to the GND & GPIO, then add dtoverlay=gpio-poweroff,gpio_pin=4 line of code to /boot/firmware/config.txt. Further discussions on the OS configuration needed here

View all 5 instructions

Enjoy this project?



claylanderson531 wrote 05/10/2024 at 15:25 point

I'm utterly mesmerized by your post! It's like stepping into a sanctuary of intellect and discovering the wealth of wisdom within.

chick-fil-a menu

  Are you sure? yes | no

vinnie moscaritolo wrote 05/08/2024 at 18:50 point

nicely done, you might want to take a look at some of the work I did with the raspberry pie on a jeep - scroll down this link to the car radio project. I talked to directly to the can bus

  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