It probably won’t surprise you to find out that a 1989 BMW 325i doesn’t have much in the way of electronic gadgetry onboard. In fact, what passes for an in-dash “computer” in this vintage Beemer is just a digital clock with a rudimentary calendar function. Not content to waste his precious dashboard space any longer, [Ryan Henderson] used his time in quarantine to replace the clock module with a Raspberry Pi.
Nestled in a custom laser-cut housing is a touch screen LCD module that connects directly to the GPIO header of a Pi Zero. Combined with some Python code, this provides a very slick multipurpose interface for pretty much anything [Ryan] wants. Right now he’s got it hooked up to a GPS receiver so he can figure out things like speed and acceleration, but the only real limit on what this little drop-in upgrade can do is how much code you want to sit down and write.
Thankfully, it sounds like [Ryan] has done a lot of the hard work for you. He’s put together a Python library that allows the user to easily draw analog gauges on the screen. The faces are parametrically sized, and even have custom minimum/maximum marks. Of course if you’d rather just throw some text and images on the screen, that’s accomplished easily enough with existing libraries such as PyGame.
[Ryan] says he’s also working on some code to better integrate the Pi into the vehicle’s systems by way of a Bluetooth OBD2 adapter. In the most basic application that would allow you to throw various bits of engine data up on the screen, but on more modern cars, you could potentially tap into the CAN bus and bend it to your will.
While the physical size and shape of this particular modification is clearly focused on this model and year of BMW, the general concepts could be applied to any car on the road. [Ryan] has recently started a GitHub repository for the project and hopes to connect with others who are interested in adding a little modern complexity convenience to their classic rides.
The reality is that cars become more dependent on their onboard computers with each passing year. Already we’re seeing Tesla owners struggle with cooked flash chips, and things are likely to get worse before they get any better. While undoubtedly there are some that would rather keep their daily driver as simplistic as possible, we’re encouraged by projects like this that at least let owners computerize their cars on their own terms.
This is awesome!!
I have to upgrade my own project – it is using cathodic ray tubes instead of touch LCD but your idea is amazing. The car is no longer safe to drive, it will go to scrap soon – but another car is always easy to find:
https://hackaday.com/2016/04/19/good-news-its-the-dacia-1310/
The article should clarify that you weren’t the perpetrator of the hit and run (I hope!!)
Nothing new really, people have been tossing computers into cars for years. Back in 2005 I built a little itx pc and had it in the trunk with a motorized LCD in the dash. Had GPS, MP3, Radio Shark, OBDII and at one point was going to get a Clearwire modem but they wanted too much. Worked great for a year until I got a speed bump a little too fast and cause the hard drive to crash.
I currently don’t have a car but when I do get one I plan to put a Pi4 in it.
hah, that’s nothing, my old motorbike got gifted a little hack and instead of the tachometer I put a small computer with GPS, 3/4/5G, LoRa, Zigbee, Flac support, 4k 180fps video, Wireshark, aircrack-ng, spectrum analyzer, oscilloscope, weller soldering station, CANbus, Ethernet-on-the-road, Satellite internet, Virtual reality, a virtualboy helmet, 13″ OLED display and an espresso machine.
Wow lee that’s so cool dude, wow so much cooler than the article. I can’t believe they had the balls to write this when you’ve accomplished so much more
Big deal. Back in 1976 I replaced half the dashboard of my Ranchero with an IMSAI 8080, took the side panel off and streamed music to the stock AM radio with the EMI. Used to dial into the ARPANET while in the road too, had a few miles of cable mounted on spool in the bed. Just had to be careful in the corners.
Cool story bro. You put a computer in your car that didn’t interface at all with the internal workings of your car. Not sure how what you did and how what Ryan did are equivalent at all.
It doesn’t say where he is getting OBD2 data from, but it sounds like there is another hack in play that the article doesn’t mention at all if there is an OBD2 data bus on the car. Has it been swapped to a later engine and control unit, or is he putting together a data acquisition unit that grabs analog data out of the car’s sensors and broadcasts it with the OBD2 protocol? Either one sounds like there’s another interesting story here.
OBD2 obviously isn’t for the 89, he’s trying to develop this into a general purpose project and mentions on the page he’s got a 2012 Ford van that will be getting its own display.
[Ryan] here! [Truckin] is 100% right, the 89 currently does not have OBDII capabilities. I have swapped an OBDII engine into one of these chassis before, but have no plans to do this for my current one. The main OBDII functionality will be used in my 2012 Transit Connect. All communication is done via bluetooth OBDII readers that you get off Amazon. Tons of libraries and documentation out there!
That being said, yes there is a little trick up my sleeve for the 89. If you check out the GitHub in the article you’ll see a “V1-Arduino_UDP_Comms” file. I am currently working on an ESP32 based “box” that can receive the 0-5v/resistance based readings and it relays back to the Pi using UDP. I have it working but just never made it a main feature of the project. Current monitoring engine bay temps using this method.
Love the project, congratulations! Will be following with interest, especially the OBD interface 👍
Touch panel in car is a bad idea for obvious reason. This project have to be enchanced with hardware buttons and switches, preferrably original BMW ones. F.e. use stock BMW boardcomputer controls to control RPi.