Sistem Peringatan Pasokan Air Berbasis SMS

Coba Instrumen Kami Untuk Menghilangkan Masalah





Dalam posting ini kita akan membuat sirkuit yang akan memberi tahu pengguna melalui SMS jika pasokan air ke area / rumah Anda dimulai. Ini dapat menunjukkan waktu ketika air mulai mengalir dan berakhir, kecepatan aliran air rata-rata dalam liter per menit dan total air yang dikirim ke tangki Anda dalam liter.

pengantar

Kita semua tahu bahwa kehidupan di bumi tidak mungkin tanpa air, sebagai manusia kami menggunakan lebih banyak air daripada yang dikonsumsi spesies lain di bumi, tidak hanya untuk kelangsungan hidup kita tetapi juga untuk memenuhi kebutuhan kemewahan kita.



Kami tidak hanya mengkonsumsi air tetapi juga mencemari badan air. Konsumsi dan permintaan air akan meroket dalam beberapa dekade mendatang.

Sebagai warga dunia, adalah kewajiban kita untuk menghemat air, tetapi sebagai individu kita mungkin tidak dapat memuaskan seluruh dahaga dunia dengan menghemat air, tetapi kita pasti dapat memuaskan dahaga keluarga kita karena kita mungkin memiliki jumlah air yang sehat untuk waktu yang singkat. , bahkan jika tidak ada orang di sekitar kita yang menyimpan air untuk masa depan.



Pasokan air di India dan negara berkembang pesat lainnya terbatas dan juga memiliki permintaan yang tinggi, apalagi pasokan air dapat dimulai tanpa pemberitahuan resmi dari pemerintah daerah. Proyek ini akan menyelesaikan masalah ini untuk kami.

Sekarang mari selami detail teknis proyek tersebut.

Sirkuit:

Sirkuit ini terdiri dari a sensor aliran air YF-S201, papan Arduino yang merupakan otak dari proyek, a Modul GSM (SIM 800 atau SIM 900) untuk menerima SMS peringatan tentang pasokan air dan modul jam waktu nyata untuk melacak waktu yang tepat untuk inisiasi pasokan air dan penghentian pasokan air.

Pasokan 9 Volt diinginkan untuk memberi daya pada papan Arduino dan modul GSM, disarankan untuk menyediakan catu daya dari adaptor 9V atau suplai berbasis transformator (LM 7809) buatan sendiri yang dibangun dengan baik.

Sirkuit Peringatan Pasokan Air Berbasis SMS

Adapun hubungan antara modul Arduino dan GSM sebagai berikut:

Modul Arduino TX ke RX GSM

Modul Arduino RX ke TX GSM

Arduino GND ke modul GND GSM

Jangan pernah mencoba memberi daya modul GSM dari pin keluaran 5V Arduino ke masukan 5V modul GSM.

RTC atau modul jam waktu nyata akan melacak waktu kedatangan air dan pemutusan pasokan air.

Itu menyimpulkan perangkat keras.

Untuk mengatur waktu di RTC kita perlu mengunggah program pengaturan waktu ke RTC dengan pengaturan perangkat keras yang lengkap. Ini akan menyinkronkan waktu di komputer Anda ke RTC.

Unduh file perpustakaan RTC: github.com/PaulStoffregen/DS1307RTC

Program untuk mengatur waktu di 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
}
//-----------------------------------------------------------//

· Unggah kode di atas dengan perangkat keras yang lengkap.

· Buka monitor serial dan itu menunjukkan waktu telah diatur.

· Sekarang Anda siap untuk pindah ke langkah berikutnya.

Anda berhasil menyetel waktu ke modul RTC.

Sekarang, mari unggah program utama yang akan memberi tahu kami melalui SMS.

Program Utama:

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

Catatan : Anda harus mengunggah program pengaturan waktu RTC ke Arduino terlebih dahulu dan program utama kedua (dengan pengaturan perangkat keras yang sudah selesai), melakukan sebaliknya, proyek tidak akan berfungsi.

Berikut tangkapan layar SMS prototipe yang diuji:

cuplikan layar SMS prototipe yang diuji:

· Setelah satu menit menyalakan sirkuit, Anda akan mendapatkan SMS yang menyatakan bahwa sistem sudah siap.

· Ketika air mulai mengalir melalui sensor, sistem akan memberi tahu pengguna seiring waktu.

· Setelah pasokan air dihentikan, sistem akan mengirim peringatan lain dan meringkas sesi dengan waktu, aliran air rata-rata, dan total air yang dikirim ke tangki Anda.

Prototipe penulis:

Prototipe Sirkuit Peringatan Pasokan Air Berbasis SMS

Perlu diketahui bahwa pada saat air tiba air harus mengalir bebas, artinya jika ada balok atau keran yang tertutup tidak akan memberitahu anda.

Jika Anda memiliki pertanyaan tentang proyek ini, silakan ungkapkan di bagian komentar, Anda dapat menerima balasan cepat.




Sepasang: Inkubator Menggunakan Arduino dengan Kontrol Suhu dan Kelembaban Otomatis Berikutnya: 3 Sirkuit Inverter Transformerless Terbaik