SMS alapú vízellátási riasztórendszer

Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére





Ebben a bejegyzésben felépítünk egy áramkört, amely SMS-ben értesíti a felhasználót, ha megkezdődik a vízellátás az Ön területén / otthonában. Megmutathatja a víz ellátásának és befejezésének idejét, az átlagos vízáramlási sebességet liter / percben és a tartályba juttatott teljes víz literben.

Bevezetés

Mindannyian tudjuk, hogy a földi élet lehetetlen víz nélkül, mint ember több vizet használunk mint bármely más faj a földön fogyaszt, nemcsak túlélésünk, hanem luxusszükségleteink kielégítése érdekében is.



Nem csak vizet fogyasztunk, hanem a víztesteket is szennyezzük. A vízfogyasztás és az igény a következő évtizedekben az egekbe szökik.

Világpolgárként kötelességünk megtakarítani a vizet, de egyénként nem biztos, hogy az egész világ szomjúságát vízmegtakarítással elégítjük ki, de határozottan kielégíthetjük családunk szomjúságát, mivel rövid ideig egészséges vízmennyiségünk lehet. , még akkor is, ha körülöttünk senki sem takarított meg vizet a jövőre nézve.



Indiában és más gyorsan fejlődő országokban a vízellátás korlátozott, és szintén nagy a kereslet, ráadásul a vízellátás megkezdődhet a helyi önkormányzat hivatalos értesítése nélkül. Ez a projekt megoldja ezt a kérdést számunkra.

Most merüljünk el a projekt technikai részleteiben.

Az áramkör:

Az áramkör a vízáramlás érzékelő YF-S201, egy Arduino tábla, amely a projekt agya, a GSM modul (SIM 800 vagy SIM 900) SMS-értesítések fogadására a vízellátásról és egy valós idejű óramodulról a vízellátás megindításának és a vízellátás befejezésének pontos idejének követésére.

Az Arduino kártya és a GSM modul áramellátásához 9 voltos tápfeszültség szükséges, ajánlott a tápellátást 9 V-os adapterekből vagy házi készítésű, transzformátor alapú (LM 7809) tápegységből biztosítani.

SMS alapú vízellátási riasztási áramkör

Az Arduino és a GSM modul közötti kapcsolat az alábbiak szerint:

Arduino TX - RX GSM modul

Arduino RX to TX GSM modul

Arduino GND - GND GSM modul

Soha ne próbálja táplálni a GSM modult az Arduino 5 V kimeneti tűjétől a GSM modul 5 V bemenetéig.

Az RTC vagy a valós idejű óra modul nyomon követi a víz érkezési idejét és a vízellátás megszüntetését.

Ezzel lezárul a hardver.

Az RTC idő beállításához fel kell töltenünk az időbeállító programot az RTC-re a befejezett hardverbeállítással. Ez szinkronizálja a számítógépen töltött időt az RTC-vel.

Töltse le az RTC könyvtárfájlt: github.com/PaulStoffregen/DS1307RTC

Program az idő beállítására az RTC-n:

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

· Töltse fel a fenti kódot befejezett hardverrel.

· Nyissa meg a soros monitort, és az azt mutatja, hogy az idõ beállítva van.

· Most már készen áll a következő lépésre.

Sikeresen beállította az időt az RTC modulra.

Töltsük fel a fő programot, amely SMS-ben értesít minket.

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

jegyzet : Először feltöltened kell az RTC időbeállítási programot az Arduino-ra, a másodikat pedig a főprogramra (a hardver teljes beállításával), ellenkezőleg, a projekt nem fog működni.

Itt van a tesztelt prototípus SMS képernyője:

tesztelt prototípus SMS képernyője:

· Az áramkör egy perces bekapcsolása után kap egy SMS-t, amely szerint a rendszer készen áll.

· Amikor a víz átfolyik az érzékelőn, a rendszer időben értesíti a felhasználót.

· A vízellátás megszűnése után a rendszer újabb riasztást küld, és összefoglalja a munkamenetet az idővel, az átlagos vízhozammal és a tartályba leadott teljes vízmennyiséggel.

A szerző prototípusa:

Az SMS alapú vízellátási riasztási áramkör prototípusa

Felhívjuk figyelmét, hogy a víz megérkezésekor a víznek szabadon kell áramolnia, vagyis ha van olyan zárt blokk vagy csap, amely nem értesíti Önt.

Ha bármilyen kérdése van a projekttel kapcsolatban, nyugodtan fejtse ki a megjegyzés rovatban, így gyors választ kaphat.




Előző: Inkubátor Arduino használatával automatikus hőmérséklet és páratartalom szabályozással Következő: 3 legjobb transzformátor nélküli inverter áramkör