56

Tag & Trace

A system that tracks passengers and crew on a ship to ensure safety and security using Bluetooth Low Energy (BLE) technology.

Passenger & Crew Tracking System for Ships

Introduction

As part of the ISOLA project, I was tasked with developing a system to track passengers and crew on a ship. The goal was to enhance safety and security by monitoring movement in real-time and alerting the crew if someone entered a restricted area.

Research

Before starting development, I explored various tracking methods suitable for use on a ship. The system needed to meet the following requirements:

  • Provide real-time tracking of passengers and crew.
  • Be developed using TypeScript.
  • Utilize Bluetooth Low Energy (BLE) technology.
  • Run on Raspberry Pi devices.

With these constraints in mind, I chose the Noble library to facilitate communication with BLE devices on Raspberry Pi. I then evaluated different approaches for determining passenger and crew locations.

Method 1: Triangulation

Triangulation

Triangulation estimates a person’s location by measuring signal strength from multiple BLE beacons. By analyzing the differences in signal intensity, the system can approximate the position of a BLE device within the ship.

Method 2: Angle of Departure (AoD)

Angle of Departure

The Angle of Departure (AoD) method is often referred to as “Indoor GPS” because it functions similarly to traditional satellite-based positioning. In this approach, fixed BLE locators with multiple antennas transmit signals, which are received by a device with a single antenna. By analyzing the signal's angle, the system can determine the direction of the device.

Method 3: Proximity Detection

Detection

The simplest method involves assuming that a person is closest to the BLE device with the strongest signal. This approach does not require complex calculations but relies on the assumption that BLE signals weaken with distance.

Findings

Through testing, I found that triangulation worked well in open spaces such as office environments. However, when deployed on a real ship, the accuracy dropped significantly. While the system could reliably determine a person’s presence within a large room, it struggled to detect when someone crossed into a restricted area.

Disappointed with these results, I decided to test the proximity detection method. Surprisingly, it performed exceptionally well. The thick metal walls of the ship blocked BLE signals effectively, meaning that when a person moved to a different room, their wristband’s signal was lost by one Raspberry Pi and picked up by another. This allowed the system to detect movement between rooms with 100% accuracy.

Implementation

The system was developed in TypeScript and deployed on Raspberry Pi devices using the Noble library for BLE communication. The Raspberry Pis were configured and managed via a custom CLI tool written in Bash. This tool automated setup tasks such as configuring network connections and defining BLE addresses to monitor, reducing setup time to just a few minutes.

Each Raspberry Pi acted as a simple BLE detector, collecting signal data and sending it to a FROST-Server (an implementation of the OGC SensorThings API) for further processing. The processed data was then displayed in a web interface, allowing crew members to monitor passenger and crew movements in real time.

Data flow

Conclusion

Through research and real-world testing, I discovered that while advanced tracking methods like triangulation and AoD are promising, the simplicity of proximity detection made it the most effective solution for ship environments. By leveraging BLE signal strength and the ship’s structural properties, the system achieved accurate room-level tracking, ensuring both safety and security on board.