An ongoing open-source project about building a sonar for bathymetry and research.
The TUSS4470 Arduino PCB can be used to test different frequencies and transducer types. The Python script lets you see the echoes in a waterfall chart.
Want to stay updated or participate? Join my Discord!
- partially reverse-engineered "LUCKY Fish Finder"
- get raw data from echo receiver/amplifier to FastLOGIC/Arduino
- plot data in a waterfall chart using Matplotlib + Python
- DIY transducer built and tested (works)
- TUSS4470 board built and tested (works)
- TUSS4470 Arduino code example done
- TUSS4470 hardware changed to support transformers to drive higher voltage piezos (like 200kHz for underwater)
- underwater tests successful! (only tested up to 3m range)
The LUCKY fishfinder with a DIY transducer (or stock) RAW amplifier (echo) data can be read using an Arduino, and data can be displayed using Matplotlib + Python.
The new (January 2025) TUSS4470 board is now able to use transducers (40kHz and 200kHz tested), drive them, receive echos, filter the signal and send the RAW echo data to the (same) Python backend. For good results, use a high input voltage like 25V DC on the XT30 connector.
The LUCKY fishfinder hack is pretty much obsolte and replaced by the TUSS4470 board. If you want to play with custom sonar, use this!
This PCB-board is an Arduino (Uno) compatible board to test the Texas Instruments TUSS4470 Ultrasonic driver IC. The provided example Arduino UNO code lets you drive a 40kHz transducer, apply noise filtering, and send the echo via Serial to the Python backend. You can change the code to your needs (i.e. to use other frequencies, sample sizes, speed etc.). The Arduino UNO clock speed and RAM size limit the sampling speed to a resolution of ca. 1-2cm in air and 4cm (ca. 13uS/sample) under water and to ca. 850 Samples. An Arduino MEGA should solve this issue partially.
The TUSS4470 works as follows: After initial setup, a burst of 8 pulses in drive frequency is sent to the TUSS4470 by the Arduino on PIN9. The TUSS4470 sends this pulse to the transducer then waits. The Transducer sends this pulse out as a short pulse of sound. Echos reflected by obstacles bounce back to the transducer and excite a voltage in it. The TUSS4470 measures that voltage, filters it, amplifies it and sends it to the A0 pin of the Arduino. By reading this amplified voltage, an (or multiple) obstacles can be detected. The Python script plots this data in a waterfall diagram.
DIY transducer assembly with 1:6 transformer and 228kHz transducer for water:
Echogram of a test with DIY transducer assembly in the baltic sea, Kiel:
Echogram in saltwater vertical and second half horizontal pointing to an underwater ladder(8x speed):
https://www.rapp-instruments.de/RemoteSensing/Roves/sidescan/sidescan.htm
https://www.youtube.com/watch?v=ZtUkt8Q4EJE
Transducers:
https://de.aliexpress.com/item/1005006007865920.html
https://de.aliexpress.com/item/1005007032482539.html
https://de.aliexpress.com/item/1005006299774405.html
https://de.aliexpress.com/item/4000389134890.html
https://de.aliexpress.com/item/1005006546490802.html
Transformers to step up transducer voltage:
https://de.aliexpress.com/item/1005003733606845.html
Matching capacitors:
https://de.aliexpress.com/item/1005007159862392.html
Lucky Fishfinder: