The almighty iDrive supplemental solution for all people who don't have interest in fitting a 1500€ retrofit solution.
The Project consists of the following:
- Odroid N2 4GB with 32GB eMMC and Android as the car-pc itself
- Odroid VU7a+ Screen
- Screen casing assembly to be fitted as a replacement for the small glovebox on the dashboard (See: https://www.ebay.de/itm/Monitorhalter-f ... 1438.l2649)
- iDrive 7-Button Controller (Facelift)
- Matching center console assembly for the iDrive Controller
- Custom command & control board with: Arduino Nano 33 IoT, RN42HID Bluetooth Module, MCP2515 + TJA1050 CAN interface, INA219 voltage sensor, 2 pwm headers for fans (See: https://github.com/Neuroquila-n8fall/od ... rpc-nano33)
- Teltonika RUT850 automotive 4G access point
- LTC3780 power supply module
- A few wires to connect everything
- A little bit of tinkering
Vu7a+ mounted inside dash casing
Note the pin header on the power button side (left hand side). I've soldered these on to have a proper connection for triggering the power button remotely.
At the heart of the project is the Odroid N2 itself. It resembles the computer which can be found on the iDrive system as well. It doesn't do much, however, because it is either on or off and any change to the power state would mean pushing a button of some sort. It works on its own but to get a integrated solution the N2 has to be powered on or off depending on the current state of the car and "drivers demand".
Also it has no integrated 4G connectivity which makes it, at first sight, useless as an infotainment system with navigation and streaming services.
Because there are harsh conditions in a car it has to be supplied by a power supply which not only delivers enough oomph but also has a high input tolerance and temperature range. At this point I'm very surprised the N2 itself holds together quite nicely under these conditions!
Startup & Shutdown in a Car
We could trigger the power by checking components that will come online if the car is opened or the ignition is turned on. This would mean that as soon as we launch the engine, the PC would start. This would work but isn't the same as we know it from the original iDrive system. It boots very fast and we simply can't achieve these speeds if we want to keep the android system as it is.
So I decided to hack into the CAN Bus of the car and check if I can get any messages that would tell what the current state of the car is and what is expected. This way we could start the N2 as soon as we push the "open" or "close" button on the key fob. The time it takes to walk up to the car the N2 has enough time to boot up and as soon as we enter the car it's ready to do its job.
I've also tinkered with the possibility to have the pc always on and put it to sleep or shut it down if the battery is too low. Simply put this didn't work out in the end because I swapped to a Due MCU and couldn't make it work with a matching voltage divider network to monitor the battery. The code still exists but now that I have all the correct facilities in place, I could re-activate the mechanisms.
A problem when driving a car is that the light conditions change continuously. This makes it hard to read a display and that's the reason why we only see now big displays coming to cars in the recent years which replace the whole dashboard instruments. These screens need to be glare-resistant, hellish bright and very robust. But that's not the whole story. The screen needs to adapt to the actual outside light levels so the display is readable at bright sunlight and doesn't dazzle you at night.
Usually we would rely on a photo diode to measure light levels and react on them but in this case, since we're already on the CAN Bus of the car, we can use the light level sensor on the windscreen. This is a whole module fitted on the foot-end of the rear-view mirror called "RLS" (Regen-Licht-Sensor = Rain-Light-Sensor). It reports the current light levels at intervals or if it changed. We can use that to feed in a PWM signal to the VU7a(+) backlight regulator as described on the Wiki.(See: https://wiki.odroid.com/accessory/displ ... th_android)
Command & Control Board
The "Command & Control" Module is the interface between the Car and the N2. It bridges the gap between the Android system and the Cars CAN-bus network and takes care of all the tasks that would otherwise mean a customization of the android system or writing apps.
The first iteration of the control board was a mixture of a loose Arduino Due, Bluetooth module and MCP2515 CAN Interface module. What a mess!
The picture above shows the first iteration. It's really a complete mess but somehow I needed a evaluation platform.
One year later, the whole thing is going to be "final":
New integrated "Command & Control" board
Source code and detail can be found at the Github repo:
https://github.com/Neuroquila-n8fall/od ... rpc-nano33
Note: I will upload more pictures of the whole setup as soon as the weather plays along and I am finally able to swap out the cable mess with the integrated board.