A real-time IoT wearable safety system that continuously monitors firefighters' physical condition, location, and environment — keeping commanders informed and firefighters safe.
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.
Three-tier architecture: wearable device → Firebase cloud backend → Next.js web dashboard. Data flows continuously over secure HTTPS.
{
"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
}
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 |
|---|---|---|---|
| 1 | ESP32 | Main microcontroller — Wi-Fi, I2C, UART, GPIO | Core |
| 2 | MPU-6050 | 3-axis accelerometer & gyroscope — motion & fall detection | I²C |
| 3 | DHT11 | Ambient temperature sensor | 1-Wire |
| 4 | Neo-6M GPS | Latitude/longitude tracking | UART |
| 5 | Push Button | Manual SOS trigger (GPIO 14 input / GPIO 27 simulated GND) | GPIO |
| 6 | Buzzer | Local audible alerts for the firefighter | GPIO |
| 7 | RGB LED | Visual status indicator | GPIO |
| 8 | Li-ion Battery | Primary power source — 3.7 V–4.2 V | Power |
| ESP32 Pin | Connected To | Notes |
|---|---|---|
| GPIO 21 (SDA) | MPU-6050 SDA | I²C data line |
| GPIO 22 (SCL) | MPU-6050 SCL | I²C clock line |
| GPIO 4 | DHT11 Data | Single-wire; 10 kΩ pull-up to 3.3 V |
| GPIO 16 (RX1) | Neo-6M TX | HW Serial 1 RX |
| GPIO 17 (TX1) | Neo-6M RX | HW Serial 1 TX |
| GPIO 14 | SOS Button (signal) | Active LOW, INPUT_PULLUP |
| GPIO 27 | SOS Button (GND leg) | Driven LOW — simulated ground |
| GPIO 13 | Buzzer (+) | Active HIGH |
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.
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 Range | State | Buzzer Behaviour |
|---|---|---|
| < 25 °C | NORMAL | Silent |
| 25 – 30 °C | NORMAL | 1 ambient beep / min |
| 30 – 35 °C | NORMAL | 2 ambient beeps / min |
| 35 – 40 °C | NORMAL | 3 ambient beeps / min |
| > 40 °C | WARNING → | Escalates to WARNING / EMERGENCY |
A full-featured Next.js command-center application. Connects to Firebase Realtime Database for live streaming and Firestore for historical analytics.
Physical hardware builds, demonstration prototypes, and visual design materials produced during the project.
A blend of embedded C++ firmware and a modern JavaScript web stack, unified by Firebase as the real-time data backbone.
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" }
This is a functional prototype. The following constraints are acknowledged and are planned to be addressed in future production versions.
| Area | Detail |
|---|---|
| GPS indoors | Neo-6M signal degrades inside buildings. Dashboard retains last known location. |
| DHT11 accuracy | ±2 °C — suitable for prototypes. Production should use DHT22 or SHT31. |
| Single firefighter | Firmware hardcoded for device ID FF_001. Multi-device support is planned. |
| Firebase auth | Uses legacy Database Secret. Should use Firebase Auth tokens in production. |
| SSL verification | client.setInsecure() disables cert verification. Production must verify the server cert. |
| Timestamp | ESP32 sends millis() (uptime), not wall-clock time. Dashboard uses server local time. |
| Connectivity | Wi-Fi range ~50–100 m indoors. LoRa / GSM upgrades planned for larger deployments. |
The people behind the Sustainable Firefighter Monitoring Device project.
Developer who handled the entire software side of the project, including system logic, integration, and dashboard development.
Engineer who took care of the presentation work and also contributed to the hardware connections for the project.
Engineer who took care of the hardware connections and supported the physical implementation of the project.