How's Your Water Level? Build a Wireless Depth Detector

Here's how to build a wireless water depth detector based off of an Arduino Nano. This project is perfect for anyone looking for a DIY method of monitoring water levels in aquariums, pools, decorative ponds and more with up to 0.05-inch accuracy.

Based on dual BMP280 pressure sensors and a KY-013, water, temperature sensor this project is intended for monitoring evaporative and decorative ponds, creeks or wells. The functionality could also find use in aquariums, hot tubs, or pools. The dual sensor implementation provides accuracy resolution down to ~0.05 inches of water with 0.8% variation per measurement.


Referring to the schematic, the Ardurino based controller is also fitted to an HC12 serial link to provide remoted monitoring


Generic Name


Quantity DigiKey Part Number

Arduino Nano



10K resistor


4.7K resistor


510 resistor


5.1K resistor


22uf 25V Pw CAP

  1 565-4782-ND

1N4001 Diode


HC12 Serial Transceiver


BMP280 Pa Sensor



0.1" Row Connectors



0.1" Header pins

  18 277-1753-ND

Screw Terminal pins

4 position


5mm Barrel Power Conn 

Specific, dependent on mating male plug 1

1N4148 Diode

  2 1N4148FS-ND
White LED   2

Button Switch




KY-013Temp Sensor

req code change(non Stock substitute) 1





The coded processes monitor both the barometric and sensor pressures, allows for a base level configuration, high and low set points, and facilitates an LED display with trips points and a a related alarm with override.

Both the barometer re-test and wireless report can be independently scheduled in durations of 1 to 655535 seconds.

Using the BMP280 sensors together allows for water level measurement accurate down to fractions of an inch and has the happy bonus of cost less than $2. The second sensor (S1) adjusts for atmospheric barometric pressure variation.

Using the "SparkFunBME280.h" library functions and services produces readings for temperature, absolute pressure, and an altitude reading from the pressure and temperature measurements done on the sensors. Altitude is not used in this application.

The HC12 is a hundred-channel, 433-MHz based, serial transceiver link and is configured to produce the maximum of 20dBm transmit power. It's configurable for a number of scenarios and provides up to 1000m for a reasonable $4-5. This wireless link is shared with the Arduino Nano’s serial USB.

A series of operational parameters, shown below, may be then configured and updated, as required, over either of these links. Any non numeric entry evokes the 4 parameter, System parameters list shown.

The report, shown below, is then available as parameter 2 , on other the connected USB port or on a remote receiver terminal configured with same channel and rate settings.

Bluetooth may also be configured onto the project, although with the controller at about 70% and memory is 46% used, additional coding for a WIFI link and interface could get the data to a Thingspeak or other Internet accessible resource. The schematic reserved pins 8 and 9 pins for an 8266 based WiFI. The code, while available, is not included in the app.

The Operational parameter list, taken from the System list, parameter 3, provides a series of variables that are maintained in EEPROM and

Comments (12)

Please log in or register to post comments.
By submitting this form, you accept the Mollom privacy policy.
  • Oldest First
  • Newest First
Loading Comments...