Système d'alerte d'approvisionnement en eau basé sur SMS

Essayez Notre Instrument Pour Éliminer Les Problèmes





Dans cet article, nous allons construire un circuit qui informera l'utilisateur par SMS si l'alimentation en eau de votre région / maison est initiée. Il peut indiquer l'heure à laquelle l'eau commence à arriver et se termine, la vitesse moyenne du débit d'eau en litre par minute et la quantité totale d'eau livrée à votre réservoir en litres.

introduction

Nous savons tous que la vie sur terre est impossible sans eau, en tant qu'êtres humains nous utilisons plus d'eau que toute autre espèce sur terre consomme, non seulement pour notre survie mais aussi pour répondre à nos besoins de luxe.



Nous consommons non seulement de l'eau, mais nous contaminons également les plans d'eau. La consommation et la demande d'eau vont monter en flèche dans les décennies à venir.

En tant que citoyen du monde, il est de notre devoir d'économiser l'eau, mais en tant qu'individu, nous pouvons ne pas satisfaire la soif du monde entier en économisant de l'eau, mais nous pouvons certainement satisfaire la soif de notre famille car nous pourrions avoir une quantité d'eau saine pendant une brève période. , même si personne autour de nous n'a économisé de l'eau pour l'avenir.



L'approvisionnement en eau en Inde et dans d'autres pays en développement rapide est limité et également sur une forte demande, de plus l'approvisionnement en eau peut commencer sans aucune notification officielle du gouvernement local. Ce projet résoudra ce problème pour nous.

Passons maintenant aux détails techniques du projet.

Le circuit:

Le circuit se compose d'un capteur de débit d'eau YF-S201, une carte Arduino qui est le cerveau du projet, un Module GSM (SIM 800 ou SIM 900) pour recevoir des alertes SMS sur l'approvisionnement en eau et un module d'horloge en temps réel pour suivre l'heure correcte pour le début et la fin de l'approvisionnement en eau.

Une alimentation 9 volts est souhaitable pour alimenter la carte Arduino et le module GSM, il est recommandé de fournir l'alimentation à partir d'adaptateurs 9 V ou d'une alimentation maison bien construite, basée sur un transformateur (LM 7809).

Circuit d

La connexion entre Arduino et le module GSM comme suit:

Module GSM Arduino TX vers RX

Module GSM Arduino RX vers TX

Module GSM Arduino GND vers GND

N'essayez jamais d'alimenter le module GSM de la broche de sortie 5V d'Arduino à l'entrée 5V du module GSM.

Le module d'horloge RTC ou temps réel suivra l'heure d'arrivée de l'eau et la fin de l'approvisionnement en eau.

Cela conclut le matériel.

Pour régler l'heure sur RTC, nous devons télécharger le programme de réglage de l'heure sur RTC avec la configuration matérielle terminée. Cela synchronisera l'heure de votre ordinateur avec RTC.

Téléchargez le fichier de bibliothèque RTC: github.com/PaulStoffregen/DS1307RTC

Programme de réglage de l'heure sur RTC:

//-----------------------------------------------------------//
#include
#include
#include
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
}
//-----------------------------------------------------------//

· Téléchargez le code ci-dessus avec le matériel terminé.

· Ouvrez le moniteur série et il indique que l'heure a été réglée.

· Vous êtes maintenant prêt à passer à l'étape suivante.

Vous avez correctement défini l'heure du module RTC.

Maintenant, importons le programme principal qui nous informera par SMS.

Programme principal:

//-----Program Developed by R.Girish-----//
#include
#include
#include
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 {
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' ') // 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' ') // 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' ') // 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-----//

Remarque : Vous devez d'abord télécharger le programme de réglage de l'heure RTC sur Arduino et le programme principal ensuite (avec la configuration matérielle terminée), en faisant le contraire, le projet ne fonctionnera pas.

Voici la capture d’écran SMS du prototype testé:

capture d

· Après une minute de mise sous tension du circuit, vous recevrez un SMS indiquant que le système est prêt.

· Lorsque l'eau commence à circuler à travers le capteur, le système avertit l'utilisateur avec le temps.

· Une fois l'alimentation en eau terminée, le système enverra une autre alerte et résumera la session avec le temps, le débit d'eau moyen et l'eau totale livrée à votre réservoir.

Prototype de l'auteur:

Prototype de circuit d

Veuillez noter qu'au moment de l'arrivée de l'eau, l'eau doit s'écouler librement, ce qui signifie que s'il y a un bloc ou un robinet fermé, ne vous en informera pas.

Si vous avez des questions concernant ce projet, n'hésitez pas à les exprimer dans la section commentaires, vous recevrez peut-être une réponse rapide.




Précédent: Incubateur utilisant Arduino avec contrôle automatique de la température et de l'humidité Un article: 3 meilleurs circuits d'onduleur sans transformateur