CarBruh
Two-piece DIY infotainment system designed to be a cheap retrofit, for cars that do not have any reasonable info-display system.
CarBruh — Vehicle Dashboard Display
CarBruh is a DIY infotainment system for vehicles that do not have Android Auto or CarPlay. A phone application collects data from GPS, weather, Spotify and OpenStreetMap services and forwards it over via BLE to an ESP32-based unit, which displays it on a dashboard-mounted LCD.
Purpose
Navigation, media and alert data are shown on a fixed display instead of a windshield-mounted phone.
The system has two components:
- Mobile app — data acquisition, processing and transmission.
- Hardware unit — receives data over BLE and drives the display.
System Overview
Mobile application
The app aggregates data from external services, formats it for transmission, and sends it to the hardware unit. It runs in the background, so no interaction with the phone is required while driving.
Modules
- Navigation — turn-by-turn instructions derived from OpenStreetMap (OSM) data, rendered on the hardware display.
- Music control — track metadata and playback control through the Spotify Web API.
- Weather — current conditions and temperature from the Open-Meteo API, using the device’s location services.
- Speed camera alerts — proximity warnings based on Overpass API data. Coverage is currently tuned for Poland.
Hardware
Development moved from a breadboard build to a prototype with a custom PCB and enclosure.
- PCB — custom board carrying the ESP32 microcontroller and power management circuitry.
- Enclosure — 3D-printed using FFF (Fused Filament Fabrication), designed for dashboard mounting.
- Display — 20x4 alphanumeric LCD, I2C interface.
- Input — KY-040 rotary encoder for menu navigation.
![]()
Technical Architecture
Mobile application (Flutter)
Written in Dart with Flutter. Handles all data logic.
- Connectivity —
flutter_blue_plusfor BLE communication with the hardware unit. - Backend and telemetry — Supabase for backend services; Azure Application Insights for performance metrics and crash reporting.
- Integrations — device location services feed the weather and navigation modules; the Spotify Web API handles media control.
Firmware (C++ / PlatformIO)
Written in C++ on PlatformIO using the Arduino framework, targeting the ESP32.
- Handles the BLE stack via the Nordic UART Service (NUS).
- Drives the LCD over I2C.
- Parses incoming data packets to keep latency between phone and display low.