Skip to content

Mubadala-ACCESS/AquaPing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

19 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

AquaPing - Underwater Altimeter Telemetry & Visualization

Python Version License Status

AquaPing is a modular, field-deployable underwater altimeter telemetry system that transmits real-time depth measurements using a Ping1D sonar and Delphis acoustic modem to a surface receiver (e.g., a boat). Designed for marine research, seabed profiling, and underwater robotics, AquaPing combines robust hardware and Python-based control software for both ends of the communication link.

AquaPing is a complete underwater telemetry and visualization platform featuring:

  • πŸ”½ Real-time depth acquisition using a Ping1D sonar
  • 🌊 Underwater acoustic transmission to surface using Delphis modem
  • πŸ“ˆ Live PC interface (PyQt5 GUI) to visualize and record altimeter data with ascent/descent speed estimation & GPS tagging

✨ Key Features

🎯 Depth Accuracy πŸ“‘ Acoustic Link πŸ” Retry Handling πŸ–ΌοΈ Real-time Plot ⏱️ Speed Tracking
Ping1D sonar for precise altimetry Delphis modem for data uplink LED-coded error retry & auto reconnect PyQt5 live plot with zoom Instantaneous & average speed (m/min)

πŸ”§ Project Structure

πŸ§ͺ Repository Structure

AquaPing/
β”œβ”€β”€ transmitter/              # Raspberry Pi underwater unit
β”‚   └── echo_altimeter.py     # Main altimeter control script
β”‚
β”œβ”€β”€ receiver/                 # Boat-side PC GUI application
β”‚   β”œβ”€β”€ receive_data_v1/v2.py # Data reception and processing
β”‚   └── requirements.txt      # GUI dependencies
β”‚
β”œβ”€β”€ 3d_models/                # Printable hardware components
β”‚   └── battery_housing.stl   # Electronics enclosure
β”‚
β”œβ”€β”€ docs/                     # Documentation resources
β”‚   β”œβ”€β”€ wiring_diagram.png    # Full connection schematic
β”‚   β”œβ”€β”€ system_diagram.png    # Architecture overview
β”‚   β”œβ”€β”€ photos/               # Hardware images
β”‚   β”‚   β”œβ”€β”€ unit_assembled.jpg
β”‚   β”‚   β”œβ”€β”€ internals.jpg
β”‚   β”‚   └── deployment.jpg
β”‚   β”œβ”€β”€ datasheets/           # Technical specifications
β”‚   β”‚   β”œβ”€β”€ ping1d.pdf
β”‚   β”‚   └── delphis.pdf
β”‚   └── ui_screenshot.png     # GUI preview
β”‚
β”œβ”€β”€ LICENSE              # Copyleft License
└── README.md                 # This documentation

System Diagram


🧰 Hardware Components

Component Description
🎯 Ping1D Altimeter sonar sensor from Blue Robotics
🧠 Raspberry Pi Pi Zero / 3 / 4 for control & processing
πŸ”Š Delphis Modem Underwater acoustic modem for data transmission
πŸ”‹ Power Supply 8.4V Battery(2S) with 5V Regulator
πŸ’‘ LED Indicator GPIO-controlled LED for transmission feedback
πŸ–¨οΈ 3D-Printed Parts Enclosure, brackets, mounts

⚑ Wiring Diagram

πŸ“Œ Full-size diagram in docs/wiring_diagram.png

Device Pi Connection
Ping1D TX β†’ GPIO 15 (UART RX)
Ping1D RX β†’ GPIO 14 (UART TX)
Status LED β†’ GPIO 12
Delphis Modem USB Serial
Power Supply 8.4V β†’ Regulated 5V

Wiring Diagram


πŸ“Έ Equipment Photos

Altimeter Modem Assembled Unit

More in docs/photos


✨ Key Features

Feature Description
🎯 Depth Accuracy ±1cm up to 100m range
πŸ“Ά Transmission 0-300m depth
πŸ”‹ Power 5V DC, ~1W average consumption
πŸ› οΈ Enclosure Acrylic enclosure waterproof housing
πŸ“Š Data Output CSV, JSON, and terminal display

⚑ Wiring Guide

Ping1D (UART) ↔ Raspberry Pi:
    TX -> GPIO 15 (RX)
    RX -> GPIO 14 (TX)
    GND -> GND

Delphis Modem ↔ Raspberry Pi:
    USB-A ↔ USB Micro-B

Status LED:
    + -> GPIO 12
    - -> GND

πŸ“Έ Hardware Photos

Assembled Unit Altimeter Modem

πŸ› οΈ Software Installation

Transmitter (Underwater Unit)

# Install dependencies
sudo apt update
sudo apt install python3-pip python3-serial
pip3 install brping pyserial

# Enable UART
sudo raspi-config nonint do_serial 0
sudo reboot

# Start Program
python3 echo_altimeter.py

πŸ” Auto-start on Boot

Save the following to /etc/systemd/system/aquaping.service:

Description=AquaPing Altimeter Service
After=network.target

[Service]
ExecStart=/usr/bin/python3 /home/pi/AquaPing/transmitter/echo_altimeter.py
Restart=always
RestartSec=20
User=pi
WorkingDirectory=/home/pi/AquaPing/transmitter

[Install]
WantedBy=multi-user.target
Then run:
sudo systemctl daemon-reload
sudo systemctl enable aquaping.service
sudo systemctl start aquaping.service

Receiver (Surface Unit) Connect Delphis modem via USB and run:

# Install dependencies
pip3 install pyserial matplotlib  # For basic plotting
pip install pyserial pyqt5 matplotlib numpy

# Start Program
python3 receive_data_V1/V2.py

Expected output:

Received: $U001082,92
Depth: 0.82 m | Confidence: 92%

πŸ“Œ Quick Start

# Transmitter (RPi underwater unit)
cd sonar && python3 echo_altimeter.py

# Receiver (Boat computer)
python3 receive_data_v1.py/receive_data_v2.py

## πŸš€ Deployment Guide
1. Assemble hardware in waterproof enclosure
2. Power up transmitter unit
3. Deploy in water (ensure antennas are vertical)
4. Start receiver software on boat computer
5. Monitor depth readings in real-time

⚠️ Troubleshooting

Issue Solution
No depth readings Check UART connections
Failed transmissions Verify modem dip switches
High noise Increase distance from propellers

πŸ“š Documentation

πŸ“œ License

Copyleft License - See LICENSE for details.

πŸ‘¨β€πŸ’» Maintainer

Muhammed Nabeel
Research Engineer
Mubadala Arabian Center for Climate and Environmental ScienceS (ACCESS)
πŸ“ NYU Abu Dhabi πŸ“§ mnm9857@nyu.edu

Open Source Love Marine Research

About

Underwater altimeter telemetry using Ping1D and Delphis acoustic modem

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages