Систем за упозорење на водовод путем СМС-а

Испробајте Наш Инструмент За Елиминисање Проблема





У овом посту ћемо изградити коло које ће обавестити корисника путем СМС-а ако се покрене снабдевање водом вашег подручја / куће. Може приказати време када вода почиње да се завршава и завршава, просечну брзину протока воде у литрима у минути и укупну количину воде која се испоручује у ваш резервоар у литрима.

Увод

Сви знамо да је живот на земљи немогућ без воде као људи користимо више воде него што је конзумира било која друга врста на земљи, не само за опстанак већ и за задовољење луксузних потреба.



Ми не само да трошимо воду већ и загађујемо водена тела. Потрошња и потражња воде ће у наредним деценијама расти у небо.

Као свјетски грађанин наша је дужност да штедимо воду, али као појединац можда нећемо задовољити жеђ цијелог свијета штедећи воду, али дефинитивно можемо задовољити жеђ своје породице јер бисмо могли имати здраву количину воде на краћи временски период , чак и ако нико око нас није штедео воду за будућност.



Снабдевање водом у Индији и другим земљама у брзом развоју је ограничено и такође има велику потражњу, штавише, снабдевање водом може започети без икаквог званичног обавештења локалне владе. Овај пројекат ће решити ово питање за нас.

Сада заронимо у техничке детаље пројекта.

Круг:

Коло се састоји од а сензор протока воде ИФ-С201, Ардуино плоча која је мозак пројекта, а ГСМ модул (СИМ 800 или СИМ 900) за примање СМС упозорења о водоснабдевању и модул са сатом у реалном времену за праћење тачног времена за покретање и прекид снабдевања водом.

За напајање Ардуино плоче и ГСМ модула пожељно је напајање од 9 волти, препоручљиво је обезбедити напајање из 9В адаптера или домаћег добро изграђеног напајања заснованог на трансформатору (ЛМ 7809).

Круг упозорења за водоснабдевање на основу СМС-а

Веза између Ардуина и ГСМ модула је следећа:

Ардуино ТКС то РКС ГСМ модул

Ардуино РКС то ТКС ГСМ модул

Ардуино ГНД у ГНД ГСМ модул

Никада не покушавајте да напајате ГСМ модул са Ардуино-овог 5В излазног пина на 5В улаз ГСМ модула.

РТЦ или сатни модул у реалном времену пратиће време доласка воде и престанка снабдевања водом.

То закључује хардвер.

Да бисмо поставили време на РТЦ, потребно је да на РТЦ пренесемо програм за подешавање времена са завршеним хардверским подешавањем. Ово ће синхронизовати време на рачунару са РТЦ-ом.

Преузмите датотеку РТЦ библиотеке: гитхуб.цом/ПаулСтоффреген/ДС1307РТЦ

Програм за подешавање времена на РТЦ:

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

· Отпремите горњи код са завршеним хардвером.

· Отворите серијски монитор и он показује да је време постављено.

· Сада сте спремни за прелазак на следећи корак.

Успешно сте подесили време за РТЦ модул.

Учитајмо сада главни програм који ће нас обавестити СМС-ом.

Главни програм:

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

Белешка : Програм за подешавање времена РТЦ морате прво отпремити у Ардуино, а други у главни програм (са завршеним хардверским подешавањем), радећи супротно, пројекат неће функционисати.

Ево снимка екрана СМС-а тестираног прототипа:

тестирани прототипов СМС снимак екрана:

· Након минутног укључивања кола, добићете СМС са поруком да је систем спреман.

· Када вода почне да тече кроз сензор, систем ће на време обавестити корисника.

· Након престанка снабдевања водом, систем ће послати ново упозорење и резимирати сесију са временом, просечним протоком воде и укупном водом испорученом у ваш резервоар.

Ауторски прототип:

Прототип круга упозорења за водоснабдевање заснованог на СМС-у

Имајте на уму да у тренутку доласка воде вода мора слободно тећи, што значи да ако постоји нека блокада или славина која је затворена, неће вас обавестити.

Ако имате било каквих питања у вези са овим пројектом, слободно изразите у одељку за коментаре, можда ћете добити брзи одговор.




Претходно: Инкубатор који користи Ардуино са аутоматском контролом температуре и влажности Следеће: 3 најбоља претварачка кола без трансформатора