Fitting a square display into a round hole

Recall, I'm trying to add a digital dashboard display in the round hole normally filled by the tachometer of the stock BMW instrument cluster.  It is a gorgeous set of VDO instruments set in a French walnut real wood cluster.  I want to keep as much of the original look as possible but there is no need for a tachometer.  The speed of the Tesla motor is many times faster than a gas engine and basically irrelevant.  Instead, I'd like to know what gear I'm in, the state of my batteries, the most critical temperature of the components, my remaining range, output power, etc.

Dual dash apps, one in the old tach location and another on a touchscreen.  Each communicates with each other and the rest of the components in the car over CAN.

Therefore, I've been programming a "dash app" that runs on a Raspberry Pi and can be displayed in the car.  To date, I've had 16:9 rectangular version of the app running on a touchscreen that now works great but is a bit too large and clunky to integrate into the BMW instrument cluster.  I may try hiding it away behind the speaker grill in the dash, or perhaps in the glovebox for changing settings but I really want a smaller read-only display that will fit behind the glass where the tach used to be. 

The trouble is, there isn't much room to work with.  It needs to fit between the existing analog speedometer and clock and the steel dash and top of the binnacle limit the height.  It really needs to be square or round but 99% of the displays out there are rectangular.  

The square display shows a squished and wrapped output

A rat's nest of boards, VGA cables, adapters, etc. mounted to the BMW instrument panel

Big metal frame and distorted output make this display frustrating

I bought the closest display I could find -- a Chinese made 5" diagonal square display but the display is a bit small and the surrounding frame is too big.  That, and the resolution is only 480x480 px using a large, old VGA adapter board.  I designed and 3D printed a mount to get it into the BMW cluster but it just wouldn't cooperate.  In a world that has gone all HDMI, it requires a HDMI-VGA adapter cable and I can't find a Linux display mode that doesn't stretch or add borders to the little piece of crap.  I tried external hardware scaling devices and all manner of software configurations.  After months of struggling with it, I finally gave up.  

Fortunately, I found a thin, 800x800 HDMI round! display.  What a pleasure to work with.  It fits perfectly, works with the Raspberry Pi's default HDMI settings.  It has a very small daughter board and a thin ribbon cable and is exactly the right size for the hole left by the tach.

Thin, round, correct size, and good resolution.  We have a winner!

Isn't that nice?

Working on a 3D printed mount

I had all my dash wood refinished by a guy in Hungary.  Putting the instrument cluster back together isn't that simple, as the original cardboard gauge gaskets had deteriorated and the trim needs to be installed in the proper orientation.  I printed new gaskets in a pliable PLA clear filament and put it all back together with a 3d printed mount that holds the display and its little daughter boards.

New 3D printed gauge gaskets 

3d printed custom mount holds the display in the old tach hole

All mounted and ready for power and HDMI

This allowed me to support two different "screen modes" in my app, one for the rectangular touchscreen and another for the round display.  I can run two instances of my app and the two apps communicate with each other via the CANbus.

One of many display modes supported by my app.  This is the digital speedo mode.

This page displays when the car is plugged in and charging

This is analog speed and power mode

See the early touchscreen version in action...


And then the round version...




Popular posts from this blog

Different strokes

Love that battery

Going Analog in a Digital World