Speed through water (STW) sensor. Boat speed measurement

I started a project to create a device for measuring velocity relative to water. Earlier I saw that Ardupilot supports this type of sensors. At the moment I have made a body and will soon be testing on water (in the river). If there are those who wish, then join us! The project is posted on Github. I will probably show the tests in the future on my YT.

The principle was taken as a basis, as with the DST800 Smart, this is the impeller and pulse counting.


I made a simple 3d model. It’s not as beautiful as the original :smile: A temperature sensor will also be added.

Earlier I experimented with MS5837, these sensors are also supported in ArduPilot(Sub). There was even a topic to add support to Rover.
On the basis of these sensors and the Pitot tube, I made such a sensor. Its accuracy was acceptable . But since the pitot tube was for models, it was small. There were constant tube blockages. Because of this, the pressure was incorrect, and so were all the calculations. I refused it.
But it would be great to add support to the Rover.

1 Like

I think this type of sensor could be used with the ardupilot wheel encoder input to keep track of position.

1 Like

The shape and dimensions of the sensor are taken from the characteristics of my model .

Perhaps so. But I will output the data in NMEA format. I like it better this way it will be easier to work with electronic charts, in MP they are terrible (you can say they are not for the boat).

Ideally what is needed is more nmea messages out of mission planner other than just GPS.

Yes, ideally, it would be great to output all NMEA data (log, gps, sonar, ais) to one port.

it looks like a few messages have been added since the last time i looked at it, I dont think it would be that difficult to add more.


Yes indeed, integrating the sensor’s output into the EKF as a wheel encoder or maybe an Airspeed sensor could be very useful for non-GPS navigation.

it’s not difficult if you know C++ :grinning:. We’ve talked about this before, and maybe @rmackay9 and @iampete will help in the future. I will make a request on Github.

Hi, thanks for raising the issue. I think the code needs to go into the flight code though not mission planner. So I think that issue should instead be raised over here.

1 Like

On your recommendation, I moved it to another section.

Updated 3D model


I tested the device, everything works fine. It remains to select the coefficient so that the correct speed value is selected. The data is output in NMEA format.

1 Like

Hi. Good news. Tested it on the latest version(rover 4.4). Everything is displayed perfectly. I think in the future it will be possible to add a speed sensor to the reference information.

1 Like

I think it could interface with i2c so it doesnt use up a serial port. it would just need to emulate an airspeed sensor.

yes, it’s better, but I haven’t seen the settings in MP for such an option.

1 Like

A short video about the sensor in my YT channel

1 Like

your water speed sensor is used like an airspeed sensor. It’s the same way I’m getting the pitot tube working on the tug. Unfortunately, I haven’t found an easy way to emulate it yet with an Arduino on i2c.

I finished the design of the project on Github. In principle, it can be considered a completed project

1 Like

Have you tested it in the water yet?