IoT · Wearable · Real-Time Monitoring

Sustainable Firefighter
Monitoring Device

A real-time IoT wearable safety system that continuously monitors firefighters' physical condition, location, and environment — keeping commanders informed and firefighters safe.

Explore Project View Gallery Open Live Dashboard Project Documents

What is SFMD?

The Sustainable Firefighter Monitoring Device (SFMD) is a wearable IoT safety solution that collects sensor data — motion, temperature, GPS location — and transmits it over Wi-Fi to a Firebase backend. A web dashboard gives fire commanders instant, live situational awareness.

Auto Emergency Detection
Detects man-down scenarios (no movement for 30 s) and high temperature automatically — no action required from the firefighter.
Live GPS Tracking
Real-time location plotted on an interactive MapLibre GL map with a trail of the last 50 GPS positions.
Manual SOS Button
A dedicated push button lets firefighters trigger an instant distress signal that overrides all other device states.
Temperature Monitoring
DHT11 sensor reads ambient temperature every loop cycle, triggering progressive alerts as heat rises above safe thresholds.
Analytics Dashboard
Line charts, donut charts, and movement timelines provide trend analysis over a rolling 60-reading window.
Voice & Visual Alerts
Color-coded status indicators and voice alerts on the web dashboard ensure commanders never miss a critical event.

System Architecture

Three-tier architecture: wearable device → Firebase cloud backend → Next.js web dashboard. Data flows continuously over secure HTTPS.

Wearable Device
  • ESP32 MCU
  • MPU-6050 (Motion)
  • DHT11 (Temperature)
  • Neo-6M GPS
  • SOS Button
  • Buzzer + LED
  • Li-ion Battery
Firebase Backend
  • Realtime Database (live)
  • Firestore (historical)
  • REST API /api/data
  • HTTPS PUT from ESP32
Web Dashboard
  • Next.js (React)
  • Live Status Panel
  • Interactive GPS Map
  • Analytics & Charts
  • Alert & Event Log

Data Payload (ESP32 → Firebase)

{
  "temperature":   42.5,
  "total_acc":     0.98,
  "movement":      "MOVING",
  "status":        "NORMAL",
  "mpu_status":    "OK",
  "dht_status":    "OK",
  "gps_status":    "OK",
  "system_status": "OK",
  "latitude":      17.385044,
  "longitude":     78.486671,
  "timestamp":     154823
}

Hardware Components

All components are mounted on the ESP32 and powered by a single Li-ion battery, keeping the device lightweight and wearable for firefighters.

# Component Purpose Interface
1ESP32Main microcontroller — Wi-Fi, I2C, UART, GPIOCore
2MPU-60503-axis accelerometer & gyroscope — motion & fall detectionI²C
3DHT11Ambient temperature sensor1-Wire
4Neo-6M GPSLatitude/longitude trackingUART
5Push ButtonManual SOS trigger (GPIO 14 input / GPIO 27 simulated GND)GPIO
6BuzzerLocal audible alerts for the firefighterGPIO
7RGB LEDVisual status indicatorGPIO
8Li-ion BatteryPrimary power source — 3.7 V–4.2 VPower

Pin Map — ESP32

ESP32 PinConnected ToNotes
GPIO 21 (SDA)MPU-6050 SDAI²C data line
GPIO 22 (SCL)MPU-6050 SCLI²C clock line
GPIO 4DHT11 DataSingle-wire; 10 kΩ pull-up to 3.3 V
GPIO 16 (RX1)Neo-6M TXHW Serial 1 RX
GPIO 17 (TX1)Neo-6M RXHW Serial 1 TX
GPIO 14SOS Button (signal)Active LOW, INPUT_PULLUP
GPIO 27SOS Button (GND leg)Driven LOW — simulated ground
GPIO 13Buzzer (+)Active HIGH

How It Works

The device runs a non-blocking state machine. Sensor values are read every loop iteration and the system state is updated in real time — no delay() calls that could stall GPS parsing.

Device States

Normal
All parameters within safe limits. Status LED on, buzzer off.
Warning
Potential danger detected. Alert LED on, buzzer intermittent (1 Hz).
Emergency
Critical condition. Alert LED on, buzzer continuous.
SOS
Button pressed. Overrides all other states. Continuous buzzer.
Offline
No data received by dashboard. Last known state retained.

Movement Detection — No-Motion Timer

0–10 s
MOVING
10–29 s
WARNING
≥ 30 s
EMERGENCY

The MPU-6050 computes movement = |√(Ax²+Ay²+Az²) − 1.0 g|. If movement drops below 0.03 g the no-motion timer starts. Thresholds of 10 s and 30 s trigger WARNING and EMERGENCY respectively.

Temperature Thresholds

Temperature RangeStateBuzzer Behaviour
< 25 °CNORMALSilent
25 – 30 °CNORMAL1 ambient beep / min
30 – 35 °CNORMAL2 ambient beeps / min
35 – 40 °CNORMAL3 ambient beeps / min
> 40 °CWARNING →Escalates to WARNING / EMERGENCY

SOS Button Logic

Toggle Design
First press activates SOS. Second press deactivates it. Debounced at 200 ms to prevent accidental re-triggers.
Simulated Ground Trick
GPIO 27 is driven permanently LOW, acting as the button's GND leg. Eliminates a physical GND wire and simplifies the wiring harness.

Web Dashboard

A full-featured Next.js command-center application. Connects to Firebase Realtime Database for live streaming and Firestore for historical analytics.

SFMD Web Dashboard Screenshot
Live GPS Map Status Cards Temperature Trend Chart Movement Timeline Status Distribution Donut Alert & Event Log Field Units Roster Run Simulation Mode
Left Panel
Status card, battery, sensor row, comm reliability bars, and live scrollable log with timestamped events.
Center Panel
Interactive MapLibre GL map with real-time firefighter position & GPS trail. Field units roster with online/offline indicators.
Right Panel
Temperature min/avg/max badges, line chart (Recharts), movement pixel strip, and status distribution donut chart.

Technologies Used

A blend of embedded C++ firmware and a modern JavaScript web stack, unified by Firebase as the real-time data backbone.

Firmware (ESP32)

Arduino C++ ESP32 SDK WiFiClientSecure DHT11 Library MPU-6050 Library TinyGPS++ ArduinoJson

Web Dashboard

Next.js (React) Firebase RTDB Firestore MapLibre GL JS Recharts Tailwind CSS Firebase Admin SDK

API Endpoints

The Next.js server exposes a REST route for alternative HTTP-based ingestion and for writing to the Firestore historical collection.

POST /api/data

Receives sensor data from ESP32 (or any HTTP client) and stores it in Firestore.

Request Body

{
  "device_id":  "FF_001",
  "temperature": 42.5,
  "movement":   "MOVING",
  "status":     "NORMAL",
  "latitude":   17.385044,
  "longitude":  78.486671
}

Response Codes

200  { "success": true }
400  { "error": "device_id is required" }
503  { "error": "Firebase not initialized" }
500  { "error": "Internal server error" }

Assumptions & Known Limitations

This is a functional prototype. The following constraints are acknowledged and are planned to be addressed in future production versions.

AreaDetail
GPS indoorsNeo-6M signal degrades inside buildings. Dashboard retains last known location.
DHT11 accuracy±2 °C — suitable for prototypes. Production should use DHT22 or SHT31.
Single firefighterFirmware hardcoded for device ID FF_001. Multi-device support is planned.
Firebase authUses legacy Database Secret. Should use Firebase Auth tokens in production.
SSL verificationclient.setInsecure() disables cert verification. Production must verify the server cert.
TimestampESP32 sends millis() (uptime), not wall-clock time. Dashboard uses server local time.
ConnectivityWi-Fi range ~50–100 m indoors. LoRa / GSM upgrades planned for larger deployments.

Team

The people behind the Sustainable Firefighter Monitoring Device project.

SM
Srinivasa Manikanta

Developer who handled the entire software side of the project, including system logic, integration, and dashboard development.

SA
Santhosh

Engineer who took care of the presentation work and also contributed to the hardware connections for the project.

SC
Sri Chaitanya

Engineer who took care of the hardware connections and supported the physical implementation of the project.