Sustav upozorenja za opskrbu vodom putem SMS-a

Isprobajte Naš Instrument Za Uklanjanje Problema





U ovom ćemo postu izraditi sklop koji će putem SMS-a obavijestiti korisnika ako se pokrene opskrba vodom u vašem području / domu. Može prikazati vrijeme kada voda počinje i završava, prosječnu brzinu protoka vode u litrama u minuti i ukupnu količinu vode koja se isporučuje u vaš spremnik u litrama.

Uvod

Svi znamo da je život na zemlji nemoguć bez vode, kao ljudi koristimo više vode nego što je konzumira bilo koja druga vrsta na zemlji, ne samo za naše preživljavanje već i za zadovoljavanje naših luksuznih potreba.



Ne samo da konzumiramo vodu, već i zagađujemo vodena tijela. Potrošnja i potražnja vode u nadolazećim će desetljećima rasti.

Kao svjetski građanin naša je dužnost štedjeti vodu, ali kao pojedinac možda nećemo zadovoljiti žeđ cijelog svijeta štedeći vodu, ali definitivno možemo zadovoljiti žeđ svoje obitelji jer na kraće vrijeme možemo imati zdravu količinu vode , čak i ako nitko oko nas nije štedio vodu za budućnost.



Opskrba vodom u Indiji i drugim zemljama u brzom razvoju ograničena je i također na visoku potražnju, štoviše, opskrba vodom može započeti bez ikakve službene obavijesti lokalne vlasti. Ovaj projekt će riješiti ovo pitanje za nas.

Sada zaronimo u tehničke detalje projekta.

Krug:

Krug se sastoji od a senzor protoka vode YF-S201, Arduino ploča koja je mozak projekta, a GSM modul (SIM 800 ili SIM 900) za primanje SMS upozorenja o vodoopskrbi i modul sa satom u stvarnom vremenu za praćenje točnog vremena za pokretanje i prekid vodoopskrbe vodom.

Za napajanje Arduino ploče i GSM modula poželjno je napajanje od 9 volti, preporuča se osigurati napajanje iz 9V adaptera ili domaće dobro izrađene opskrbe na bazi transformatora (LM 7809).

Krug upozorenja za opskrbu vodom putem SMS-a

Veza između Arduina i GSM modula kako slijedi:

Arduino TX to RX GSM modul

Arduino RX to TX GSM modul

Arduino GND na GND GSM modul

Nikada nemojte pokušavati napajati GSM modul s Arduinovog izlaznog pina 5V na 5V ulaz GSM modula.

RTC ili modul sata u stvarnom vremenu pratit će vrijeme dolaska vode i prestanka opskrbe vodom.

To zaključuje hardver.

Da bismo postavili vrijeme na RTC, moramo na RTC prenijeti program za podešavanje vremena s dovršenim postavljanjem hardvera. Ovo će sinkronizirati vrijeme na računalu s RTC-om.

Preuzmite datoteku RTC biblioteke: github.com/PaulStoffregen/DS1307RTC

Program za podešavanje vremena 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
}
//-----------------------------------------------------------//

· Učitajte gornji kod s dovršenim hardverom.

· Otvorite serijski monitor i on pokazuje da je vrijeme postavljeno.

· Sada ste spremni za prelazak na sljedeći korak.

Uspješno ste postavili vrijeme za RTC modul.

Učitajmo sada glavni program koji će nas obavijestiti SMS-om.

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

Bilješka : Program za podešavanje vremena RTC morate prvo prenijeti u Arduino, a drugi u glavni program (s dovršenim hardverskim postavljanjem), radeći suprotno, projekt neće raditi.

Evo snimke zaslona SMS-a testiranog prototipa:

testirani prototip SMS snimka zaslona:

· Nakon minute uključivanja kruga, dobit ćete SMS s porukom da je sustav spreman.

· Kad voda počne teći kroz senzor, sustav će na vrijeme obavijestiti korisnika.

· Nakon prekida opskrbe vodom, sustav će poslati novo upozorenje i sažeti sesiju s vremenom, prosječnim protokom vode i ukupnom vodom koja se isporučuje u vaš spremnik.

Autorski prototip:

Prototip kruga upozorenja za opskrbu vodom na bazi SMS-a

Imajte na umu da u vrijeme dolaska vode voda mora slobodno teći, što znači da ako postoji zatvoren blok ili slavina, neće vas obavijestiti.

Ako imate bilo kakvih pitanja u vezi s ovim projektom, slobodno izrazite u odjeljku za komentare, možda ćete dobiti brzi odgovor.




Prethodno: Inkubator koji koristi Arduino s automatskom kontrolom temperature i vlage Dalje: 3 najbolja pretvaračka sklopa bez transformatora