Adding fathometer/depth finder to Blue ROV

I plan to add a depth finder to my Blue ROV (v1 ROV with Pixhawk + Raspberry Pi) to determine the distance from the bottom. Initially I would like to display the distance in QGC. Eventually I would like to implement a distance-from-bottom hold capability. Since this is similar to the altitude hold feature in Ardupilot, I hope there is a straight-forward way to plug in my bottom finder and implement this capability.

My initial assumption is that that I will need to write a program on the Raspberry Pi to receive the distance to bottom info convert it into MAV messages. However, I suspect there may be an easier way. Suggestions?


These are both implemented already! It works just like a downward facing rangefinder in Ardupilot. Can you share some information about your depth finder like the make/model and communication interface?

That’s pretty spot on. You might be able to connect the depth finder directly to the Pixhawk. Which way will be easier depends on the communication interface of the depth finder.


Thanks Jacob.

My depth finder (Airmar, Smart Sensor/Transducer) produces NMEA 0183 sentences over a serial COM interface.

NMEA 0183 Sentences:

  • $SDDBT, DDPT (Depth)
  • $YXMTW (Water Temperature)

Do you know if the Pixhawk can accept NMEA 0183 sentences of this type?


It does not, but we could add support. Please note that those transducers are only pressure rated to something like 10ft of depth, and I haven’t been able to find any that are rated for any significant depth that don’t cost several thousand dollars. A 5Hz or higher update rate is also desirable.

I am happy to report that there is still hope! I’ve learned not to trust depth rating of most of the gear I use. I prefer to perform my own pressure testing. I have a half-dozen of these transducers, so I am not worried about damaging one during testing. I suspect the transducer will work fine, either out of the box, or surrounded in a vessel at ambient pressure.

What type of problems do you foresee with a 1 Hz ping rate rather than 5 Hz or better?


Bryan, I looked through the code again, and you could make do with a 1 Hz update, if we write a driver for the sensor to run on the Pixhawk. If we write one to run on the Pi, then you would be sending DISTANCE_SENSOR messages, and the APM code requires a minimum 2 Hz update for that approach, but that could be modified by changing one line of code in APM. The higher update of course just provides the obvious benefit of having more up to date information, so the ROV can react to changes more responsively.


Thanks Jacob. It probably makes sense for me to test the hardware at depth and write the interface code on the RPI for now. If the setup works, then you can decide whether it makes sense to add support for the depth finder on the Pixhawk. I do not plan to add the depth finder right away. I am current trying to decide what to use for a tether spooling system and quick-disconnect battery pack on my BlueROV v1.0.

We are currently working on a system that is taking information from a variety of sensors (uBlox GNSS, Airmar DST800, Atlas-Scientific environmental sensors) and publishing it all to a webserver running off a RPI3 and displayed in real-time through a web interface.

We are doing some tests this afternoon and tomorrow. Our plan is that it could be running off the onboard RPI, but also on a separate RPI if you don’t want to use / don’t have a BlueROV to run the system off.

I think it would be nice to have the option to show it directly in QGC interface, and I think there are several options on how we could do this with mavlink messages. Maybe @enriquegsancho could help out?

@coastwatchalliance, the Airmar sensors is meant for installing on a vessel hull, so depth rating would be only a few meters. I would be carefull about taking it too deep, even if you have a whole pile of them. One option would be to take the electronics out of the “box” and rebuilding it using a 2" enclosure. The only thing I´m not entirely sure about how to do is the membrane. Do you have any ideas?


I’ll do experiments to determine how the transducers hold up at depth without a special housing. I’m using the transom-mounted version of the transducer, rather than the through-hull version. I doubt the transducers have any air or other easily compressible materials inside them. I do not put much faith in the manufacturer’s spec for max depth in this case. Since a typical installation would be near the surface, I doubt they tested the transducer deeper and have no incentive to promise that the transducers work a greater depths. Again, a few simple experiments should reveal the depth limits.

If you decide to re-pot the piezo element(s), I would use a potting compound that is acoustically transparent (close to the density of seawater).

Good luck!


Thought I’d share a couple of pics of our setup:
Obviously the positioning of the second electronics tube will most likely not be below the ROV, as that is a pain for transportation. Or we might put a skid on.


@roy - wow! That thing is decked out. What all do you have on there?

Asi it lays on its back, on the right side we have a set of Atlas Scientific sensors (pH, ORP, conductivity and dissolved oxygen), inside a 2" tube, which is open on top and bottom.
The 4" tube on top holds the electronics for the sensors. For the AS circuits we are currently using an interface board which has large protruding connectors. We have designed a new interface board that will hold the AS circuits AND the interface for the sonar and a GPS. We’re designing this system so that it can be interfaced with the ROV, but also run independently. Once we have de definitive board we will change the 4" tube with a 3" or smaller, as the current creates too much floatation.
And on the left we have a Airmar DST800 smart depth sensor, encased in a 3" tube, cut to length.

1 Like

Roy, how did your Airmar depthfinder work out? I was looking at the Imagenex 852 Echo Sounder for the same purpose, but if the Airmar is working for you it may be a better option.

@coastwatchalliance Bryan, All Roy’s pictures apparently distracted me. How did your pressure test go? Which Airmar device are you using? Their EchoRange looks to be a capable product if it can withstand more than 10m.

Sorry, I have not had time to test it yet.

Hello Roy,

I too am curious about how the DST800 is working out for you. And progress with the other sensors as well… I want to add a similar suite to my ROV once it is operational.


You might consider putting the whole transducer in a housing filled with mineral oil, with an acrylic endcap. I have seen this done in boat hulls with a flush lexan plate in the hull, and the transducers in an oil or water filled well inside the hull. Worked fine, it’s common practice on some research and hydrographic vessels. Looks like the Imagenex 852 uses a fluid chamber for the transducer section and a pressure vessel for the electronics…

I have a DST800 through hull model, I may do this with it once I get to that point. Unless you guys report some success with the bare transducer at depth.


So far, the DST800 is working fine. We are mostly using it in relatively shallow water (I think it’s gone down to about 10m) due to the nature of the project that ROV is built for.

We have a new iteration of the EnviroSense PCB arriving next week or so. This upgrade solves a couple of design errors with the previous version. Once that’s here we will test the new PCBA with the sensors, and carry out a lab test of the assembly. When that is working, we should be ready to ship in limited quantities / beta versions.

Good to know it is working for you. Is your DST800 a 0183 model or N2K? How is it currently interfaced? Thanks!


Roy, how are things going with the EnviroSense PCB? I just ordered an Atlas Conductivity kit and already have a DT800. Atlas DO kit is on the wishlist…