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
| π― 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) |
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
| 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 |
π 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 |
| Altimeter | Modem | Assembled Unit |
|---|---|---|
![]() |
![]() |
![]() |
More in docs/photos
| 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 |
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# 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.pySave 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.targetThen run:
sudo systemctl daemon-reload
sudo systemctl enable aquaping.service
sudo systemctl start aquaping.service# 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%
# 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
| Issue | Solution |
|---|---|
| No depth readings | Check UART connections |
| Failed transmissions | Verify modem dip switches |
| High noise | Increase distance from propellers |
Copyleft License - See LICENSE for details.
Muhammed Nabeel
Research Engineer
Mubadala Arabian Center for Climate and Environmental ScienceS (ACCESS)
π NYU Abu Dhabi
π§ mnm9857@nyu.edu




