• Skip to main content
  • Skip to primary sidebar

Homemade Circuit Projects

Need circuit help? Post them in the comments! I've answered over 50,000!

Blog | Categories | About | Contact | Calculators-online
You are here: Home / Arduino Projects / SMS Based Water Supply Alert System

SMS Based Water Supply Alert System

Last Updated on December 5, 2024 by Swagatam 17 Comments

In this post I will show how to construct a circuit which will notify the user via SMS if the water supply to you area / home is initiated. It can show the time when the water is begin to supply and ended, average water flow speed in liter per minute and total water delivered to your tank in liters.

Table of Contents
  • Introduction
  • The Circuit:
  • Program for setting time on RTC:
  • Main Program:
  • Author’s prototype:

Introduction

We all know that life on earth is impossible without water, as human beings we use more water than any other species on earth consumes, not only for our survival but also to meet our luxury needs.

We not only consume water but also contaminate water bodies. The water consumption and demand is going to skyrocket in coming decades.

As a world citizen, it is our duty to save water, but as an individual we may not satisfy the entire world’s thirst by saving water but, we can definitely satisfy our family’s thirst as we might have healthy amount of water for brief period of time, even if no one around us saved water for future.

The supply of water in India and other rapidly developing countries is limited and also on high demand, moreover the water supply can begin without any official notification from the local government. This project will solve this issue for us.

Now let’s dive into the technical details of the project.

The Circuit:

The circuit consists of a water flow sensor YF-S201, an Arduino board which is the brain of the project, a GSM module (SIM 800 or SIM 900) for receiving SMS alerts on water supply and a real time clock module for tracking the correct time for water supply initiation and termination of water supply.

9 Volt supply is desirable for powering the Arduino board and the GSM module, it is recommended to provide the power supply from 9V adapters or homemade well-built, transformer based (LM 7809) supply.

SMS Based Water Supply Alert Circuit

The connection between Arduino and GSM module as follows:

Arduino TX to RX GSM module

Arduino RX to TX GSM module

Arduino GND to GND GSM module

Never try to power the GSM module from Arduino’s 5V output pin to 5V input of GSM module.

The RTC or real time clock module will track the time of arrival of water and termination of water supply.

That concludes the hardware.

To set the time on RTC we need to upload time setting program to RTC with the completed hardware setup. This will sync the time on your computer to RTC.

Download the RTC library file: github.com/PaulStoffregen/DS1307RTC

Program for setting time on RTC:

//-----------------------------------------------------------//
#include <Wire.h>
#include <TimeLib.h>
#include <DS1307RTC.h>
int P = A3; //Assign power pins for RTC
int N = A2;
const char *monthName[12] = {
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};
tmElements_t tm;
void setup() {
pinMode(P, OUTPUT);
pinMode(N, OUTPUT);
digitalWrite(P, HIGH);
digitalWrite(N, LOW);
bool parse = false;
bool config = false;
// get the date and time the compiler was run
if (getDate(__DATE__) && getTime(__TIME__)) {
parse = true;
// and configure the RTC with this info
if (RTC.write(tm)) {
config = true;
}
}
Serial.begin(9600);
while (!Serial) ; // wait for Arduino Serial Monitor
delay(200);
if (parse && config) {
Serial.print("DS1307 configured Time=");
Serial.print(__TIME__);
Serial.print(", Date=");
Serial.println(__DATE__);
} else if (parse) {
Serial.println("DS1307 Communication Error :-{");
Serial.println("Please check your circuitry");
} else {
Serial.print("Could not parse info from the compiler, Time=\"");
Serial.print(__TIME__);
Serial.print("\", Date=\"");
Serial.print(__DATE__);
Serial.println("\"");
}
}
void loop() {
}
bool getTime(const char *str)
{
int Hour, Min, Sec;
if (sscanf(str, "%d:%d:%d", &Hour, &Min, &Sec) != 3) return false;
tm.Hour = Hour;
tm.Minute = Min;
tm.Second = Sec;
return true;
}
bool getDate(const char *str)
{
char Month[12];
int Day, Year;
uint8_t monthIndex;
if (sscanf(str, "%s %d %d", Month, &Day, &Year) != 3) return false;
for (monthIndex = 0; monthIndex < 12; monthIndex++) {
if (strcmp(Month, monthName[monthIndex]) == 0) break;
}
if (monthIndex >= 12) return false;
tm.Day = Day;
tm.Month = monthIndex + 1;
tm.Year = CalendarYrToTm(Year);
return true;
}
//-----------------------------------------------------------//

·        Upload the above code with completed hardware.

·        Open the serial monitor and it shows time has been set.

·        Now you are ready to move to next step.

You successfully set time to the RTC module.

Now, let’s upload the main program which will notify us via SMS.

Main Program:

//-----Program Developed by R.Girish-----//
#include <Wire.h>
#include <TimeLib.h>
#include <DS1307RTC.h>
int X;
int Y;
int sec = 50;
int t = 0;
int i = 0;
int check = 1;
int chk = 0;
int P = A3;
int N = A2;
int tim = 0;
float Time = 0;
float frequency = 0;
float waterFlow = 0;
float total = 0;
float LS = 0;
float average = 0;
const int input = A0;
const int test = 9;
void setup()
{
Serial.begin(9600);
pinMode(input, INPUT);
pinMode(test, OUTPUT);
analogWrite(test, 100);
pinMode(P, OUTPUT);
pinMode(N, OUTPUT);
digitalWrite(P, HIGH);
digitalWrite(N, LOW);
for (i = 0; i < sec; i++)
{
delay(1000);
}
Serial.println("AT+CNMI=2,2,0,0,0");
delay(1000);
Serial.println("AT+CMGF=1");
delay(500);
Serial.println("AT+CMGS=\"+91xxxxxxxxxx\"\r"); // Replace x with mobile number
delay(1000);
Serial.println("Your water supply notification system is ready.");// The SMS text you want to send
delay(100);
Serial.println((char)26); // ASCII code of CTRL+Z
delay(1000);
}
void loop()
{
tmElements_t tm;
if (RTC.read(tm))
{
if (tm.Hour > 12) //24Hrs to 12 Hrs conversion//
{
if (tm.Hour == 13) tim = 1;
if (tm.Hour == 14) tim = 2;
if (tm.Hour == 15) tim = 3;
if (tm.Hour == 16) tim = 4;
if (tm.Hour == 17) tim = 5;
if (tm.Hour == 18) tim = 6;
if (tm.Hour == 19) tim = 7;
if (tm.Hour == 20) tim = 8;
if (tm.Hour == 21) tim = 9;
if (tm.Hour == 22) tim = 10;
if (tm.Hour == 23) tim = 11;
}
else
{
tim = tm.Hour;
}
X = pulseIn(input, HIGH);
Y = pulseIn(input, LOW);
Time = X + Y;
frequency = 1000000 / Time;
waterFlow = frequency / 7.5;
LS = waterFlow / 60;
if (frequency >= 0)
{
if (isinf(frequency))
{
if (chk == 1)
{
Serial.println("AT+CNMI=2,2,0,0,0");
delay(1000);
Serial.println("AT+CMGF=1");
delay(500);
Serial.println("AT+CMGS=\"+91xxxxxxxxxx\"\r"); // Replace x with mobile number
delay(1000);
Serial.print("Time: ");
delay(10);
Serial.print(tim);
delay(10);
Serial.print(":");
delay(10);
Serial.print(tm.Minute);
delay(10);
if (tm.Hour >= 12)
{
Serial.println(" PM");
}
if (tm.Hour < 12)
{
Serial.println(" AM");
}
delay(10);
Serial.println("Water Supply is Ended.");// The SMS text you want to send
delay(100);
Serial.print("Average Water Flow (Litre/Min): ");
delay(100);
Serial.println(average);
delay(100);
Serial.print("Total Water Delivered: ");
delay(100);
Serial.print(total);
delay(100);
Serial.println(" Litre");
delay(100);
Serial.println((char)26); // ASCII code of CTRL+Z
delay(5000);
t = 0;
total = 0;
average = 0;
chk = 0;
check = 1;
}
}
else
{
if (check == 1)
{
Serial.println("AT+CNMI=2,2,0,0,0");
delay(1000);
Serial.println("AT+CMGF=1");
delay(500);
Serial.println("AT+CMGS=\"+91xxxxxxxxxx\"\r"); // Replace x with mobile number
delay(1000);
Serial.print("Time: ");
delay(10);
Serial.print(tim);
delay(10);
Serial.print(":");
delay(10);
Serial.print(tm.Minute);
delay(10);
if (tm.Hour >= 12)
{
Serial.println(" PM");
}
if (tm.Hour < 12)
{
Serial.println(" AM");
}
delay(10);
Serial.println("The water is being supplied now.");// The SMS text you want to send
delay(100);
Serial.println((char)26); // ASCII code of CTRL+Z
delay(1000);
check = 0;
chk = 1;
}
t = t + 1;
total = total + LS;
average = total / t;
average = average * 60;
}
}
delay(1000);
}
}
//-----Program Developed by R.Girish-----//

Note: You must upload the RTC time setting program to Arduino first and the main program second (with completed hardware setup), doing the opposite, the project will not work.

Here is the tested prototype’s SMS screen shot:

tested prototype’s SMS screen shot:

·        After a minute powering the circuit ON, you will get an SMS saying that the system is ready.

·        When the water starts flowing through the sensor, the system will notify the user with time.

·        After the water supply is terminated the system will send another alert and summarize the session with time, average water flow and total water delivered to your tank.

Author’s prototype:

Prototype of SMS Based Water Supply Alert Circuit

Please note that at the time of water arrival the water must free flow, meaning if there is any block or tap which is closed will not notify you.

If you have any questions regarding this project, feel free to express in the comment section, you may receive a quick reply.

You'll also like:

  • 1.  Password Security Lock Circuit Using 4×4 Keypad and Arduino
  • 2.  Arduino Frequency Meter Using 16×2 Display
  • 3.  Monitoring State of a Switch (Digital Read Serial) – Arduino Basics
  • 4.  Transformerless AC Voltmeter Circuit Using Arduino
  • 5.  Make this 7 Segment Digital Clock with Beep Alert Circuit
  • 6.  Municipal Water Supply Sensor Controller Circuit

About Swagatam

I am an electronics engineer with over 15 years of hands-on experience. I am passionate about inventing, designing electronic circuits and PCBs, and helping hobbyists bring their projects to life. That is why I founded homemade-circuits.com, a website where I share innovative circuit ideas and tutorials. Have a circuit related question? Leave a comment.... I guarantee a reply!

Previous Post: « Incubator Using Arduino with Automatic Temperature and Humidity control
Next Post: 3 Best Transformerless Inverter Circuits »

Reader Interactions

Comments

  1. JN says

    September 28, 2024 at 8:59 pm

    I am confused by the GSM module. Can it simply send an SMS just like that? Doesn’t it require a SIM-card to connect to the net?
    Thanks,
    J

    Reply
    • Swagatam says

      September 29, 2024 at 8:02 am

      Yes a SIM will be required, that’s why we have to enter the SIM number in the Arduino code.

      Reply
  2. Gayatri says

    August 2, 2023 at 10:33 am

    Connections please

    Reply
  3. Benuka chettri says

    April 15, 2023 at 3:34 pm

    Iam currently working on a project title DTMF based load control system where the load is synchronous motor of water supply. The circuit have gsm sim800l,arduino uno R3,single channel relay , whenever I’ll make a call to the gsm module it will turn ON/OFF the motor accordiingly with respect to command given from the mobile keypad after that,I want the flowsensor/flowmeter feedback to my mobile via sms, saying whether the flowmeter is started working the not (ON/OFF)like flowmeter is ON like that. flowmeter is connected to motor. PLEASE HELP ME WITH THE CODE

    Reply
    • Swagatam says

      April 15, 2023 at 5:55 pm

      Unfortunately my coding skills are not good, so I may not be able to solve your problem….the above article was written by an external author.

      Reply
  4. clye says

    October 13, 2022 at 11:21 am

    will this send the time ended even if it has 1hr or more duration?

    Reply
  5. Waryoba says

    October 9, 2022 at 11:39 am

    I am a beginner, How do I upload the RTC and Main Program in the Arduino

    Reply
    • Swagatam says

      October 9, 2022 at 7:10 pm

      Actually I am also not good with Arduino,, so I cannot help you with this issue…this article was purchased from another author.

      Reply
  6. clyde says

    September 20, 2022 at 12:29 pm

    is it possible to save the data to sql database? how?

    Reply
  7. clyde says

    August 10, 2022 at 1:58 pm

    can i use breadboard instead of 9v dc jack for gsm module? TIA

    Reply
    • Swagatam says

      August 10, 2022 at 2:04 pm

      If you are comfortable with the connections then you can use it.

      Reply
  8. oluwadamilare says

    July 20, 2018 at 3:32 am

    sir why cnt we plug the sms power to arduino 5v power output?

    Reply
  9. rahul says

    March 12, 2018 at 4:59 pm

    1st program should be uploaded to arduino connected with RTC or only to RTC individually

    Reply
    • Swagatam says

      March 12, 2018 at 7:47 pm

      Mr.GR will reply you soon…

      Reply
    • GR says

      March 12, 2018 at 9:01 pm

      Hi rahul,

      The RTC with Arduino.

      Regards

      Reply
  10. Devendar says

    October 19, 2017 at 11:34 am

    Dear Swagatam Ji,

    Dipawali ki bhut bhut shubhkamnayen.

    Happy Dipawali.

    Regards,
    Devendar

    Reply
    • Swagatam says

      October 19, 2017 at 12:27 pm

      Thank you Devendar Ji, wish you too a Very Happy Dupawali!!

      Reply

Need Help? Please Leave a Comment! We value your input—Kindly keep it relevant to the above topic! Cancel reply

Your email address will not be published. Required fields are marked *

Primary Sidebar

Subscribe to New Circuit Ideas

Categories

  • Arduino Projects (87)
  • Audio and Amplifier Projects (132)
  • Automation Projects (17)
  • Automobile Electronics (101)
  • Battery Charger Circuits (83)
  • Datasheets and Components (104)
  • Electronics Theory (143)
  • Free Energy (37)
  • Games and Sports Projects (11)
  • Grid and 3-Phase (19)
  • Health related Projects (25)
  • Home Electrical Circuits (12)
  • Indicator Circuits (14)
  • Inverter Circuits (87)
  • Lamps and Lights (142)
  • Meters and Testers (69)
  • Mini Projects (46)
  • Motor Controller (64)
  • Oscillator Circuits (27)
  • Pets and Pests (15)
  • Power Supply Circuits (108)
  • Remote Control Circuits (50)
  • Security and Alarm (64)
  • Sensors and Detectors (101)
  • Solar Controller Circuits (59)
  • Temperature Controllers (42)
  • Timer and Delay Relay (49)
  • Transmitter Circuits (29)
  • Voltage Control and Protection (37)
  • Water Controller (36)

Calculators

  • Battery Back up Time Calculator
  • Capacitance Reactance Calculator
  • IC 555 Astable Calculator
  • IC 555 Monostable Calculator
  • Inductance Calculator
  • LC Resonance Calculator
  • LM317, LM338, LM396 Calculator
  • Ohm’s Law Calculator
  • Phase Angle Phase Shift Calculator
  • Power Factor (PF) Calculator
  • Reactance Calculator
  • Transistor Astable Calculator
  • Transistor base Resistor Calculator
  • Voltage Divider Calculator
  • Wire Current Calculator
  • Zener Diode Calculator
  • Filter Capacitor Calculator
  • Buck Converter Calculator
  • Boost Converter Calculator
  • Solar Panel, Inverter, Battery Calculator
  • Wire Current Calculator
  • SMPS Transformer Calculator
  • IC SG3525, SG3524 Calculator
  • Inverter LC Filter Calculator

People Also Search

555 Circuits | 741 Circuits | LM324 Circuits | LM338 Circuits | 4017 Circuits | Ultrasonic Projects | SMPS Projects | Christmas Projects | MOSFETs | Radio Circuits | Laser Circuits | PIR Projects |

Recent Comments

  • Swagatam on Battery Deep Discharge Protection Circuit
  • Swagatam on 10 LED Tachometer Circuit Diagram
  • Drew Adare on How to Collect Free Energy from Atmosphere
  • Göran on 10 LED Tachometer Circuit Diagram
  • Abdulmajid Haruna on Laptop Power Bank Circuit

Company

  • Privacy Policy
  • Cookie Policy
  • About Me
  • Contact
  • Disclaimer
  • Copyright
  • Videos
  • Sitemap

Social Profiles

  • Twitter
  • YouTube
  • Instagram
  • Pinterest
  • My Facebook-Page
  • Quora
  • Stack Exchange
  • Linkedin
  • © 2025 · Swagatam Innovations