SMS Tabanlı Su Temini Uyarı Sistemi

Sorunları Ortadan Kaldırmak Için Enstrümanımızı Deneyin





Bu yazımızda, bölgenize / evinize su temini başlatılırsa kullanıcıyı SMS ile bilgilendirecek bir devre inşa edeceğiz. Suyun beslenmeye başlandığı ve sona erdiği zamanı, dakikada litre cinsinden ortalama su akış hızını ve tankınıza teslim edilen toplam suyu litre cinsinden gösterebilir.

Giriş

Hepimiz biliyoruz ki yeryüzünde insanoğlu gibi susuz hayat imkansızdır daha çok su kullanıyoruz Dünyadaki diğer türlerin tükettiğinden daha fazla, sadece hayatta kalmak için değil, aynı zamanda lüks ihtiyaçlarımızı karşılamak için.



Sadece su tüketmiyoruz, aynı zamanda su kütlelerini de kirletiyoruz. Su tüketimi ve talebi önümüzdeki on yıllarda fırlayacak.

Bir dünya vatandaşı olarak sudan tasarruf etmek bizim görevimizdir, ancak birey olarak su tasarrufu yaparak tüm dünyanın susuzluğunu gideremeyebiliriz, ancak kısa bir süre sağlıklı miktarda suya sahip olabileceğimiz için ailemizin susuzluğunu kesinlikle giderebiliriz , çevremizdeki hiç kimse geleceğe su tasarrufu yapmasa bile.



Hindistan'da ve diğer hızla gelişen ülkelerde su arzı sınırlıdır ve ayrıca yüksek talep üzerine, ayrıca yerel yönetimden herhangi bir resmi bildirim olmaksızın su temini başlayabilir. Bu proje bizim için bu sorunu çözecek.

Şimdi projenin teknik ayrıntılarına geçelim.

Devre:

Devre şunlardan oluşur: su akış sensörü Projenin beyni olan bir Arduino kartı olan YF-S201, GSM modülü (SIM 800 veya SIM 900) su temini hakkında SMS uyarıları almak için ve su kaynağının başlatılması ve su kaynağının sonlandırılması için doğru zamanı izlemek için gerçek zamanlı saat modülü.

Arduino kartına ve GSM modülüne güç sağlamak için 9 Volt besleme tercih edilir, güç kaynağının 9V adaptörlerden veya ev yapımı iyi yapılmış, transformatör tabanlı (LM 7809) beslemeden sağlanması önerilir.

SMS Tabanlı Su Temini Uyarı Devresi

Arduino ile GSM modülü arasındaki bağlantı aşağıdaki gibidir:

Arduino TX - RX GSM modülü

Arduino RX - TX GSM modülü

Arduino GND'den GND'ye GSM modülü

GSM modülüne asla Arduino’nun 5V çıkış pininden GSM modülünün 5V girişine güç sağlamaya çalışmayın.

RTC veya gerçek zamanlı saat modülü, suyun geliş saatini ve su kaynağının sonlandırılmasını takip edecektir.

Bu, donanımı tamamlıyor.

RTC'de zamanı ayarlamak için, tamamlanmış donanım kurulumuyla birlikte zaman ayarı programını RTC'ye yüklememiz gerekir. Bu, bilgisayarınızdaki saati RTC ile senkronize edecektir.

RTC kitaplık dosyasını indirin: github.com/PaulStoffregen/DS1307RTC

RTC'de zaman ayarlama programı:

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

· Yukarıdaki kodu tamamlanmış donanımla birlikte yükleyin.

· Seri monitörü açın ve zamanın ayarlandığını gösterir.

· Artık bir sonraki adıma geçmeye hazırsınız.

RTC modülüne başarıyla zaman ayarladınız.

Şimdi SMS ile bizi bilgilendirecek olan ana programı yükleyelim.

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

Not : Önce RTC zaman ayar programını Arduino'ya ve ikinci olarak ana programı yüklemelisiniz (donanım kurulumu tamamlandıktan sonra), tersini yaparsanız proje çalışmayacaktır.

Test edilen prototipin SMS ekran görüntüsü:

test edilen prototipin SMS ekran görüntüsü:

· Devreyi AÇIK konuma getirdikten bir dakika sonra, sistemin hazır olduğunu belirten bir SMS alacaksınız.

· Sensörden su akmaya başladığında, sistem kullanıcıyı zamanla bilgilendirecektir.

· Su beslemesi sonlandırıldıktan sonra sistem başka bir uyarı gönderecek ve seansı süre, ortalama su akışı ve tankınıza teslim edilen toplam su ile özetleyecektir.

Yazarın prototipi:

SMS Tabanlı Su Temini Uyarı Devresinin Prototipi

Suyun gelmesi anında suyun serbestçe akması gerektiğini lütfen unutmayın, yani kapalı olan herhangi bir blok veya musluk varsa sizi bilgilendirmeyecektir.

Bu proje ile ilgili herhangi bir sorunuz varsa, yorum bölümünde belirtmekten çekinmeyin, hızlı bir cevap alabilirsiniz.




Önceki: Otomatik Sıcaklık ve Nem kontrollü Arduino kullanan inkübatör Sonraki: 3 En İyi Transformatörsüz İnvertör Devresi