DIY 3D water depth mapping with Arduino
Knowing the exact depths that water reaches within a harbor can be vital to navigating around certain hidden obstacles that might cause a boat to become stuck. But rather than using an expensive drone or even satellite to take these measurements, Jan Neumann was able to create a DIY version that is a fraction of the cost.
The system is comprised of an Arduino Uno at its core with a small GPS module for gathering positional data and a NMEA-capable echo sounder. As Neumann’s boat moved around the harbor, the Uno would take a reading of the water’s depth and the boat’s current position every second and log it to an SD card within a CSV file. And because the water’s natural level rises and falls over the course of a few hours due to tidal forces, Neumann used a Wasser&Schiffahrsamt water level sensing module that also takes a reading every second.
With all the data now in a large series of tables, it was passed to a Python script that filled in any missing datapoints and adjusted the water level based on the calibrated value. Finally, a second Python script placed each datapoint into a graph and interpolated between the points to create a smooth map. As seen in the subsequent image, the whole setup was quite effective at showing where the water was shallower or deeper.
You can read more about this project and see its code here on GitHub.