An Arduino based device to map the depths of water bodies. Using cheap and simple hardware like a GPS module, an SD card, and a standard NMEA-capable echo sounder. The data is then transformed into a depth map with depth contours and interpolation using python and matplotlib.
Hackaday article: https://hackaday.com/2021/09/06/homebrew-sounder-maps-the-depths-in-depth/
GitHub: https://github.com/Neumi/3D_water_depth_logger
The lake or river section is zick-zack scanned by a boat. The GPS and depth data is recorded by the Arduino on an SD card. After the scan, the data is processed in a Python script and converted into an interpolated map. Tidal data can also be fed into the algorithm to compensate for tidal changes over the measurement period. An overlay can also be created using the Open Street Map API.
The setup:
The mapping boat is just a small rubber boat equipped with the echolot/Arduino/GPS device connected to a wooden/PVC pipe contraption. The scanning took approx. 1h for a 40000sqm harbor area. Another scan was done in a river section with higher currents. As the sensor flexes, at higher speeds, it is advisable to drive slowly.
The Arduino, SD card, GPS module and battery are stored in a waterproof container. The GPS antenna and echo sounder are mounted on a piece of wood and the piezo transducer inside a PVC tube under water. The NMEA output from the Standard Horizon echo sounder had a flipped signal (I don't know if this is normal). I had to flip the signal using a transistor. (Not sure if this can be done in code though).
More scans: