Welcome to EnviroDIY, a community for do-it-yourself environmental science and monitoring. EnviroDIY is part of WikiWatershed, an initiative of Stroud Water Research Center designed to help people advance knowledge and stewardship of fresh water.
New to EnviroDIY? Start here

Ultrasonic water depth sensor

We have been using submersible pressure transducers for water level measurements for many years, but some of our installations are in areas with very shallow water that might freeze during the winter.  Most pressure transducers will be damaged if they are in water that freezes, so we’ve been experimenting with an ultrasonic rangefinder that will allow us to measure the water level from above. The ultrasonic sensor is Maxbotix MB7389.   Maxbotix makes a variety of different models, but this one is specifically made for outdoor water level measurements.  The sensor has TTL serial output so it is very easy to integrate it with one of our Arduino-based loggers.  It has a resolution of 1 millimeter, internal temperature compensation, and can measure anything between 30 centimeters and 5 meters.

For testing, I mounted one sensor in a plastic enclosure with a clear lid.  Inside the enclosure is a battery, Arduino Fio board, and a small LCD display to show the live data.  I can easily add an Xbee radio to the Fio if I also wanted to transmit the data.  With this testing device, I was able to try the sensor in a variety of locations and aiming at different targets, and I determined that the senor performed as expected.

Then I mounted another sensor inside the plastic end-cap that is used with 4-inch PVC perforated drain tile pipe.  The pipe can be found at hardware stores for around $10 for 10 feet. It has lots of holes in it to allow water in and out, and when the pipe mounted vertically in a stream, it acts as a stilling well to make the surface of the flowing water smoother.  It also keeps leaves, grass, and other debris from interrupting the path between the sensor and the water surface. I mounted the lid of a waterproof electrical conduit box to the top of the PVC cap by drilling a hole big enough for the sensor, which gets secured with a standard 3/4″ NPT nut.  Inside the box there’s a Seeduino Stalker datalogger board with Xbee radio and a LiPo battery. On the top of the box I mounted a weatherproof 6v solar panel, which is routed into the box through a cable gland to keep the battery charged.  So the entire assembly is weatherproof and can be simply slipped on and off the top of the stilling well pipe.

The solar panel keeps the battery charged, so the batteries will never need to be replaced.  The datalogger can store the data on a microSD card and/or transmit it via Xbee radio or 3G cellular module. I tested the sensor in different water conditions and compared it to manual measurements made with a metric ruler and automated measurements made with digital-output pressure transducers, and the measurements are very accurate.  I’ll share more details about the data in an upcoming post.

5 1 vote
Article Rating
Notify of
Newest Most Voted
Inline Feedbacks
View all comments
Robert Krippner
Robert Krippner
9 years ago

I am very interested to see the results of your tests with the ultrasonic sensor vs a pressure transducer.

When you post your results, can you please identify the range accuracy and output of the pressure transducers??


Stephen Ferguson
Stephen Ferguson
9 years ago

Do you have a good pressure transducer recommendation by chance?

Reply to  Shannon Hicks
6 years ago

Hi Shannon,

I’m wondering if you have an opinion about the minimum depth a CTD reliably works in. I need to measure depth in a small custom made flume and the water depth is rarely above 1 cm. I’ve used CTDs in bigger streams. Thanks.

Tom Sayles
9 years ago

Could you post a bigger image of the test/installed site? And perhaps some sample data? Also info on how the sensors are doing through the winter, would be helpful.

I think I want to build and deploy a couple to test for potential use in community driven local flood monitoring and forecasting in the lower Snoqualmie Valley (outside Seattle).

Reply to  Shannon Hicks
9 years ago

We’re going to try to build a water level sensor (ultrasound) using your design. But we’re going to need some help. For example, when I Google the Seeduino logger board kit, it says discontinued. And when I try Arduino FIO, I get a whole bunch of different products.

Any chance you could post a list of materials including where we purchase each and a product number? For the off-the-shelf stuff like the sealed plastic j-box, the size would be a great help.

Then a close -up picture of the box with all the components labeled.

Lastly some sort of block diagram showing the connections between components?

If these are already posted somewhere within the website, just point me in the right direction.



Tom Sayles
Reply to  sollins
9 years ago

Looks like Seeed has revised their Seeeduino Stalker design since the v2 shown in build.


Sam Atkins
Reply to  Shannon Hicks
9 years ago

I am curious as to why you will be staying away from the v3.0 Stalker boards. What disadvantages do you see compared to previous versions?

Tom Sayles
Reply to  Shannon Hicks
9 years ago

Thanks for the update. Please keep us posted on what you are setups you’re experimenting with. Based on your earlier posts I think I am going to also start development on similar setup.

Since I’m a amature radio oprator [KE4HET] and looking to potentially do an open public deployment in the Lower Snoqualmie, think I am going to focus on different RF interfaces (xBee [on 2.4GHz & 900MHz], WiFi, WiMax, Bluetooth, 400MHz ISM, APRS, GSM, etc.). I think I will also look to integrate a GPS module (like https://www.adafruit.com/products/746) to provide accurate time and location references for publicly posted data. My ultimate goal would be to crowd source real time flood data for our valley in much the same way that backyard weather stations are being used to crowd source hyper local real time weather data. (http://www.wunderground.com/personal-weather-station/dashboard?ID=KWAFALLC9#history)

This should work out great if you continue to post your development on the sensor side.

Again any photos and part lists you can post would be helpful, even if those aren’t your finial “recommended” solutions.

Tom Sayles
Reply to  Tom Sayles
9 years ago

Okay, I ordered a MB7040 I2CXL-MaxSonar-WR sensor [I like the i2c interface and don’t need mm resolution] and wrote up a bit of a concept paper for what I’m hoping to do.


Reply to  Shannon Hicks
9 years ago

Hi All,

Really cool stuff that is going on here with the DIY Utrasonic Water Depth sensor. I see how being able to construct something like this on a tight budget is extremely important for increasing stream gauging data.

OnSet makes the HOBO U20L pressure transducer/datalogger combo

(here: http://www.onsetcomp.com/products/data-loggers/U20L-04)

for about $300 (another $200 for the software and PC connection hardware). Besides the fact that the utrasonic water depth sensor can be mounted above the water surface for collecting stage data, are there any other advantages that it has over something like the U20L, such as cost or accuracy?



Scott Murrison
8 years ago

I am interested in constructing several of these depth sensors and deploying them in runoff detention ponds at cattle feeding facilities. I was wondering if you had a recommendation for a different board that has the same capabilities as the Seeeduino Stalker v2.3?

Thanks is advance,


charles haden
8 years ago

Nice Work.
I am thinking of doing something similar but for garbage monitoring. I have some banner ultrasonic sensors (T30UXUCQ-78542). Have you any experience on connecting these type of sensors? Also, are you able to share the code on the arduino

Thanks in advance


Tom Sayles
8 years ago

Been working on my prototype using an Particle.io Photon and a  and have been posting about it over in the Particle.io community forums.



Ethan Canup
8 years ago

I’m a high school intern and my company wants me to create one of these. Could you post some schematics so I can see how you did this.

Anselm Köhler
Reply to  Shannon Hicks
8 years ago

I have ordered an Seeduino v2.3, Maxbotix 7389 and a gprsBee rev. 6. Then I found this page ,-)
Nice to see, that these three parts are already in use together …

Steve, could you please provide some more information about your setup and software?
Thanks, Anselm

PS: The stalker v2.3 was still available somewhere in china with the solar cell, battery and waterproof housing…

Reply to  Shannon Hicks
7 years ago

I’ve been lurking here for sometime, but have just had to sign up! I’m based in the UK and am looking into creating a similar water depth sensor here – I can’t buy the Mayfly as Amazon.com won’t ship it to the UK and its not available on .co.uk unfortuntely 🙁

I just wanted to know though, are you working on the writeup for the Mayfly board?

Oliver Koit
7 years ago


Since the Seeeduino is discontinued and the Mayfly is not available in Estonia, do you happen have any recommendations on a replacement that is available in Europe. What was the approximate running time of your setup? How long would your battery setup last in northern temperate zone with winter temperatures down to -20 C. If you would dump the communications? Would using the Arduino mini pro make a difference? Do you have any experience?

5 years ago

Hi Shannon,

If you still have it, could you please share the code that you used for this project?? I have a spare Seeeduino Stalker laying around and it would be great to put it to use, but I am not the most talented with coding. Thanks

diy gage
5 years ago

I would have thought that the beam width of the sensor is too wide to put in a pipe. How long is the pipe you are using and did you have problems with longer lengths? Nice work and thanks for posting this.

Click to jump to comments section.x