Amphibious Vehicle Water Sensor

Hello All,
I am in the early stages of planning an amphibious vehicle build and am having a bit of trouble figuring out the transition between land and water. My though is maybe I could use a sensor like the one in this bilge pump to tell the Ardupilot whether or not the hull is in the water but I’m not sure how that would interface with the Pixhawk/Ardupilot. Bastically I just need something to tell the ardupilot which set of motors to spin.
Any thoughts/suggestions would be greatly appreciated!

I have already built something similar to what you will need it to do, i think this combined with some lua to select your propulsion motors will work.


That looks like a very good option. I assume that picture is of the bottom of the boat? Did you just install the board with the two pins sticking out of the hull and leave off the “raindrop mat”? I assume that would reduce the sensitivity such that the board would only activate when the pins are actually submerged in water vs with the rain mat where there could be drops of water on the mat after the boat is out of the water?
Thank you!

yes im using stainless steel probes rather than the pcb board, im using them to measure water salinity but it works as an “AM I IN THE WATER” switch.

1 Like

Perfect, this is exactly what I need. Thank you!

this might be a better option for you than the pcb sensor, you can use the potentiometer to set the sensitivity of the digital output, thats how i have mine configured, the analog goes to the esp32 for logging and the digital output goes to the pixhawk as a button input on one of the AUX pins.

1 Like

I pretty new to all this do I just want to make sure, This is pretty much the exact same as the sensor you used, but with prongs (which will be better for sticking in the water) instead of the rain sensor PCB? Thank you so much for taking the time to answer my questions!

Exactly, you can cut the probes right down you would only need 5mm in water.

1 Like

Detecting water sounds like the easy part based on what @geofrancis has noted. I’m curious about the powertrain configuration you plan to use. Tracks, wheels, a prop, etc.

Check out @count74 project!

Note: Arducopter has a Stand-by function to be used with multiple Flight Controllers but I have only seen one use case for this and there is little documentation. Plus, it’s not in Rover…

1 Like

If you had skid steering on the boat and rover,

set it up as a boat, but do 2 tunes one for running the motors and one for running the propellers,

then use a lua script to change the settings based on if its in the water or not.

so on land have the lua change the servo1 and servo2 min and max PWM values that are configured for left and right propeller motors to 1500us same as zero throttle essentially disabling them and have it change the PIDs for land use.

Then when it goes into the water it will change the PIDs for water use and change the PWM values for the propellers to re-enable them.

The main problem I can see is detecting not when the vehicle is in the water but when it is floating, since if you just turn the motors off as soon as it hits the water it’s just going to stop. The simplest ways around that would be a manual switch or a delay timer, so tracks run for so many seconds after entering the water. then change the values of servo3 and 4 that the wheels are connected to to disable them.

The other issue is im not 100% sure you can change these things while its armed or at least without modifications.

Determining whether it is afloat could be done with a depth sensor.

1 Like

Yes that would be a much better idea, turn the wheels off if water is more than a set depth.