A prototype that measures a tank's water-level percentage with an HC-SR04 sensor and Arduino Nano, showing it on an LCD and sending it via HC-05 Bluetooth to a phone app.

This project was developed as an academic prototype for measuring the water level percentage inside a tank using an HC-SR04 ultrasonic sensor and an Arduino Nano board, displaying the reading directly on a 16×2 LCD and sending it wirelessly through an HC-05 Bluetooth module to an Android phone app built with MIT App Inventor. A team of students carried out the project with the assistance of the Techno Enjaz office during the prototype development path.
The project reflects hands-on experience in integrating sensors, microcontrollers, and a mobile interface within a single system — from contactless measurement of the distance to the water surface, through processing the reading on the Arduino Nano, to displaying the level percentage on the screen and the phone. In the documented tests the system showed 0% for an empty tank, about 58% at a level close to the middle, and 100% when full.
| Item | Details |
|---|---|
| Project type | Academic prototype for a water-level measurement system |
| Field | Embedded systems and sensor-based monitoring |
| Project status | Prototype tested in three tank states |
| Techno Enjaz role | Technical support and assistance to the students during project development |
| Core technologies | Arduino Nano, HC-SR04, 16×2 LCD, HC-05 Bluetooth, Arduino IDE, MIT App Inventor |
| Outputs | Water-level percentage on the LCD and on the phone app via Bluetooth |
Many homes and facilities rely on manual estimates or simple tools to know how much water is in their tanks, and these methods do not give accurate or up-to-date readings. This can lead to a tank running dry unnoticed and water being cut off suddenly at home, or to disruption of production processes that depend on a steady water supply in industrial settings, as well as water waste due to a lack of clear visibility of consumption.
The project proposes a simple solution that measures the level without contact with the water and displays it at the tank and on a phone, so the user knows the water level without opening or manually checking the tank.
A team of students carried out the project in an academic context with the assistance of the Techno Enjaz office. The office's contribution consisted of supporting the prototype development path, while the detailed work of each party — such as circuit design, firmware writing, or building the mobile app — is not detailed in the available materials, so these tasks are not individually attributed to the office on this page.
pulseIn() function.The documented version of the project relies on Bluetooth to communicate with the phone, so wireless monitoring works within Bluetooth range; it is not internet-based or cloud-platform monitoring.
| Component | Role in the system | Documented specifications |
|---|---|---|
| Arduino Nano | Receives the sensor reading, processes it, and converts it to a percentage | 5V operation, 7–12V input, 16 MHz oscillator, 14 digital pins and 8 analog inputs |
| HC-SR04 | Measures the distance to the water surface using ultrasonic waves | 5V, 2–400 cm range, 15-degree effective measuring angle, about 15 mA while operating |
| 16×2 LCD | Displays the water-level percentage locally | 16 characters on two lines, HD44780 controller, 4-bit wiring (D4–D7) with a potentiometer for contrast |
| HC-05 Bluetooth | Sends the reading wirelessly to the phone | 3.3–5V, Bluetooth V2.0, UART serial link over TX/RX |
| MIT App Inventor app | Receives and displays the data on an Android phone | Visual block-based environment (Designer and Blocks Editor) |
The controller program was written in the Arduino IDE, and the power, ground, and signal pins of each element were wired according to the final circuit diagram.
Developing the prototype revealed several practical challenges directly related to integrating electronic and software systems:
The prototype was tested in three main tank states:
| Tank state | Displayed reading |
|---|---|
| Completely empty | 0% |
| Filled to roughly half its height | about 58% |
| Filled to the upper limit used in the test | 100% |
When tested with an empty tank, the system displayed a reading of 0%, confirming that the lower limit point of the prototype works.
When the tank was filled to a level described in the report as close to mid-height, the system displayed a reading of roughly 58%. This test shows that the system converts the measured distance into a relative reading between the empty and full points. This case alone is not used to calculate an accuracy percentage, because the reference level itself was described as approximate.
When the tank was filled up to the upper limit used in the test, the system displayed a reading of 100%, showing that the upper limit point of the prototype works.
The tests show that the prototype was able to carry out the basic measurement and display cycle across three different tank states, integrating the sensor, the controller, the screen, and the phone connection. The available materials do not include extended calibration testing or a documented error rate across the full measurement range, so the results here are presented as functional tests of the prototype rather than a standard certification of measurement accuracy.
According to the recommendations in the project, the prototype could be extended by:
These remain future developments and are not part of the current documented version.
For the bigger picture of how such a prototype grows into a connected system, read our article What Is the Internet of Things (IoT)? Architecture, Protocols, Applications, and Security.
If you are working on a sensor and electronics monitoring system and need technical help developing the idea or building a prototype, you can contact the Techno Enjaz office to discuss your project's requirements and the appropriate scope of support.
The HC-SR04 sensor mounted at the top of the tank sends ultrasonic waves toward the water surface and measures the echo return time; distance is time multiplied by the speed of sound (about 343 m/s) divided by 2. The Arduino Nano converts this distance into a water-level percentage based on the tank's minimum and maximum height limits, then shows it on an LCD and sends it to the phone.
The system consists of an Arduino Nano board for processing, an HC-SR04 sensor with a 2–400 cm range, a 16×2 LCD for local display, and an HC-05 Bluetooth module for data transfer. The phone app was built with MIT App Inventor, and the controller program was written in the Arduino IDE.
No. The documented version relies on Bluetooth via an HC-05 module to send the reading to a phone app built with MIT App Inventor, so monitoring works only within Bluetooth range. Replacing Bluetooth with a technology such as Wi-Fi or Zigbee is proposed as a future development, not part of the current version.
The prototype was tested in three cases: 0% displayed with an empty tank, a reading near 58% at a mid-level, and 100% when full. These are functional tests of the prototype; the materials do not include extended calibration testing or a documented error rate across the full measurement range.
Connecting the sensor, LCD, and Bluetooth module to the Arduino required repeated wiring and code changes. Temperature and humidity slightly affected the sensor reading, so correction equations were used, and temporary Bluetooth dropouts appeared with greater distance or interference. The student completed the project with assistance from the Techno Enjaz office.
Reach out to Techno Enjaz engineering team to discuss technical feasibility, prototype hardware, and development scope.