SMS-basert varslingssystem for vannforsyning

Prøv Instrumentet Vårt For Å Eliminere Problemer





I dette innlegget skal vi lage en krets som vil varsle brukeren via SMS hvis vannforsyningen til ditt område / hjem er startet. Den kan vise tidspunktet når vannet begynner å tilføres og avsluttes, gjennomsnittlig vannføringshastighet i liter per minutt og totalt vann levert til tanken din i liter.

Introduksjon

Vi vet alle at livet på jorden er umulig uten vann, som mennesker vi bruker mer vann enn noen annen art på jorden spiser, ikke bare for å overleve, men også for å dekke våre luksusbehov.



Vi bruker ikke bare vann, men forurenser også vannmasser. Vannforbruket og etterspørselen kommer til å skyte i været de neste tiårene.

Som verdensborger er det vår plikt å spare vann, men som individ tilfredsstiller vi kanskje ikke hele verdens tørst ved å spare vann, men vi kan definitivt tilfredsstille familiens tørst, ettersom vi kanskje har sunn mengde vann i en kort periode , selv om ingen rundt oss sparte vann for fremtiden.



Tilførselen av vann i India og andre raskt utviklingsland er begrenset, og det er også høy etterspørsel, dessuten kan vannforsyningen begynne uten noen offisiell melding fra de lokale myndighetene. Dette prosjektet vil løse dette problemet for oss.

La oss nå dykke ned i de tekniske detaljene i prosjektet.

Kretsen:

Kretsen består av en vannstrømningssensor YF-S201, et Arduino-brett som er hjernen til prosjektet, en GSM-modul (SIM 800 eller SIM 900) for mottak av SMS-varsler om vannforsyning og en sanntidsklokke-modul for å spore riktig tid for vannforsyning initiering og avslutning av vannforsyning.

9 Volt-forsyning er ønskelig for å drive Arduino-kortet og GSM-modulen. Det anbefales å levere strømforsyningen fra 9V-adaptere eller hjemmelaget, velbygd, transformatorbasert (LM 7809) forsyning.

SMS-basert varslingskrets for vannforsyning

Forbindelsen mellom 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øk aldri å drive GSM-modulen fra Arduinos 5V utgangsstift til 5V inngang på GSM-modulen.

RTC eller klokkemodulen for sanntid vil spore tidspunktet for ankomst av vann og avslutning av vannforsyningen.

Det avslutter maskinvaren.

For å stille tiden på RTC må vi laste opp tidsinnstillingsprogrammet til RTC med fullført maskinvareoppsett. Dette synkroniserer tiden på datamaskinen din til RTC.

Last ned RTC-biblioteksfilen: github.com/PaulStoffregen/DS1307RTC

Program for innstilling av 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
}
//-----------------------------------------------------------//

· Last opp koden ovenfor med fullført maskinvare.

· Åpne den serielle skjermen, og den viser at tiden er innstilt.

· Nå er du klar til å gå videre til neste trinn.

Du har angitt tid til RTC-modulen.

La oss nå laste opp hovedprogrammet som vil varsle oss 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-----//

Merk : Du må laste opp RTC-tidsinnstillingsprogrammet til Arduino først og hovedprogrammet andre (med fullført maskinvareoppsett). Hvis du gjør det motsatte, vil ikke prosjektet fungere.

Her er den testede prototypens SMS-skjermbilde:

testet prototypens SMS-skjermbilde:

· Etter et minutt å slå på kretsen, får du en SMS som sier at systemet er klart.

· Når vannet begynner å strømme gjennom sensoren, vil systemet varsle brukeren med tiden.

· Etter at vannforsyningen er avsluttet, vil systemet sende et nytt varsel og oppsummere økten med tid, gjennomsnittlig vannføring og totalt vann levert til tanken din.

Forfatterens prototype:

Prototype av SMS-basert vannforsyningskrets

Vær oppmerksom på at vannet må strømme fritt, når det kommer til vannet, noe som betyr at hvis det er en blokk eller kran som er lukket, vil det ikke varsle deg.

Hvis du har spørsmål angående dette prosjektet, kan du gjerne uttrykke det i kommentarseksjonen, du kan få et raskt svar.




Forrige: Inkubator ved hjelp av Arduino med automatisk temperatur- og fuktighetskontroll Neste: 3 beste transformatorløse inverterkretser