Varovný systém dodávky vody založený na SMS

Vyskúšajte Náš Nástroj Na Odstránenie Problémov





V tomto príspevku zostrojíme obvod, ktorý používateľa upozorní prostredníctvom SMS, ak sa spustí prívod vody do vašej oblasti / domu. Môže zobrazovať čas, kedy voda začína dodávať a končí, priemerná rýchlosť prietoku vody v litroch za minútu a celková voda dodaná do vašej nádrže v litroch.

Úvod

Všetci vieme, že život na Zemi je nemožný bez vody, ako ľudských bytostí používame viac vody než konzumuje akýkoľvek iný druh na zemi, a to nielen pre naše prežitie, ale aj pre splnenie našich luxusných potrieb.



Vodu nielen konzumujeme, ale aj kontaminujeme vodné útvary. Spotreba a dopyt po vode bude v nasledujúcich desaťročiach prudko stúpať.

Ako občan sveta je našou povinnosťou šetriť vodou, ale ako jednotlivec nemusíme uspokojiť smäd celého sveta šetrením vodou, ale určite môžeme uspokojiť smäd našej rodiny, pretože by sme mohli mať zdravé množstvo vody na krátke obdobie , aj keď nikto v našom okolí nešetril vodou pre budúcnosť.



Dodávka vody v Indii a ďalších rýchlo sa rozvíjajúcich krajinách je obmedzená a tiež na vysoký dopyt. Navyše, dodávka vody môže začať bez oficiálneho oznámenia miestnej samosprávy. Tento projekt tento problém vyrieši za nás.

Teraz sa ponoríme do technických detailov projektu.

Okruh:

Obvod sa skladá z a snímač prietoku vody YF-S201, doska Arduino, ktorá je mozgom projektu, a GSM modul (SIM 800 alebo SIM 900) na príjem SMS upozornení na prívod vody a hodinový modul v reálnom čase na sledovanie správneho času pre začatie a ukončenie prívodu vody.

Na napájanie dosky Arduino a modulu GSM je žiaduce 9 voltové napájanie. Odporúča sa napájanie z 9V adaptérov alebo domáceho dobre zabudovaného napájacieho zdroja založeného na transformátore (LM 7809).

Obvod upozornenia na prívod vody založený na SMS

Spojenie medzi Arduino a GSM modulom je nasledovné:

GSM modul Arduino TX na RX

GSM modul Arduino RX na TX

Arduino GND na GND GSM modul

Nikdy sa nepokúšajte napájať GSM modul z 5V výstupného kolíka Arduina na 5V vstup GSM modulu.

RTC alebo hodinový modul v reálnom čase bude sledovať čas príchodu vody a ukončenia dodávky vody.

Tým je hardware ukončený.

Aby sme nastavili čas na RTC, musíme nahrať program na nastavenie času do RTC s dokončeným nastavením hardvéru. Týmto sa synchronizuje čas vo vašom počítači s RTC.

Stiahnite si súbor knižnice RTC: github.com/PaulStoffregen/DS1307RTC

Program pre nastavenie času na 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
}
//-----------------------------------------------------------//

· Nahrajte vyššie uvedený kód s dokončeným hardvérom.

· Otvorte sériový monitor a ukazuje, že je nastavený čas.

· Teraz ste pripravení prejsť na ďalší krok.

Úspešne ste nastavili čas pre modul RTC.

Teraz nahrajme hlavný program, ktorý nás upozorní prostredníctvom SMS.

Hlavný program:

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

Poznámka : Najprv musíte nahrať program nastavenia času RTC do Arduina a potom hlavný program druhý (s dokončeným nastavením hardvéru), naopak, projekt nebude fungovať.

Tu je snímka obrazovky testovaného prototypu SMS:

testovaná obrazovka prototypu SMS:

· Po minúte zapnutia obvodu dostanete SMS, že systém je pripravený.

· Keď voda začne tiecť snímačom, systém o tom bude užívateľa včas informovať.

· Po ukončení dodávky vody systém odošle ďalšie varovanie a zhrnie reláciu s časom, priemerným prietokom vody a celkovým množstvom vody dodanej do vašej nádrže.

Autorský prototyp:

Prototyp varovného obvodu dodávky vody na základe SMS

Upozorňujeme, že v čase príchodu vody musí voda voľne pretekať, čo znamená, že ak je nejaký blok alebo kohútik, ktorý je zatvorený, nebude vás o tom informovať.

Ak máte akékoľvek otázky týkajúce sa tohto projektu, neváhajte ich vyjadriť v sekcii komentárov, môžete dostať rýchlu odpoveď.




Predchádzajúci: Inkubátor využívajúci Arduino s automatickou reguláciou teploty a vlhkosti Ďalej: 3 najlepšie beztransformátorové invertorové obvody