In Brief
Taking over the MINI!
In an effort to keep my MINI around for as long as possible, I have replaced numerous parts with upgraded/longer lasting ones (especially converting plastic parts to metal ones). A future weak link I saw in keeping this car forever is the BMW electronics (which can't last forever).
In realizing this, I decided to begin taking control over the car & am attempting to phase out as much of the BMW electronics as possible with my own custom ones. With my own electronics, it will be much easier for me to maintain in the future (and make fun upgrades as well).
Hardware Overview
Computers:
Main: Arduino Portenta H7
Interior Controller: Arduino Mega 2560 Rev 3
Network:
CAN
Using the Interior Controller to sniff the BMW CAN network
SEEED Studio CAN-BUS Shield V2 as the transceiver
I2C
Main computer is the master of the network
CAT-6 in twisted pairs for network wiring
Bi-directional logic level shifter (as the network in the car runs at 5v, however the Main computer is 3v)
TCA4307 for hot-swapping & stuck bus recovery
LTC4311 I2C extender to ensure reliable data transmission given the length of the network
User Interface (i/o):
3 Axis Joystick With Select Button
20x4 LCD With I2C Backpack
The 20x4 lcd is a great display & it’s easy to have a second one for the passenger if you want, however it’s limited naturally in what it can show
I’m looking at upgrading to this 128x32 graphic lcd
These classic liquid crystal displays are the best type of display for the car because they have a large operating temperature range, good viewing angles, are readable in direct sunlight, & will not burn in
To make it easy to restart the computers without cycling power
Manual Switch With Separately Controlled Indicator Light (4x)
These are overhead near the sunroof switch
I had to modify the switches I bought so that I could independently control the indicator lights (so as to be able to have accurate indicator lighting when running the lights in automatic mode)
I haven’t made this yet, but plan to use IR sensors to detect the position of the shift lever
Reverse is detected already via the reverse switch built into the transmission
This is controlled by the Interior Controller