SMS-basiertes Warnsystem für die Wasserversorgung

Versuchen Sie Unser Instrument, Um Probleme Zu Beseitigen





In diesem Beitrag werden wir eine Schaltung erstellen, die den Benutzer per SMS benachrichtigt, wenn die Wasserversorgung für Ihren Bereich / Ihr Zuhause eingeleitet wird. Es kann die Zeit anzeigen, zu der das Wasser zu liefern beginnt und endet, die durchschnittliche Wasserdurchflussgeschwindigkeit in Liter pro Minute und das Gesamtwasser, das in Litern an Ihren Tank geliefert wird.

Einführung

Wir alle wissen, dass das Leben auf der Erde ohne Wasser als Menschen unmöglich ist Wir verbrauchen mehr Wasser als jede andere Spezies auf der Erde verbraucht, nicht nur für unser Überleben, sondern auch um unsere Luxusbedürfnisse zu befriedigen.



Wir verbrauchen nicht nur Wasser, sondern kontaminieren auch Gewässer. Der Wasserverbrauch und die Nachfrage werden in den kommenden Jahrzehnten in die Höhe schnellen.

Als Weltbürger ist es unsere Pflicht, Wasser zu sparen, aber als Einzelperson befriedigen wir möglicherweise nicht den Durst der ganzen Welt, indem wir Wasser sparen, aber wir können definitiv den Durst unserer Familie stillen, da wir für kurze Zeit möglicherweise eine gesunde Menge Wasser haben , auch wenn niemand um uns herum Wasser für die Zukunft gespart hat.



Die Wasserversorgung in Indien und anderen sich schnell entwickelnden Ländern ist begrenzt und auch bei hoher Nachfrage. Darüber hinaus kann die Wasserversorgung ohne offizielle Mitteilung der lokalen Regierung beginnen. Dieses Projekt wird dieses Problem für uns lösen.

Kommen wir nun zu den technischen Details des Projekts.

Die Rennbahn:

Die Schaltung besteht aus a Wasserdurchflusssensor YF-S201, ein Arduino-Board, das das Gehirn des Projekts ist, a GSM-Modul (SIM 800 oder SIM 900) zum Empfangen von SMS-Warnungen zur Wasserversorgung und eines Echtzeituhrmoduls zum Verfolgen der korrekten Zeit für die Einleitung und Beendigung der Wasserversorgung.

Für die Stromversorgung der Arduino-Karte und des GSM-Moduls ist eine 9-Volt-Versorgung wünschenswert. Es wird empfohlen, die Stromversorgung über 9-V-Adapter oder eine hausgemachte, gut gebaute, transformatorbasierte Versorgung (LM 7809) bereitzustellen.

SMS-basierter Wasserversorgungs-Warnkreis

Die Verbindung zwischen Arduino und GSM-Modul wie folgt:

Arduino TX zu RX GSM Modul

Arduino RX zu TX GSM Modul

Arduino GND zu GND GSM Modul

Versuchen Sie niemals, das GSM-Modul vom 5-V-Ausgangspin von Arduino an den 5-V-Eingang des GSM-Moduls anzuschließen.

Das RTC- oder Echtzeituhrmodul verfolgt die Zeit des Eintreffens von Wasser und die Beendigung der Wasserversorgung.

Damit ist die Hardware abgeschlossen.

Um die Zeit auf RTC einzustellen, müssen wir das Zeiteinstellungsprogramm mit dem abgeschlossenen Hardware-Setup auf RTC hochladen. Dadurch wird die Zeit auf Ihrem Computer mit RTC synchronisiert.

Laden Sie die RTC-Bibliotheksdatei herunter: github.com/PaulStoffregen/DS1307RTC

Programm zum Einstellen der Zeit auf 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
}
//-----------------------------------------------------------//

· Laden Sie den obigen Code mit fertiger Hardware hoch.

· Öffnen Sie den seriellen Monitor und es wird angezeigt, dass die Zeit eingestellt wurde.

· Jetzt können Sie mit dem nächsten Schritt fortfahren.

Sie haben die Zeit für das RTC-Modul erfolgreich eingestellt.

Laden Sie jetzt das Hauptprogramm hoch, das uns per SMS benachrichtigt.

Hauptprogramm:

//-----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-----//

Hinweis : Sie müssen zuerst das RTC-Zeiteinstellungsprogramm auf Arduino und dann das Hauptprogramm (mit abgeschlossenem Hardware-Setup) hochladen. Wenn Sie das Gegenteil tun, funktioniert das Projekt nicht.

Hier ist der SMS-Screenshot des getesteten Prototyps:

SMS-Screenshot des getesteten Prototyps:

· Nach einer Minute Einschalten des Stromkreises erhalten Sie eine SMS mit der Meldung, dass das System bereit ist.

· Wenn das Wasser durch den Sensor fließt, benachrichtigt das System den Benutzer rechtzeitig.

· Nach Beendigung der Wasserversorgung sendet das System einen weiteren Alarm und fasst die Sitzung mit der Zeit, dem durchschnittlichen Wasserdurchfluss und dem an Ihren Tank gelieferten Gesamtwasser zusammen.

Prototyp des Autors:

Prototyp eines SMS-basierten Wasserversorgungs-Warnkreises

Bitte beachten Sie, dass das Wasser zum Zeitpunkt der Wasserankunft frei fließen muss. Wenn also ein Block oder Wasserhahn geschlossen ist, werden Sie nicht benachrichtigt.

Wenn Sie Fragen zu diesem Projekt haben, können Sie diese gerne im Kommentarbereich ausdrücken. Möglicherweise erhalten Sie eine schnelle Antwort.




Zurück: Inkubator mit Arduino mit automatischer Temperatur- und Feuchtigkeitsregelung Weiter: 3 beste transformatorlose Wechselrichterschaltungen