SMS balstīta ūdensapgādes trauksmes sistēma

Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai





Šajā ziņojumā mēs izveidosim ķēdi, kas paziņos lietotājam, izmantojot īsziņu, ja tiks uzsākta ūdens piegāde jūsu teritorijai / mājai. Tas var parādīt laiku, kad ūdens tiek piegādāts un beidzies, vidējo ūdens plūsmas ātrumu litros minūtē un kopējo ūdens daudzumu, kas piegādāts jūsu tvertnei litros.

Ievads

Mēs visi zinām, ka dzīve uz zemes nav iespējama bez ūdens kā cilvēkiem mēs izmantojam vairāk ūdens nekā jebkura cita suga uz zemes patērē ne tikai mūsu izdzīvošanai, bet arī luksusa vajadzību apmierināšanai.



Mēs ne tikai patērējam ūdeni, bet arī piesārņojam ūdenstilpes. Nākamajās desmitgadēs ūdens patēriņš un pieprasījums pieaugs strauji.

Kā pasaules pilsonim mūsu pienākums ir taupīt ūdeni, taču kā indivīds, iespējams, neapmierinās visas pasaules slāpes, taupot ūdeni, bet noteikti varam apmierināt savas ģimenes slāpes, jo uz īsu laika periodu mums varētu būt veselīgs ūdens daudzums. , pat ja neviens no mums apkārt netaupīja ūdeni nākotnei.



Ūdens padeve Indijā un citās strauji jaunattīstības valstīs ir ierobežota un arī pēc liela pieprasījuma, turklāt ūdens piegādi var sākt bez oficiāla vietējās valdības paziņojuma. Šis projekts atrisinās šo jautājumu mūsu vietā.

Tagad iedziļināsimies projekta tehniskajās detaļās.

Ķēde:

Ķēde sastāv no a ūdens plūsmas sensors YF-S201, Arduino dēlis, kas ir projekta smadzenes, a GSM modulis (SIM 800 vai SIM 900) SMS brīdinājumu saņemšanai par ūdens piegādi un reālā laika pulksteņa moduli, lai izsekotu pareizu laiku ūdens piegādes uzsākšanai un ūdens padeves pārtraukšanai.

9 voltu barošana ir vēlama, lai darbinātu Arduino plāksni un GSM moduli. Ieteicams nodrošināt barošanu no 9 V adapteriem vai pašmāju labi uzbūvēta, uz transformatora bāzes (LM 7809).

SMS balstīta ūdensapgādes trauksmes shēma

Savienojums starp Arduino un GSM moduli ir šāds:

Arduino TX to RX GSM modulis

Arduino RX to TX GSM modulis

Arduino GND to GND GSM modulis

Nekad nemēģiniet barot GSM moduli no Arduino 5V izejas tapas līdz GSM moduļa 5V ieejai.

RTC jeb reālā laika pulksteņa modulis izsekos ūdens ienākšanas un ūdens padeves pārtraukšanas laikam.

Ar to noslēdzas aparatūra.

Lai iestatītu laiku RTC, mums ir jāaugšupielādē laika iestatīšanas programma RTC ar pabeigtu aparatūras iestatīšanu. Tas sinhronizēs jūsu datora laiku ar RTC.

Lejupielādējiet RTC bibliotēkas failu: github.com/PaulStoffregen/DS1307RTC

Laika iestatīšanas programma 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
}
//-----------------------------------------------------------//

· Augšupielādējiet iepriekš minēto kodu ar pabeigtu aparatūru.

· Atveriet sērijveida monitoru, un tas parāda, ka ir iestatīts laiks.

· Tagad jūs esat gatavs pāriet uz nākamo soli.

Jūs veiksmīgi iestatījāt laiku RTC modulim.

Tagad augšupielādēsim galveno programmu, kas mūs informēs, izmantojot īsziņu.

Galvenā programma:

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

Piezīme : RTC laika iestatīšanas programma vispirms ir jāaugšupielādē Arduino, bet otrā - galvenā programma (ar pabeigtu aparatūras iestatīšanu), rīkojoties pretēji, projekts nedarbosies.

Šeit ir pārbaudītā prototipa īsziņu ekrāna attēls:

pārbaudīts prototipa īsziņu ekrāns:

· Pēc minūtes ieslēdzot ķēdi, jūs saņemsit īsziņu ar paziņojumu, ka sistēma ir gatava.

· Kad ūdens sāk plūst caur sensoru, sistēma par to informēs lietotāju.

· Pēc ūdens padeves pārtraukšanas sistēma nosūtīs vēl vienu brīdinājumu un apkopos sesiju ar laiku, vidējo ūdens plūsmu un kopējo ūdens daudzumu, kas piegādāts jūsu tvertnei.

Autora prototips:

Ūdensapgādes trauksmes ķēdes, kuras pamatā ir SMS, prototips

Lūdzu, ņemiet vērā, ka ūdens ienākšanas laikā ūdenim ir jābrīvo brīvi, tas nozīmē, ka, ja ir aizvērts kāds bloks vai krāns, tas jums par to neziņos.

Ja jums ir kādi jautājumi par šo projektu, nekautrējieties izteikties komentāru sadaļā, iespējams, saņemsit ātru atbildi.




Pāri: Inkubators, izmantojot Arduino ar automātisku temperatūras un mitruma kontroli Nākamais: 3 labākās bez transformatora pārveidotāju shēmas