Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pi Digital Car Dashboard (OBD2 over WiFi)

This project reads OBD2 values from a WiFi ELM327 adapter and shows them on a custom dashboard.

  • The Raspberry Pi screen shows a fullscreen dashboard automatically at boot.
  • The same data is available on your smartphone from the Pi web server.
  • Works on Raspberry Pi OS Lite (32-bit) with Python.

How it works

  1. Pi connects to OBD adapter WiFi (wlan0).
  2. Python backend polls OBD2 PIDs over TCP (app/telemetry.py).
  3. Backend serves live state via HTTP API (/api/state).
  4. Dashboard web UI (local kiosk + phone browser) polls API and renders stats.

Recommended network topology

Use two WiFi interfaces:

  • wlan0: OBD adapter connection.
  • wlan1 (USB dongle): hotspot for your phone.

See docs/network_setup.md for full setup.

Project structure

app/
  config.py
  telemetry.py
  server.py
static/
  index.html
  styles.css
  app.js
scripts/
  start-kiosk.sh
systemd/
  pidash.service
  pidash-kiosk.service
docs/
  network_setup.md
run.py

Install on Raspberry Pi

One-command installer

cd /home/pi/tacho
bash install.sh

This installs packages, creates .venv, installs Python deps, installs/enables systemd services, and starts the dashboard.

You still need to verify .env (especially OBD_HOST and OBD_PORT).

  1. Install packages:
sudo apt update
sudo apt upgrade -y
sudo apt install -y git python3-venv python3-pip curl xserver-xorg xinit openbox chromium || sudo apt install -y git python3-venv python3-pip curl xserver-xorg xinit openbox chromium-browser
  1. Create virtual env and install Python deps:
cd /home/pi/tacho
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
cp .env.example .env
  1. Edit .env values:
OBD_HOST=192.168.0.10
OBD_PORT=35000
POLL_INTERVAL=0.40
RECONNECT_DELAY=3.0
HTTP_HOST=0.0.0.0
HTTP_PORT=8080
SIMULATE=false
  1. Make kiosk script executable:
chmod +x /home/pi/tacho/scripts/start-kiosk.sh
  1. Install systemd services:
sudo cp /home/pi/tacho/systemd/pidash.service /etc/systemd/system/pidash.service
sudo cp /home/pi/tacho/systemd/pidash-kiosk.service /etc/systemd/system/pidash-kiosk.service
sudo systemctl daemon-reload
sudo systemctl enable pidash pidash-kiosk
sudo systemctl start pidash pidash-kiosk
  1. Check service status:
systemctl status pidash --no-pager
systemctl status pidash-kiosk --no-pager

Boot behavior in car

When the car powers the Pi:

  1. Pi boots.
  2. pidash backend service starts.
  3. pidash-kiosk starts Chromium fullscreen on HDMI.
  4. Dashboard appears automatically.

Smartphone access

  • Same network: http://<PI-IP>:8080
  • Pi hotspot setup: http://192.168.50.1:8080

Testing without real car data

Set in .env:

SIMULATE=true

Restart services:

sudo systemctl restart pidash pidash-kiosk

Logs

journalctl -u pidash -f
journalctl -u pidash-kiosk -f

Safety note

Use this as an auxiliary display only. Mount hardware securely and avoid interacting with the dashboard while driving.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages