SMS-põhine veevarustuse häiresüsteem

Proovige Meie Instrumenti Probleemide Kõrvaldamiseks





Selles postituses ehitame vooluringi, mis teavitab kasutajat SMS-iga, kui teie piirkonna / kodu veevarustus on algatatud. See võib näidata aega, mil vesi hakkab tarnima ja lõppema, veevoolu keskmist kiirust liitrites minutis ja teie mahutisse tarnitud kogu vee liitrites.

Sissejuhatus

Me kõik teame, et elu maa peal on inimesteta võimatu ilma veeta me kasutame rohkem vett kui ükski teine ​​liik maa peal tarbib, mitte ainult meie ellujäämiseks, vaid ka luksusvajaduste rahuldamiseks.



Me ei tarbi mitte ainult vett, vaid saastame ka veekogusid. Järgnevatel aastakümnetel kasvab veetarbimine ja nõudlus hüppeliselt.

Maailmakodanikuna on meie kohus säästa vett, kuid üksikisikuna ei pruugi me vee säästmisega kogu maailma janu rahuldada, kuid võime kindlasti rahuldada oma pere janu, kuna meil võib olla lühikese aja jooksul tervislik kogus vett , isegi kui keegi meie ümber ei säästnud tulevikuks vett.



Veevarustus Indias ja teistes kiiresti arenevates riikides on piiratud ja nõudlik ka, lisaks saab veevarustust alustada ilma kohaliku omavalitsuse ametliku teateta. See projekt lahendab selle probleemi meie jaoks.

Nüüd uurime projekti tehnilisi üksikasju.

Vooluring:

Vooluring koosneb a veevooluandur YF-S201, Arduino tahvel, mis on projekti aju, a GSM moodul (SIM 800 või SIM 900) veevarustuse SMS-teadete ja reaalajas kellamooduli saamiseks veevarustuse käivitamise ja veevarustuse lõpetamise õige aja jälgimiseks.

Arduino plaadi ja GSM-mooduli toitmiseks on soovitav kasutada 9-voldist toiteallikat. Toiteallikat on soovitatav varustada 9V-adapteritest või omatehtud hästi ehitatud trafopõhisest (LM 7809) toiteallikast.

SMS-põhine veevarustuse häirelülitus

Arduino ja GSM-mooduli vaheline ühendus on järgmine:

Arduino TX to RX GSM moodul

Arduino RX to TX GSM moodul

Arduino GND - GND GSM moodul

Ärge kunagi proovige toita GSM-moodulit Arduino 5V väljundpistikust kuni GSM-mooduli 5V sisendini.

RTC või reaalajas kellamoodul jälgib vee saabumise aega ja veevarustuse lõppemist.

See lõpetab riistvara.

RTC-i aja määramiseks peame aja seadistamise programmi üles laadima RTC-sse koos täieliku riistvara seadistusega. See sünkroonib teie arvutis oleva aja RTC-ga.

Laadige alla RTC teegi fail: github.com/PaulStoffregen/DS1307RTC

RTC aja määramise programm:

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

· Laadige ülaltoodud kood koos komplekteeritud riistvaraga üles.

· Avage jademonitor ja see näitab, et aeg on määratud.

· Nüüd olete valmis liikuma järgmisele sammule.

RTC mooduli jaoks on aeg edukalt määratud.

Nüüd laadime üles põhiprogrammi, mis teavitab meid SMS-iga.

Põhiprogramm:

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

Märge : Peate esmalt Arduinole üles laadima RTC aja seadistamise programmi ja teiseks (koos riistvara lõpuleviimisega) põhiprogrammi, tehes vastupidist, projekt ei tööta.

Siin on testitud prototüübi SMS-i ekraanipilt:

testitud prototüübi SMS-i ekraanipilt:

· Pärast minutilist vooluahela sisselülitamist saate SMS-i, mis ütleb, et süsteem on valmis.

· Kui vesi hakkab anduri kaudu voolama, teavitab süsteem sellest kasutajat õigeaegselt.

· Pärast veevarustuse lõppemist saadab süsteem uue hoiatuse ja võtab kokkuvõtte seansist koos aja, keskmise veevoolu ja kogu teie mahutisse tarnitud veega.

Autori prototüüp:

SMS-põhise veevarustuse häirelülituse prototüüp

Pange tähele, et vee saabumisel peab vesi vabalt voolama, mis tähendab, et suletud ploki või kraani korral ei teavita teid sellest.

Kui teil on selle projektiga seotud küsimusi, võite seda kommentaaride jaotises vabalt väljendada, võite saada kiire vastuse.




Eelmine: Inkubaator Arduino abil automaatse temperatuuri ja niiskuse juhtimisega Järgmine: 3 parimat trafota inverterit