Sistema ng Alerto sa Supply ng Tubig na Batay sa SMS

Subukan Ang Aming Instrumento Para Sa Pagtanggal Ng Mga Problema





Sa post na ito ay magtatayo kami ng isang circuit na aabisuhan ang gumagamit sa pamamagitan ng SMS kung ang supply ng tubig sa iyong lugar / bahay ay pinasimulan. Maaari itong ipakita ang oras kung kailan ang tubig ay nagsisimulang magbigay at natapos, average na bilis ng daloy ng tubig sa litro bawat minuto at kabuuang tubig na naihatid sa iyong tangke sa litro.

Panimula

Alam nating lahat na ang buhay sa mundo ay imposible kung walang tubig, bilang tao gumagamit kami ng mas maraming tubig kaysa sa anumang iba pang mga species sa mundo na natupok, hindi lamang para sa aming kaligtasan ngunit din upang matugunan ang aming mga pangangailangan sa luho.



Hindi lamang tayo kumakain ng tubig ngunit din ay nagpapahawa sa mga katawang tubig. Ang pagkonsumo ng tubig at pangangailangan ay papataas sa mga darating na dekada.

Bilang isang mamamayan sa mundo, tungkulin nating makatipid ng tubig, ngunit bilang isang indibidwal maaaring hindi natin nasiyahan ang pagkauhaw sa buong mundo sa pamamagitan ng pag-save ng tubig ngunit, tiyak na masisiyahan natin ang pagkauhaw ng aming pamilya dahil mayroon kaming malusog na dami ng tubig sa maikling panahon. , kahit na walang sinuman sa paligid namin ang nag-save ng tubig para sa hinaharap.



Ang supply ng tubig sa India at iba pang mabilis na umuunlad na mga bansa ay limitado at mataas din ang demand, bukod dito ang supply ng tubig ay maaaring magsimula nang walang anumang opisyal na abiso mula sa lokal na pamahalaan. Malulutas ng proyektong ito ang isyung ito para sa amin.

Ngayon ay sumisid tayo sa mga teknikal na detalye ng proyekto.

Ang Circuit:

Ang circuit ay binubuo ng a sensor ng daloy ng tubig Ang YF-S201, isang Arduino board na utak ng proyekto, a Module ng GSM (SIM 800 o SIM 900) para sa pagtanggap ng mga alerto sa SMS sa supply ng tubig at isang real time module na orasan para sa pagsubaybay sa tamang oras para sa pagsisimula ng supply ng tubig at pagwawakas ng supply ng tubig.

Ang supply ng 9 Volt ay kanais-nais para sa paggana ng Arduino board at ng module ng GSM, inirerekumenda na ibigay ang supply ng kuryente mula sa 9V adapters o homemade well-built, transformer based (LM 7809) supply.

Linya ng Alerto sa Pag-supply ng Tubig na Batay sa SMS

Ang koneksyon sa pagitan ng Arduino at GSM module tulad ng sumusunod:

Arduino TX sa module na RX GSM

Arduino RX sa TX GSM module

Arduino GND sa module ng GND GSM

Huwag kailanman subukang paganahin ang module ng GSM mula sa 5V output pin ng Arduino sa 5V input ng GSM module.

Susubaybayan ng RTC o module ng real time na orasan ang oras ng pagdating ng tubig at pagwawakas ng supply ng tubig.

Tinapos nito ang hardware.

Upang maitakda ang oras sa RTC kailangan naming mag-upload ng programa ng setting ng oras sa RTC kasama ang nakumpletong pag-setup ng hardware. Sasa-sync nito ang oras sa iyong computer sa RTC.

I-download ang RTC library file: github.com/PaulStoffregen/DS1307RTC

Programa para sa pagtatakda ng oras sa 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
}
//-----------------------------------------------------------//

· I-upload ang code sa itaas na may kumpletong hardware.

· Buksan ang serial monitor at nagpapakita ito ng oras na naitakda.

· Ngayon handa ka nang lumipat sa susunod na hakbang.

Matagumpay mong naitakda ang oras sa module ng RTC.

Ngayon, i-upload natin ang pangunahing programa na aabisuhan sa amin sa pamamagitan ng SMS.

Pangunahing Programa:

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

Tandaan : Dapat mong i-upload ang programa ng pagtatakda ng oras ng RTC sa Arduino muna at ang pangalawang pangunahing programa (na may kumpletong pag-setup ng hardware), ginagawa ang kabaligtaran, hindi gagana ang proyekto.

Narito ang shot ng SMS na nasubok na prototype na larawan:

nasubukan ang shot ng screen ng SMS ng prototype:

· Pagkatapos ng isang minutong pag-power sa circuit ON, makakakuha ka ng isang SMS na nagsasabing handa na ang system.

· Kapag nagsimulang dumaloy ang tubig sa pamamagitan ng sensor, aabisuhan ng system ang gumagamit sa oras.

· Matapos ang pagwawakas ng suplay ng tubig ang sistema ay magpapadala ng isa pang alerto at ibubuod ang sesyon ng oras, average na daloy ng tubig at kabuuang tubig na naihatid sa iyong tangke.

Prototype ng may-akda:

Prototype ng Circuit Alert ng Pag-supply ng Tubig na Batay sa SMS

Mangyaring tandaan na sa oras ng pagdating ng tubig ang tubig ay dapat na libreng daloy, ibig sabihin kung mayroong anumang bloke o gripo na sarado ay hindi aabisuhan ka.

Kung mayroon kang anumang mga katanungan tungkol sa proyektong ito, huwag mag-atubiling ipahayag sa seksyon ng komento, maaari kang makatanggap ng mabilis na tugon.




Nakaraan: Incubator na Gumagamit ng Arduino na may awtomatikong Temperatura at kontrol sa Humidity Susunod: 3 Pinakamahusay na Transformerless Inverter Circuits