Skip to content

Latest commit

 

History

History
72 lines (53 loc) · 3.75 KB

README.md

File metadata and controls

72 lines (53 loc) · 3.75 KB

BMW Control Center

An embedded computer, an Arduino PCB, and an Android tablet walk into a bar car...

./fitmet.jpeg ./sensors.png

I am modernizing my 2005 vehicle by adding oodles of connectivity and custom electronics. So far, I've successfully implemented:

  • Bluetooth Audio with hotspot tethering
  • Programmable wireless LTE, pushing state over MQTT
  • Arduino based custom PCB measuring battery voltages, switching relays, and tracking GPS location
  • K-Bus, controlling radio/windows/locks/other auxiliaries
  • CAN Bus, recording ECU data like speed, RPM, pressure
  • Hardwired 4K dash camera with 1TB SSD
  • Prometheus exported on /metrics for recording time series data
  • IP namespaces and write-on-update state control, limiting wireless data
  • Android tablet running a customized build of LineageOS
  • 3D printed cases, bezels, and shims
  • Android apps providing "Tesla-like" control over all the above

These primary features culminate into an app controlled, privacy preserving, monolith of a smart-car-computer system.

Stack

It's all primarily written with:

  • Go API for vehicle state
  • React Native clients for remote system control
  • C with PlatformIO + Arduino
  • MQTT
  • Python for handling exported album artwork
  • Containizered Mosquito and Prometheus instances on a home server
  • Various Unix tools

My design goal is to steal all the ideas modern automakers have fleshed out the past two decades, learning everything I can while writing my own take.

Hardware

Control App

./media.png

Infrequently Asked Qs

What makes this specific to BMW?

Great question, me. The KBus is a proprietary complement to the more universal CAN bus, and is unique to BMWs and Minis. Probably Rolls-Royce as well.

The KBus is such a critical component, and the design is specific to my model, it would be less useful on any other vehicle.