Sistem za opozarjanje na oskrbo z vodo prek SMS-a

Preizkusite Naš Instrument Za Odpravo Težav





V tem prispevku bomo zgradili tokokrog, ki bo uporabnika prek SMS-a obvestil, če se začne oskrba z vodo na vašem območju / domu. Prikaže lahko čas, ko se voda začne dovajati in konča, povprečno hitrost pretoka vode v litrih na minuto in skupno količino vode, dovedene v rezervoar, v litrih.

Uvod

Vsi vemo, da je življenje na zemlji brez vode nemogoče kot ljudje porabimo več vode kot katera koli druga vrsta na zemlji porabi, ne samo za preživetje, temveč tudi za zadovoljevanje luksuznih potreb.



Vode ne samo uživamo, temveč tudi onesnažujemo vodna telesa. Poraba in povpraševanje po vodi bo v prihodnjih desetletjih naraščala.

Kot svetovni državljan je naša dolžnost varčevati z vodo, vendar kot posameznik z varčevanjem z vodo morda ne bomo zadovoljili celotne svetovne žeje, vsekakor pa lahko potešimo žejo naše družine, saj imamo lahko kratek čas zdravo količino vode , četudi nihče okoli nas ni varčeval z vodo za prihodnost.



Oskrba z vodo v Indiji in drugih hitro razvijajočih se državah je omejena in tudi na veliko povpraševanje, poleg tega pa se lahko oskrba z vodo začne brez uradnega obvestila lokalne vlade. Ta projekt bo rešil to težavo namesto nas.

Zdaj pa se poglobimo v tehnične podrobnosti projekta.

Vezje:

Vezje je sestavljeno iz a senzor pretoka vode YF-S201, plošča Arduino, ki je možganci projekta, a GSM modul (SIM 800 ali SIM 900) za prejemanje SMS opozoril o oskrbi z vodo in modul ure v realnem času za sledenje pravilnemu času za zagon in prekinitev oskrbe z vodo.

Za napajanje plošče Arduino in modula GSM je zaželeno napajanje z napetostjo 9 voltov. Priporočljivo je, da napajanje zagotovite iz 9 V adapterjev ali domačega dobro zgrajenega napajanja na osnovi transformatorja (LM 7809).

Opozorilo za oskrbo z vodo na osnovi SMS-a

Povezava med Arduino in GSM modulom je naslednja:

Modul Arduino TX do RX GSM

Arduino RX do TX GSM modul

Arduino GND do GND GSM modul

Nikoli ne poskušajte napajati GSM modula iz Arduinovega 5V izhodnega zatiča na 5V vhod GSM modula.

RTC ali modul ure realnega časa bo sledil času prihoda vode in prekinitvi oskrbe z vodo.

S tem je zaključena strojna oprema.

Za nastavitev časa na RTC moramo naložiti program za nastavitev časa na RTC s končano nastavitvijo strojne opreme. To bo sinhroniziralo čas v računalniku z RTC.

Prenesite datoteko knjižnice RTC: github.com/PaulStoffregen/DS1307RTC

Program za nastavitev časa na 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
}
//-----------------------------------------------------------//

· Naložite zgornjo kodo z dokončano strojno opremo.

· Odprite serijski monitor in prikazal se je čas.

· Zdaj ste pripravljeni na naslednji korak.

Uspešno ste nastavili čas za modul RTC.

Zdaj pa naložimo glavni program, ki nas bo obvestil prek SMS-a.

Glavni program:

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

Opomba : Program za nastavitev časa RTC morate najprej naložiti v Arduino, drugi pa glavni program (s končano namestitvijo strojne opreme), sicer pa projekt ne bo deloval.

Tu je posnetek zaslona SMS preizkušenega prototipa:

preizkušeni prototipni posnetek zaslona SMS:

· Po minuti vklopa vezja boste prejeli sporočilo SMS, da je sistem pripravljen.

· Ko voda začne teči skozi senzor, sistem uporabnika s časom obvesti.

· Po prenehanju oskrbe z vodo bo sistem poslal novo opozorilo in povzel sejo s časom, povprečnim pretokom vode in skupno količino vode, dostavljene v vaš rezervoar.

Avtorjev prototip:

Prototip vezja za oskrbo z vodo na osnovi SMS

Upoštevajte, da mora voda ob prihodu vode prosto teči, kar pomeni, da če je kakšen blok ali pipa zaprt, vas ne bo obvestil.

Če imate kakršna koli vprašanja v zvezi s tem projektom, vas prosimo, da izrazite v oddelku za komentarje, lahko prejmete hiter odgovor.




Prejšnji: Inkubator z uporabo Arduina s samodejnim nadzorom temperature in vlažnosti Naprej: 3 najboljša pretvorniška vezja brez transformatorjev