Σύστημα ειδοποίησης παροχής νερού βάσει SMS

Δοκιμάστε Το Όργανο Μας Για Την Εξάλειψη Των Προβλημάτων





Σε αυτήν την ανάρτηση πρόκειται να κατασκευάσουμε ένα κύκλωμα που θα ειδοποιεί τον χρήστη μέσω SMS εάν ξεκινήσει η παροχή νερού στην περιοχή / σπίτι σας. Μπορεί να δείξει την ώρα που το νερό αρχίζει να τροφοδοτείται και τελειώνει, μέση ταχύτητα ροής νερού σε λίτρο ανά λεπτό και συνολικό νερό που παραδίδεται στη δεξαμενή σας σε λίτρα.

Εισαγωγή

Όλοι γνωρίζουμε ότι η ζωή στη γη είναι αδύνατη χωρίς νερό, ως ανθρώπινα όντα χρησιμοποιούμε περισσότερο νερό από ό, τι οποιοδήποτε άλλο είδος στη γη καταναλώνει, όχι μόνο για την επιβίωσή μας, αλλά και για την κάλυψη των αναγκών πολυτέλειας.



Δεν καταναλώνουμε μόνο νερό αλλά και μολύνουμε τα υδάτινα σώματα. Η κατανάλωση νερού και η ζήτηση θα αυξηθούν στα ύψη τις επόμενες δεκαετίες.

Ως παγκόσμιος πολίτης, είναι καθήκον μας να σώσουμε νερό, αλλά ως άτομο μπορεί να μην ικανοποιούμε τη δίψα ολόκληρου του κόσμου σώζοντας νερό, αλλά, σίγουρα μπορούμε να ικανοποιήσουμε τη δίψα της οικογένειάς μας, καθώς μπορεί να έχουμε υγιή ποσότητα νερού για σύντομο χρονικό διάστημα , ακόμα κι αν κανείς γύρω μας δεν έσωσε νερό για το μέλλον.



Η παροχή νερού στην Ινδία και σε άλλες ταχέως αναπτυσσόμενες χώρες είναι περιορισμένη και επίσης με υψηλή ζήτηση, επιπλέον η παροχή νερού μπορεί να ξεκινήσει χωρίς καμία επίσημη ειδοποίηση από την τοπική αυτοδιοίκηση. Αυτό το έργο θα λύσει αυτό το ζήτημα για εμάς.

Τώρα ας δούμε τις τεχνικές λεπτομέρειες του έργου.

Το κύκλωμα:

Το κύκλωμα αποτελείται από ένα αισθητήρας ροής νερού YF-S201, ένας πίνακας Arduino που είναι ο εγκέφαλος του έργου, α Ενότητα GSM (SIM 800 ή SIM 900) για τη λήψη ειδοποιήσεων SMS σχετικά με την παροχή νερού και μια μονάδα ρολογιού σε πραγματικό χρόνο για την παρακολούθηση του σωστού χρόνου έναρξης και τερματισμού της παροχής νερού.

Η τροφοδοσία 9 Volt είναι επιθυμητή για την τροφοδοσία της πλακέτας Arduino και της μονάδας GSM, συνιστάται η παροχή τροφοδοσίας από προσαρμογείς 9V ή σπιτικό καλοφτιαγμένο, μετασχηματιστή (LM 7809).

Κύκλωμα ειδοποίησης παροχής νερού βάσει SMS

Η σύνδεση μεταξύ Arduino και GSM module ως εξής:

Arduino TX to RX GSM module

Arduino RX to TX GSM module

Arduino GND σε GND GSM ενότητα

Ποτέ μην προσπαθείτε να τροφοδοτήσετε τη μονάδα GSM από τον πείρο εξόδου 5V του Arduino έως την είσοδο 5V της μονάδας GSM.

Η μονάδα RTC ή το ρολόι σε πραγματικό χρόνο θα παρακολουθεί την ώρα άφιξης νερού και τον τερματισμό της παροχής νερού.

Αυτό καταλήγει στο υλικό.

Για να ρυθμίσουμε την ώρα στο RTC πρέπει να ανεβάσουμε το πρόγραμμα ρύθμισης ώρας στο RTC με την ολοκληρωμένη εγκατάσταση υλικού. Αυτό θα συγχρονίσει την ώρα στον υπολογιστή σας με RTC.

Κατεβάστε το αρχείο βιβλιοθήκης RTC: github.com/PaulStoffregen/DS1307RTC

Πρόγραμμα για τον καθορισμό χρόνου σε 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
}
//-----------------------------------------------------------//

· Ανεβάστε τον παραπάνω κωδικό με ολοκληρωμένο υλικό.

· Ανοίξτε τη σειριακή οθόνη και δείχνει ότι ο χρόνος έχει ρυθμιστεί.

· Τώρα είστε έτοιμοι να προχωρήσετε στο επόμενο βήμα.

Ορίσατε με επιτυχία την ώρα στη μονάδα RTC.

Τώρα, ας ανεβάσετε το κύριο πρόγραμμα που θα μας ειδοποιήσει μέσω SMS.

Κύριο πρόγραμμα:

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

Σημείωση : Πρέπει να ανεβάσετε το πρόγραμμα ρύθμισης ώρας RTC στο Arduino πρώτα και το δεύτερο δεύτερο πρόγραμμα (με ολοκληρωμένη ρύθμιση υλικού), κάνοντας το αντίθετο, το έργο δεν θα λειτουργήσει.

Εδώ είναι το στιγμιότυπο οθόνης του δοκιμασμένου πρωτοτύπου SMS:

δοκιμασμένο στιγμιότυπο οθόνης SMS του πρωτοτύπου:

· Μετά από ένα λεπτό ενεργοποίηση του κυκλώματος, θα λάβετε ένα SMS που λέει ότι το σύστημα είναι έτοιμο.

· Όταν το νερό αρχίζει να ρέει μέσω του αισθητήρα, το σύστημα θα ειδοποιεί τον χρήστη με το χρόνο.

· Μετά τη διακοπή της παροχής νερού, το σύστημα θα στείλει άλλη ειδοποίηση και θα συνοψίσει τη συνεδρία με το χρόνο, τη μέση ροή του νερού και το συνολικό νερό που παραδίδεται στη δεξαμενή σας.

Πρωτότυπο συγγραφέα:

Πρωτότυπο κυκλώματος ειδοποίησης παροχής νερού βάσει SMS

Λάβετε υπόψη ότι κατά την άφιξη του νερού το νερό πρέπει να ρέει ελεύθερα, πράγμα που σημαίνει ότι εάν υπάρχει κάποιο μπλοκ ή βρύση που είναι κλειστή δεν θα σας ειδοποιήσει.

Εάν έχετε οποιεσδήποτε ερωτήσεις σχετικά με αυτό το έργο, μη διστάσετε να εκφράσετε στην ενότητα σχολίων, ενδέχεται να λάβετε μια γρήγορη απάντηση.




Προηγούμενο: Εκκολαπτήριο που χρησιμοποιεί το Arduino με αυτόματο έλεγχο θερμοκρασίας και υγρασίας Επόμενο: 3 καλύτερα κυκλώματα μετατροπέα χωρίς μετασχηματιστή