Система за предупреждение за водоснабдяване чрез SMS

Опитайте Нашия Инструмент За Премахване На Проблемите





В тази публикация ще изградим верига, която ще уведомява потребителя чрез SMS, ако е започнало водоснабдяването до вашия район / дом. Той може да показва времето, когато водата започва да се подава и приключва, средната скорост на водния поток в литър в минута и общата вода, доставена в резервоара ви в литри.

Въведение

Всички знаем, че животът на земята е невъзможен без вода, както хората използваме повече вода отколкото всеки друг вид на земята консумира, не само за нашето оцеляване, но и за да отговори на нашите луксозни нужди.



Ние не само консумираме вода, но и замърсяваме водните тела. Потреблението и търсенето на вода ще скочат стремително през следващите десетилетия.

Като световен гражданин е наш дълг да пестим вода, но като човек може да не задоволим жаждата на целия свят, като спестим вода, но определено можем да задоволим жаждата на нашето семейство, тъй като може да имаме здравословно количество вода за кратък период от време , дори ако никой около нас не спестява вода за бъдещето.



Доставката на вода в Индия и други бързо развиващи се страни е ограничена и също така е с голямо търсене, освен това водоснабдяването може да започне без официално уведомление от местното правителство. Този проект ще реши този проблем за нас.

Сега да се потопим в техническите подробности за проекта.

Веригата:

Веригата се състои от a сензор за воден поток YF-S201, дъска на Arduino, която е мозъкът на проекта, a GSM модул (SIM 800 или SIM 900) за получаване на SMS сигнали за водоснабдяване и модул с часовник в реално време за проследяване на точното време за иницииране и прекратяване на водоснабдяването.

Захранване от 9 волта е желателно за захранване на платката Arduino и GSM модула, препоръчително е да се осигури захранване от 9V адаптери или домашно добре изградено, на базата на трансформатор (LM 7809) захранване.

Сигнална схема за водоснабдяване, базирана на SMS

Връзката между Arduino и GSM модула, както следва:

Arduino TX към RX GSM модул

Arduino RX към TX GSM модул

Arduino GND към GND GSM модул

Никога не се опитвайте да захранвате GSM модула от 5V изходен щифт на Arduino към 5V вход на GSM модула.

Модулът RTC или часовник в реално време ще проследява времето на пристигане на вода и прекратяване на водоснабдяването.

Това завършва хардуера.

За да зададем времето на RTC, трябва да качим програма за настройка на времето в RTC с завършената хардуерна настройка. Това ще синхронизира времето на вашия компютър с RTC.

Изтеглете файла на RTC библиотеката: github.com/PaulStoffregen/DS1307RTC

Програма за настройка на времето на 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
}
//-----------------------------------------------------------//

· Качете горния код с завършен хардуер.

· Отворете серийния монитор и той показва, че времето е настроено.

· Сега сте готови да преминете към следващата стъпка.

Успешно зададете време за RTC модула.

Сега нека качим основната програма, която ще ни уведоми чрез SMS.

Основна програма:

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

Забележка : Трябва първо да качите програмата за настройка на времето RTC в Arduino и втората основната програма (с завършена хардуерна настройка), като направите обратното, проектът няма да работи.

Ето снимката на екрана за SMS на тествания прототип:

тестван прототип на SMS екранен изстрел:

· След минута включване на веригата ON, ще получите SMS, казващ, че системата е готова.

· Когато водата започне да тече през сензора, системата ще уведоми потребителя навреме.

· След прекратяване на водоснабдяването системата ще изпрати ново предупреждение и ще обобщи сесията с времето, средния воден поток и общата вода, доставена във вашия резервоар.

Прототип на автора:

Прототип на SMS базирана схема за водоснабдяване

Моля, обърнете внимание, че по време на пристигането на водата водата трябва да тече свободно, което означава, че ако има затворен блок или кран, няма да ви уведоми.

Ако имате някакви въпроси относно този проект, не се колебайте да изразите в раздела за коментари, може да получите бърз отговор.




Предишен: Инкубатор, използващ Arduino с автоматичен контрол на температурата и влажността Напред: 3 най-добри трансформаторни инверторни схеми