Close Menu
  • Articles
    • Learn Electronics
    • Product Review
    • Tech Articles
  • Electronics Circuits
    • 555 Timer Projects
    • Op-Amp Circuits
    • Power Electronics
  • Microcontrollers
    • Arduino Projects
    • STM32 Projects
    • AMB82-Mini IoT AI Camera
    • BLE Projects
  • IoT Projects
    • ESP8266 Projects
    • ESP32 Projects
    • ESP32 MicroPython
    • ESP32-CAM Projects
    • LoRa/LoRaWAN Projects
  • Raspberry Pi
    • Raspberry Pi Projects
    • Raspberry Pi Pico Projects
    • Raspberry Pi Pico W Projects
  • Electronics Calculator
Facebook X (Twitter) Instagram
  • About Us
  • Disclaimer
  • Privacy Policy
  • Contact Us
  • Advertise With Us
Facebook X (Twitter) Instagram Pinterest YouTube LinkedIn
How To Electronics
  • Articles
    • Learn Electronics
    • Product Review
    • Tech Articles
  • Electronics Circuits
    • 555 Timer Projects
    • Op-Amp Circuits
    • Power Electronics
  • Microcontrollers
    • Arduino Projects
    • STM32 Projects
    • AMB82-Mini IoT AI Camera
    • BLE Projects
  • IoT Projects
    • ESP8266 Projects
    • ESP32 Projects
    • ESP32 MicroPython
    • ESP32-CAM Projects
    • LoRa/LoRaWAN Projects
  • Raspberry Pi
    • Raspberry Pi Projects
    • Raspberry Pi Pico Projects
    • Raspberry Pi Pico W Projects
  • Electronics Calculator
How To Electronics
Home » GSM Based Water Level Monitoring System with Arduino
Arduino Projects

GSM Based Water Level Monitoring System with Arduino

Mamtaz AlamBy Mamtaz AlamUpdated:June 28, 20251 Comment6 Mins Read
Share Facebook Twitter LinkedIn Telegram Reddit WhatsApp
GSM Based Water Level Monitoring System with Arduino
Share
Facebook Twitter LinkedIn Pinterest Email Reddit Telegram WhatsApp

Overview

In this project, we will build Water Level Monitoring System Project using Arduino & GSM Network. In one of our previous projects, we build Inductive Water Level Indicator using some ICs and transistor and we also build IoT Water Level Indicator. But this is a different project that uses Arduino as a processing unit. Earlier we built Water level alert using 555 Timer IC.

The water level is one of the most commonly measured parameters, as accurate level data are essential for many applications. While climate change, pollution monitoring, and industrial water usage are broad reasons for monitoring water levels, more specific applications are discussed throughout this page. The level is perceived as one of the most straightforward water parameters. In general, it is the level of water in a body of water, in groundwater, in a tank, etc.

This project utilizes a flow switch to determine whether the tank is full or not. It utilizes a SIM800L GSM Module to send an SMS. When the device is turned on and the motor is started, the GSM module will send an SMS to the preferred mobile number. When the tank is full, it again sends the SMS again indicating the tank is full. At this moment the motor will stop automatically. Apart from the SMS part, the ON/OFF Status of the Motor and water level are also displayed on a 16×2 LCD Display.


Bill of Materials

The Arduino Water Level Monitoring Project requires the following components. You can purchase all these components from Amazon.

S.N.ComponentsQuantityPurchase Links
1Arduino Nano Board1Amazon | AliExpress
2GSM Module SIM800L1Amazon | AliExpress
316x2 LCD Module1Amazon | AliExpress
4Resistor 560-ohm2Amazon | AliExpress
5Potentiometer 10K1Amazon | AliExpress
6Buzzer 5V1Amazon | AliExpress
7LED 5mm Green Color1Amazon | AliExpress
8LED 5mm Red Color1Amazon | AliExpress
9LM2596 Buck Converter1Amazon | AliExpress
105V Single Channel Relay Module1Amazon | AliExpress
11Liquid Level Float Switch1Amazon | AliExpress



Circuit Diagram & Setup

Here is the circuit for GSM Based Water Level Monitoring System with Arduino. All the active-passive components are connected to the digital pins of Arduino.

Water Level Monitoring System Arduino

The power supply is the most important part of this project. We are using the LM2596 DC-to-DC Buck Converter Module to power the Arduino SIM800L GSM Module. The LM2596 input voltage is between 3V-40 but its output voltage should be adjusted between 3.4V to 4.4V using a potentiometer on it. Similarly the TX & RX pin of SIM800L is connected to Arduino D2 & D3 pin.

There are two LEDs, green and red which are connected to the D4 & D6 pin of the Arduino board via a 560-ohm resistor. The green LED indicates motor ON status as the tank is not full. Similarly, the red LED indicates OFF status as the tank is full. The buzzer is connected to the D5 pin of the Arduino Board as it turns ON when the tank is full.

The float sensor is a device used to detect the level of liquid within a tank. The magnet inside the bulb structure is an electromagnetic ON/OFF switch that helps to sense the level of water present in the overhead tank or sump. You can use any type of float sensor switch such as a reed float switch or anything else. In this project, the positive terminal of the float switch is connected to A0 of the Arduino which is the digital pin 14.

Similarly the relay is connected to Analog pin A1 which is the digital pin 15 of Arduino. You can connect the water pump to the Relay. The water pump will turn ON based on the float sensor’s ON/OFF status. The 16X2 LCD Display is powered via a 5V of Arduino Board. The LCD 4,6,11,12,13,14 pin is connected to Arduino 12, 11, 10, 9, 8, 7 digital pin.

You can assemble the circuit on a breadboard or Vero board or use your own custom PCB for commercial applications.


Project PCB Gerber File & PCB Ordering Online

If you don’t want to assemble the circuit on a breadboard and you want PCB for the project, then here is the PCB for you. I used EasyEDA to design the Schematic & PCB. The Schematic & PCB Board for Arduino Water Level Monitoring System looks something like the one below.

The Gerber File for the PCB is given below. You can simply download the Gerber File and order the PCB from ALLPCB at 1$ only.

Download Gerber File: Arduino Water Level Monitoring PCB

You can use this Gerber file to order high quality PCB for this project. To do that visit the ALLPCB official website by clicking here: https://www.allpcb.com/.

You can now upload the Gerber File by choosing the Quote Now option. From these options, you can choose the Material Type, Dimensions, Quantity, Thickness, Solder Mask Color and other required parameters.

After filling all details, select your country and shipping method. Finally you can place the order.

You can assemble the components on the PCB Board.


Source Code/Program

The source code for Water Level Monitoring System is written in Arduino IDE. Copy the code below and upload it to the Arduino Nano Board.

But before uploading the code, insert your mobile number in the following lines under the SendMessageTankFull function.

1
sim800.println("AT+CMGS=\"+91xxxxxxxxxx\"\r");

The complete code is given below.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include<LiquidCrystal.h>
#include<Wire.h>
#include <SoftwareSerial.h>
#define rxPin 2
#define txPin 3
SoftwareSerial sim800(rxPin, txPin);
 
 
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
 
 
int FloatSensor = 14;
int red = 6;
int green = 4;
int relay = 15;
int buzzer = 5;
 
int buttonState = 1;
 
void setup()
{
 
  Serial.begin(9600);
  sim800.begin(9600);
  Serial.println("SIM800L software serial initialize");
  sim800.println("AT");
  pinMode(FloatSensor, INPUT_PULLUP);
  pinMode (red, OUTPUT);
  pinMode (relay, OUTPUT);
  pinMode (green, OUTPUT);
  pinMode (buzzer, OUTPUT);
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("   Welcome To");
  lcd.setCursor(0, 1);
  lcd.print("  Our Projects");
  delay(3000);
  lcd.setCursor(0, 0);
  lcd.print("REPRESENTED BY:- ");
  lcd.setCursor(0, 1);
  lcd.print("HowToElectronics");
  delay(3000);
  lcd.clear();
 
}
 
void loop()
{
  buttonState = digitalRead(FloatSensor);
 
  if (buttonState == HIGH)
  {
    digitalWrite(red, LOW);
    digitalWrite(green, HIGH);
    digitalWrite(buzzer, LOW);
    digitalWrite(relay, LOW);
    Serial.println("WATER LEVEL - LOW");
    lcd.setCursor(0, 0);
    lcd.print("W-Level:- Normal ");
    lcd.setCursor(0, 1);
    lcd.print("   Motor ON.");
    SendMessageTankNotFull();
  }
  else
  {
    digitalWrite(red, HIGH);
    digitalWrite(green, LOW);
    digitalWrite(buzzer, HIGH);
    digitalWrite(relay, HIGH);
    Serial.println("WATER LEVEL - HIGH");
    lcd.setCursor(0, 0);
    lcd.print("W-Level:- FULL.. ");
    lcd.setCursor(0, 1);
    lcd.print("   Motor OFF");
 
    SendMessageTankFull();;
  }
  delay(1000);
}
 
 
 
void SendMessageTankFull()
{
  sim800.println("AT+CMGF=1");
  delay(1000);
  sim800.println((char)26);
  delay(100);
  sim800.println("AT+CMGS=\"+91xxxxxxxxxx\"\r");
  delay(1000);
  sim800.println("Water tank is full, please check pump!");
  delay(1000);
}
 
void SendMessageTankNotFull()
{
  sim800.println("AT+CMGF=1");
  delay(1000);
  sim800.println((char)26);
  delay(100);
  sim800.println("AT+CMGS=\"+91xxxxxxxxxx\"\r");
  delay(1000);
  sim800.println("Water level monitoring started");
  delay(1000);
}




Testing Water Level Monitoring & Control System

GSM Based Water Level Monitoring System Arduino

Once the code is uploaded, the board is ready for testing. But before testing, you should insert any 2G SIM into the tray of SIM800L as SIM800L only works with a 2G network.

Then power the device to start the device. The SIM800L will also be active after a few minutes as it acquires network connectivity. Initially the motor is off.

When the tank is empty or not full (detected by float switch), the motor starts automatically and keeps filling the tank until the tank is full.

The motor will turn off automatically when the tank is full. At this moment the float sensor switch indicates the off position which is detected by Arduino digital pin.

The SMS is sent when the motor starts as well as when the motor stops. You can set your own custom message in the above code.

Thats all about GSM Based Water Level Monitoring System using Arduino with SMS Notification. You can use this project for your industrial application or as a demo college project.


Video Tutorial & Guide

GSM Based Water Tank Level Monitoring & Control System using Arduino with SMS Alert
Watch this video on YouTube.

The advance version of this project can be sending the water tank level data to the Blynk dashboard using the GSM/GPRS network. You may refer to GSM/GPRS Water Level Monitor Project.

Share. Facebook Twitter Pinterest LinkedIn Tumblr Email Reddit Telegram WhatsApp
Previous ArticleGetting Started with Seeed XIAO RP2040 with Projects
Next Article PIR Motion Detection using Bluetooth & STM32 Board

Related Posts

DC Energy Meter using Arduino

Build a DC Energy Meter using Arduino – 32V/5A

Updated:August 26, 20252K
Interfacing ADXL375 Accelerometer with Arduino

Interfacing ADXL375 Accelerometer with Arduino (±200g)

Updated:June 28, 2025
PZEM-004T Arduino Energy Meter

DIY AC Energy Meter using PZEM-004T & Arduino

Updated:March 6, 20258K
Interfacing BMI160 Accelerometer & Gyroscope with Arduino

Interfacing BMI160 Accelerometer & Gyroscope with Arduino

Updated:February 2, 20259K
Password Based Door Lock Security System Using Arduino & Keypad

Password Based Door Lock Security System Using Arduino & Keypad

Updated:February 2, 20252436K
Earthquake Detector Alarm with with Accelerometer & Arduino

Earthquake Detector Alarm with Accelerometer & Arduino

Updated:February 2, 2025661K
View 1 Comment

1 Comment

  1. Soeren Klint on February 14, 2023 8:20 AM

    Is it possible to get the schematic as a file, i have noticed some fault in the pcb layout, i whis to korrekt. Regards Søren

    Reply

CommentsCancel reply

Latest Posts

ESP32 Fingerprint Attendance System with Live Web Dashboard

June 14, 2026
IoT Based PM & Air Quality Monitoring System using ESP32

IoT Based PM & Air Quality Monitoring System using ESP32

June 14, 2026
DIY ESP32 MLX90640 IR Thermal Camera with Live Web Display

DIY ESP32 MLX90640 IR Thermal Camera with Live Web Display

May 10, 2026
IoT Activity Tracker with ESP32 & Accelerometer Gyroscope

IoT Activity Tracker with ESP32 & Accelerometer/Gyroscope

May 2, 2026
A Guide to Sourcing Obsolete ICs for Vintage Projects

Beyond AliExpress: A Guide to Sourcing Obsolete ICs for Vintage Projects

April 21, 2026

ESP32 IoT Vehicle Motion Analyzer with MPU6050 & LIS3MDL

April 27, 2026
Building a Smart Sensor Node with a BLE Microcontroller

Building a Smart Sensor Node with a BLE Microcontroller

February 26, 2026
High-Accuracy Pitch, Roll, Yaw with ESP32 & BNO08x IMU

High-Accuracy Pitch, Roll, Yaw with ESP32 & BNO08x IMU

April 27, 2026
Top Posts & Pages
  • IoT Based PM & Air Quality Monitoring System using ESP32
    IoT Based PM & Air Quality Monitoring System using ESP32
  • How to use LDR Sensor Module with Arduino
    How to use LDR Sensor Module with Arduino
  • 12V DC to 220V AC Inverter Circuit & PCB
    12V DC to 220V AC Inverter Circuit & PCB
  • Buck Converter: Basics, Working, Design & Application
    Buck Converter: Basics, Working, Design & Application
  • IoT AC Energy Meter with PZEM-004T & ESP32 WebServer
    IoT AC Energy Meter with PZEM-004T & ESP32 WebServer
  • How to use Modbus RTU with ESP32 to read Sensor Data
    How to use Modbus RTU with ESP32 to read Sensor Data
  • Silicon Controlled Rectifier (SCR): Construction, Working & Applications
    Silicon Controlled Rectifier (SCR): Construction, Working & Applications
  • ECG Graph Monitoring with AD8232 ECG Sensor & Arduino
    ECG Graph Monitoring with AD8232 ECG Sensor & Arduino
Categories
  • Arduino Projects (197)
  • Articles (60)
    • Learn Electronics (19)
    • Product Review (15)
    • Tech Articles (28)
  • Electronics Circuits (46)
    • 555 Timer Projects (21)
    • Op-Amp Circuits (7)
    • Power Electronics (13)
  • IoT Projects (205)
    • ESP32 MicroPython (7)
    • ESP32 Projects (82)
    • ESP32-CAM Projects (15)
    • ESP8266 Projects (76)
    • LoRa/LoRaWAN Projects (22)
  • Microcontrollers (38)
    • AMB82-Mini IoT AI Camera (4)
    • BLE Projects (18)
    • STM32 Projects (19)
  • Raspberry Pi (93)
    • Raspberry Pi Pico Projects (57)
    • Raspberry Pi Pico W Projects (12)
    • Raspberry Pi Projects (24)
Follow Us
  • Facebook
  • Twitter
  • Pinterest
  • Instagram
  • YouTube
About Us

“‘How to Electronics’ is a vibrant community for electronics enthusiasts and professionals. We deliver latest insights in areas such as Embedded Systems, Power Electronics, AI, IoT, and Robotics. Our goal is to stimulate innovation and provide practical solutions for students, organizations, and industries. Join us to transform learning into a joyful journey of discovery and innovation.

Copyright © How To Electronics. All rights reserved.
  • About Us
  • Disclaimer
  • Privacy Policy
  • Contact Us
  • Advertise With Us

Type above and press Enter to search. Press Esc to cancel.

Ad Blocker Enabled!
Ad Blocker Enabled!
Looks like you're using an ad blocker. Please allow ads on our site. We rely on advertising to help fund our site.