SMS-pohjainen vesihuollon hälytysjärjestelmä

Kokeile Instrumenttia Ongelmien Poistamiseksi





Tässä viestissä aiomme rakentaa piirin, joka ilmoittaa käyttäjälle tekstiviestillä, jos vesihuolto alueellesi / kotisi aloitetaan. Se voi näyttää ajan, jolloin vesi alkaa ja loppuu, keskimääräinen veden virtausnopeus litroina minuutissa ja säiliöön toimitettu kokonaisvesi litroina.

Johdanto

Me kaikki tiedämme, että elämä maan päällä on mahdotonta ilman vettä, ihmisinä käytämme enemmän vettä kuin mitä tahansa muuta maapallolajia kuluttaa paitsi selviytymisemme että myös ylellisyystarpeidemme tyydyttämiseksi.



Emme vain kuluta vettä, vaan myös saastuttavat vesimuodostumia. Vedenkulutus ja kysyntä nousevat taivaalle tulevina vuosikymmeninä.

Maailmankansana velvollisuutemme on säästää vettä, mutta yksilönä emme välttämättä tyydytä koko maailman janoa säästämällä vettä, mutta voimme varmasti tyydyttää perheemme jano, koska meillä saattaa olla terveellistä määrää vettä lyhyeksi ajaksi , vaikka kukaan ympärillämme ei säästäisi vettä tulevaisuutta varten.



Veden saanti Intiassa ja muissa nopeasti kehittyvissä maissa on rajallista ja myös suurta kysyntää. Lisäksi vesihuolto voi alkaa ilman paikallishallinnon virallista ilmoitusta. Tämä projekti ratkaisee tämän ongelman meille.

Sukelletaan nyt projektin teknisiin yksityiskohtiin.

Piiri:

Piiri koostuu a veden virtausanturi YF-S201, Arduino-kortti, joka on projektin aivot, a GSM-moduuli (SIM 800 tai SIM 900) tekstiviesti-ilmoitusten vastaanottamiseksi vesihuollosta ja reaaliaikakellomoduulista oikean ajan seuraamiseksi vesihuollon aloittamiselle ja lopettamiselle.

9 voltin syöttö on toivottavaa Arduino-kortin ja GSM-moduulin virran saamiseksi, on suositeltavaa syöttää virtalähde 9 V: n sovittimista tai kotitekoisista, hyvin rakennettuista, muuntajiin perustuvista (LM 7809) virtalähteistä.

SMS-pohjainen vesihuollon hälytyspiiri

Yhteys Arduinon ja GSM-moduulin välillä seuraavasti:

Arduino TX to RX GSM -moduuli

Arduino RX to TX GSM -moduuli

Arduino GND - GND GSM-moduuli

Älä koskaan yritä virtaa GSM-moduuliin Arduinon 5 V: n lähtöliittimestä GSM-moduulin 5 V: n tuloon.

RTC tai reaaliaikainen kellomoduuli seuraa veden saapumisaikaa ja vesihuollon päättymistä.

Se päättää laitteiston.

RTC: n ajan asettamiseksi meidän on ladattava aika-asetusohjelma RTC: lle, kun laitteiston asennus on valmis. Tämä synkronoi tietokoneesi ajan RTC: hen.

Lataa RTC-kirjastotiedosto: github.com/PaulStoffregen/DS1307RTC

RTC-ajan asettamisohjelma:

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

· Lataa yllä oleva koodi valmiilla laitteilla.

· Avaa sarjavalvonta ja se näyttää kellonajan.

· Nyt olet valmis siirtymään seuraavaan vaiheeseen.

Olet asettanut ajan RTC-moduulille.

Lataa nyt pääohjelma, joka ilmoittaa meille tekstiviestillä.

Pääohjelma:

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

Huomautus : Sinun on ladattava RTC-ajanasetusohjelma ensin Arduinoon ja toinen pääohjelmaan (kun laitteiston asennus on valmis), päinvastoin, projekti ei toimi.

Tässä on testatun prototyypin SMS-näyttökuva:

testatun prototyypin SMS-näyttökuva:

· Kun piiri on kytketty päälle minuutin kuluttua, saat tekstiviestin, jossa ilmoitetaan, että järjestelmä on valmis.

· Kun vesi alkaa virrata anturin läpi, järjestelmä ilmoittaa siitä käyttäjälle ajoissa.

· Kun vesihuolto on lopetettu, järjestelmä lähettää uuden hälytyksen ja tiivistää istunnon ajan, keskimääräisen vesivirtauksen ja säiliöön syötetyn veden kokonaismäärän.

Kirjoittajan prototyyppi:

SMS-pohjaisen vesihuoltohälytyspiirin prototyyppi

Huomioithan, että veden saapuessa veden on oltava vapaata, mikä tarkoittaa, että jos suljettuja tukoksia tai hanoja on, se ei ilmoita siitä sinulle.

Jos sinulla on kysyttävää tästä projektista, ilmaise mielipiteesi kommenttiosassa, saatat saada nopean vastauksen.




Edellinen: Inkubaattori, jossa käytetään Arduinoa automaattisella lämpötilan ja kosteuden säädöllä Seuraava: 3 parasta muuntajatonta invertteripiiriä