SMS-baseret vandforsyningsalarmsystem

Prøv Vores Instrument Til At Fjerne Problemer





I dette indlæg skal vi konstruere et kredsløb, der giver brugeren besked via SMS, hvis vandforsyningen til dit område / hjem startes. Det kan vise det tidspunkt, hvor vandet begynder at forsyne og slutte, den gennemsnitlige vandflowhastighed i liter pr. Minut og det samlede vand, der leveres til din tank i liter.

Introduktion

Vi ved alle, at livet på jorden er umuligt uden vand, som mennesker vi bruger mere vand end nogen anden art på jorden spiser, ikke kun for vores overlevelse, men også for at imødekomme vores luksusbehov.



Vi spiser ikke kun vand, men forurener også vandområder. Vandforbruget og efterspørgslen vil skyrocket i de kommende årtier.

Som verdensborger er det vores pligt at spare vand, men som individ tilfredsstiller vi måske ikke hele verdens tørst ved at spare vand, men vi kan helt sikkert tilfredsstille vores families tørst, da vi måske har en sund mængde vand i en kort periode , selvom ingen omkring os sparer vand til fremtiden.



Vandforsyningen i Indien og andre hurtigt udviklingslande er begrænset, og også på høj efterspørgsel. Desuden kan vandforsyningen begynde uden nogen officiel underretning fra den lokale regering. Dette projekt løser dette problem for os.

Lad os nu dykke ned i de tekniske detaljer i projektet.

Kredsløbet:

Kredsløbet består af en vandstrømningssensor YF-S201, et Arduino-kort, der er projektets hjerne, en GSM-modul (SIM 800 eller SIM 900) til modtagelse af SMS-advarsler om vandforsyning og et realtidsurmodul til sporing af det korrekte tidspunkt for vandforsyningens initiering og afslutning af vandforsyningen.

9 Volt-forsyning er ønskelig til forsyning af Arduino-kortet og GSM-modulet. Det anbefales at levere strømforsyningen fra 9V-adaptere eller hjemmelavet, velbygget, transformerbaseret (LM 7809) forsyning.

SMS-baseret vandforsyning Alert Circuit

Forbindelsen mellem Arduino og GSM-modul som følger:

Arduino TX til RX GSM-modul

Arduino RX til TX GSM-modul

Arduino GND til GND GSM-modul

Forsøg aldrig at strømforsyne GSM-modulet fra Arduinos 5V-udgangsstift til 5V-indgang på GSM-modulet.

RTC- eller realtidsmodulet sporer tidspunktet for vandets ankomst og afslutningen af ​​vandforsyningen.

Det afslutter hardwaren.

For at indstille tiden på RTC skal vi uploade tidsindstillingsprogrammet til RTC med den færdige hardwareopsætning. Dette synkroniserer tiden på din computer til RTC.

Download RTC-biblioteksfilen: github.com/PaulStoffregen/DS1307RTC

Program til indstilling af tid på 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
}
//-----------------------------------------------------------//

· Upload ovenstående kode med færdig hardware.

· Åbn den serielle skærm, og den viser, at tiden er indstillet.

· Nu er du klar til at gå til næste trin.

Du har indstillet tid til RTC-modulet.

Lad os nu uploade hovedprogrammet, der giver os besked via SMS.

Hovedprogram:

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

Bemærk : Du skal uploade RTC-tidsindstillingsprogrammet til Arduino først og hovedprogrammet andet (med afsluttet hardwareopsætning). Gør det modsatte, projektet fungerer ikke.

Her er den testede prototypes SMS-skærmbillede:

testet prototypes SMS-skærmbillede:

· Efter et minut tænding af kredsløbet får du en SMS, der siger, at systemet er klar.

· Når vandet begynder at strømme gennem sensoren, underretter systemet brugeren med tiden.

· Når vandforsyningen er afsluttet, sender systemet en ny alarm og opsummerer sessionen med tid, gennemsnitlig vandgennemstrømning og samlet vand leveret til din tank.

Forfatterens prototype:

Prototype af SMS-baseret vandforsyning Alert Circuit

Vær opmærksom på, at vandet på tidspunktet for vandets ankomst skal frit strømme, hvilket betyder, at hvis der er en blok eller en hane, der er lukket, vil det ikke give dig besked.

Hvis du har spørgsmål vedrørende dette projekt, er du velkommen til at udtrykke det i kommentarfeltet, du kan muligvis modtage et hurtigt svar.




Forrige: Inkubator ved hjælp af Arduino med automatisk temperatur- og fugtighedskontrol Næste: 3 bedste transformerløse inverter kredsløb