Mountain Climber IoT Safety Tracking System

An off-grid IoT-based safety tracking and health monitoring system for mountain climbers and basecamp rescue teams.

Project Status IoT Platform LoRa Communication GPS Tracking Flask Dashboard Flutter Mobile Application


Table of Contents

  1. Overview
  2. Project Objectives
  3. System Architecture
  4. Key Features
  5. Hardware Components
  6. Software Stack
  7. Communication Flow
  8. Web Dashboard
  9. Mobile Application
  10. Getting Started
  11. Team
  12. Links
  13. Future Improvements

Overview

The Mountain Climber IoT Safety Tracking System is an embedded and IoT-based project developed to improve climber safety in remote mountain environments. The system focuses on real-time location tracking, emergency communication, and basic health monitoring support for climbers and basecamp operators.

Mountain climbers and hikers often travel through areas where cellular network coverage is weak, unstable, or unavailable. In such situations, traditional mobile-based communication methods may not be reliable during emergencies. This project addresses that limitation by using LoRa communication as the primary long-range, low-power communication method between the climber device and the basecamp station.

The system includes a portable climber device, a basecamp LoRa receiver node, a web-based monitoring dashboard, a Flutter mobile application, and a wearable armband planned for health monitoring. The climber device can collect GPS coordinates, transmit status updates to the basecamp, send SOS alerts, exchange short messages, and display essential information through an OLED display.


Project Objectives

The main objectives of this project are:


System Architecture

The proposed system consists of four main modules:

Module Description
Main Climber Device ESP32-based portable device responsible for GPS tracking, LoRa communication, OLED display output, button input, and mobile app connectivity.
Wearable Armband ESP32-H2 based wearable unit planned for heart rate monitoring using a MAX30102 sensor and Bluetooth communication.
Basecamp LoRa Node ESP32-based LoRa receiver/transmitter connected to the basecamp laptop through USB serial communication.
Web Dashboard Flask-based dashboard used by basecamp operators to monitor climber location, status, alerts, messages, and logs.
Mobile Application Flutter-based companion application used by the climber for status viewing, messages, SOS control, and phone GPS fallback.

High-Level System Diagram

Wearable Armband
ESP32-H2 + MAX30102
        |
        | Bluetooth
        v
Main Climber Device
ESP32 + NEO-6M GPS + LoRa + OLED + Buttons
        |
        | LoRa
        v
Basecamp ESP32 LoRa Node
        |
        | USB Serial
        v
Laptop Web Dashboard

Key Features

Feature Description
GPS Location Tracking Tracks climber location using a NEO-6M GPS module.
LoRa Communication Enables long-range data transmission between climber and basecamp without relying on cellular networks.
SOS Emergency Alert Allows the climber to send an emergency alert using a physical SOS button.
Check-in Function Allows the climber to quickly send an “I am OK” message to the basecamp.
Distance and Direction Calculation Calculates the distance and direction between the climber and the basecamp reference point.
Web Dashboard Monitoring Displays climber status, GPS information, alerts, messages, and session logs.
Mobile Application Support Provides a companion interface for the climber to view status and send messages.
Phone GPS Fallback Allows the mobile phone GPS to be used when the NEO-6M GPS module has no valid fix.
Two-Way Messaging Supports short messages between the basecamp and climber.
Health Monitoring Support Supports future integration with a wearable armband for heart rate monitoring.
Battery Monitoring Support Designed to support battery percentage display for both climber device and armband.
Multi-Climber Support Dashboard structure supports multiple climber devices using unique climber IDs.
Session Log and Export Maintains a session log that can be exported for review and documentation.

Hardware Components

Main Climber Device

Component Purpose
ESP32 Development Board Main controller for GPS, LoRa, WiFi access point, OLED display, and button inputs.
SX1278 / Ra-02 LoRa Module Provides long-range wireless communication with the basecamp node.
NEO-6M GPS Module Provides latitude, longitude, and altitude information.
OLED Display Displays GPS status, distance, LoRa status, armband status, SOS status, and battery level.
Push Buttons Provides physical SOS, Clear SOS, and Check-in controls.
Rechargeable Battery System Powers the portable climber device during field operation.

Wearable Armband

Component Purpose
ESP32-H2 Development Board Controller for the wearable armband and Bluetooth communication.
MAX30102 Sensor Planned sensor for heart rate and pulse monitoring.
Rechargeable LiPo Battery Provides portable power for the armband.
Power Switch Allows the armband to be turned on and off.

Basecamp Node

Component Purpose
ESP32 Development Board Acts as the basecamp LoRa bridge.
SX1278 / Ra-02 LoRa Module Receives climber telemetry and transmits basecamp messages.
USB Serial Connection Connects the basecamp ESP32 to the laptop dashboard.
Laptop or PC Runs the Flask web dashboard.

Software Stack

Area Technologies / Tools
Main Device Firmware Arduino C/C++ for ESP32
Basecamp Firmware Arduino C/C++ for ESP32 LoRa bridge
Armband Firmware Arduino C/C++ for ESP32-H2
Web Dashboard Python Flask
Mobile Application Flutter
Dashboard Frontend HTML, CSS, JavaScript
Communication Methods LoRa, WiFi AP, Bluetooth, USB Serial
GPS Processing NEO-6M GPS data parsing and filtering
Version Control Git and GitHub
Documentation GitHub Pages with Jekyll-compatible Markdown

Communication Flow

Normal Tracking Mode

NEO-6M GPS Module
        |
        v
Main Climber ESP32
        |
        | LoRa telemetry packet
        v
Basecamp ESP32
        |
        | USB Serial
        v
Flask Web Dashboard

SOS Emergency Mode

SOS Button Pressed
        |
        v
Main Climber ESP32
        |
        | LoRa SOS packet
        v
Basecamp ESP32
        |
        v
Web Dashboard Alert Panel

Mobile GPS Fallback

Phone GPS
        |
        | WiFi AP
        v
Main Climber ESP32
        |
        | LoRa telemetry packet
        v
Basecamp Dashboard

Armband Health Data Flow

MAX30102 Sensor
        |
        v
ESP32-H2 Armband
        |
        | Bluetooth
        v
Main Climber Device / Mobile Application
        |
        v
Dashboard and Mobile Interface

Web Dashboard

The web dashboard is intended for basecamp operators or mountain rangers. It provides a centralized monitoring interface for climber tracking and emergency response.

Function Description
Multi-Climber Monitoring Displays climber cards for each unique climber device ID.
GPS Status Display Shows whether location data is from NEO-6M, phone GPS, last known location, or unavailable.
Distance Map Displays basecamp point, climber point, direction, distance, and movement path.
Alert Panel Highlights SOS, GPS lost, offline climber, and low battery conditions.
Conversation Panel Supports short message communication between basecamp and climber.
Session Log Records SOS events, messages, GPS updates, and basecamp actions.
Export Function Allows session log export for documentation and review.
Basecamp GPS Setup Allows operators to manually enter and send basecamp GPS coordinates.

Mobile Application

The Flutter mobile application acts as a companion interface for the climber. It communicates with the main climber device through the ESP32 WiFi access point.

Function Description
Device Status View Displays GPS, LoRa, armband, SOS, and battery status.
Distance Information Shows distance and direction from the basecamp.
SOS Control Allows the climber to trigger an SOS alert from the mobile app.
Quick Messages Provides predefined messages such as “I am OK”, “Need help”, and “Low battery”.
Phone GPS Fallback Sends phone GPS data to the climber device when NEO-6M GPS is unavailable.
Armband Status Displays Bluetooth armband and heart sensor status.
Conversation View Shows messages exchanged between the climber and the basecamp.

Getting Started

This repository contains firmware, dashboard code, mobile application code, and documentation related to the Mountain Climber IoT Safety Tracking System.

Repository

View Project Repository

Project Page

Open Project Page

Suggested Repository Documentation

Section Description
Project Overview Problem definition, motivation, and proposed solution.
Hardware Design Component selection, wiring, device structure, and enclosure design.
Firmware ESP32 firmware for the climber device, basecamp node, and armband.
Web Dashboard Flask dashboard setup, interface, and monitoring features.
Mobile Application Flutter application setup and usage instructions.
Communication Protocol LoRa packet formats, message flow, and status codes.
Testing and Results GPS testing, LoRa communication testing, dashboard testing, and SOS testing.
Future Improvements Planned improvements and possible extensions.

Team

Registration No. Name Email
e21198 Sahan Jayasundara e21198@eng.pdn.ac.lk
e21328 Prabash Rathnayaka e21328@eng.pdn.ac.lk
e21353 Pasan Sandeep e21353@eng.pdn.ac.lk

Resource Link
GitHub Repository Project Repository
GitHub Pages Site Project Page
Department of Computer Engineering Department Website
University of Peradeniya Faculty of Engineering

Academic Context

This project is developed as part of the undergraduate engineering project work at the Department of Computer Engineering, Faculty of Engineering, University of Peradeniya.

The objective of the project is to design and implement a practical off-grid IoT safety system that can improve climber tracking, emergency communication, and rescue coordination in remote mountain environments.


Future Improvements

Planned improvements include:


Mountain Climber IoT Safety Tracking System
Department of Computer Engineering
Faculty of Engineering, University of Peradeniya