Skip to case study

IoT & Embedded Systems / 2024–Present

Smart RV Command Center

A Raspberry Pi command center connecting sensors, maps, and trip history.

Installed · integrations ongoing

My contribution

Built the command center for my travel trailer, connecting a Raspberry Pi dashboard, ESP32 sensors, and the GPS trip workflow.

Smart RV topo-map view with the trip and waypoint interface.
Smart RV topo-map view with the trip and waypoint interface.
1 / 2

Evidence & scope

How it was built

Personal integration project using open-source mapping and embedded tools. AI assistance is part of my development workflow.

Available to inspect

Dashboard and topo-map screenshots, plus the trip-state and GPS-filtering design. The project reports 22 geo-math unit tests.

Current limits

Screenshots are captured views, not live telemetry. Power and tank-sensor integrations and offline basemap caching remain on the roadmap. The test suite is not included in this portfolio.

The spark

I wanted a capable off-grid rig for hunting trips and getting away from connectivity, but that meant managing critical systems far from help. After nearly draining my lithium batteries during a boondocking trip because I didn't notice the solar wasn't charging properly, I decided to build a unified monitoring system. No more juggling disconnected apps and gauges, walking outside to check tanks, or discovering problems only when they became critical.

The problem

Off-grid RV travel means managing critical systems where there is no connectivity: battery health, tank levels, tire pressure, and navigation, with no unified visibility or proactive alerting.

Who it affects
Full-time RVers and weekend campers, anyone boondocking off-grid who needs to monitor battery/solar health, RV owners with lithium batteries requiring careful temperature and voltage monitoring.
Previous workflow
Multiple disconnected apps and gauges: separate TPMS phone app, standalone battery monitor display, physical tank indicators requiring trips outside. Manual checks multiple times per day, no historical data or trend analysis, no proactive alerts.
What it costs
Risk of damaging expensive lithium batteries ($1,000+ to replace) from over-discharge or temperature extremes. Wasted water from overfilling tanks or running fresh tank dry. Potential tire blowouts from undetected slow leaks. Constant low-grade anxiety about system status when off-grid for multiple days.

The solution

Built a command center on a Raspberry Pi 5 touchscreen: a fully offline ESP32 Bluetooth sensor network, live GPS tracking on USGS topo maps, and a server-side trip engine that detects driving, pauses, and camp arrivals automatically.

Outcome

Deployed in my 18ft travel trailer: ~$90 sensor network vs $300+ commercial alternatives; auto-detected trip logs with GPX import/export; 12-tab touchscreen dashboard; 22 unit tests on the geo math.

What I learned

Building truly offline-first applications requires rethinking every single dependency. Even seemingly simple things like map tiles, web fonts, and alerting all need local fallbacks. 'Works without internet' and 'designed for offline' are completely different things, and the latter requires deliberate architecture decisions from day one.

Technical decisions

React 18 + TypeScript + TailwindCSS
Component-based architecture for real-time dashboards with frequent state updates, type safety for complex sensor data schemas
MapLibre GL
Open-source mapping with switchable OSM, OpenTopoMap, and USGS topo/imagery basemaps, no API keys required
TanStack Query
Automatic background refetching and caching for real-time sensor data
Express.js + WebSockets
Lightweight backend for constrained Raspberry Pi environment, real-time push updates without polling overhead
Raspberry Pi 5
Sufficient power for dashboard + sensor processing, built-in GPIO/Bluetooth, runs in kiosk mode with systemd services
ESP32 + BME280
Low-cost Bluetooth-capable microcontroller (~$10 each) with combined temp/humidity/pressure sensor, ~$15/sensor vs $50+ commercial options
Python
Bridges Bluetooth serial to the dashboard API; excellent library support for GPIO and serial protocols on Raspberry Pi

The hard part

Turning raw GPS into a trustworthy travel log. A parked RV's GPS jitters enough to log phantom miles, and a real trip includes fuel stops that shouldn't end it. Solved with a server-side trip state machine: trips start only after sustained movement (60 seconds above 1.5 m/s and 200m traveled), pause after 5 idle minutes, auto-stop after 30 paused minutes or on entering a 'camp' geofence, and resume if motion returns within 2 hours. The odometer ignores sub-threshold moves and rejects impossible speed spikes. Also tackled kiosk mode on Raspberry Pi: auto-start on boot, full-screen with no OS chrome, and power failure recovery using systemd services and watchdog processes.

Next steps

  • Victron and tank-sensor integration to bring power and water telemetry fully live
  • Offline basemap tile caching for true no-service navigation
  • CAN bus integration for motorhome chassis data
  • Machine learning for predictive maintenance alerts
  • Starlink integration for remote monitoring when away from the RV