Indonesia merupakan daerah dengan 2 musim di setiap tahunnya. Musim tersebut adalah musim kemarau dan musim penghujan. Saat musim hujan tiba, biasanya akan banyak sungai yang meluap dan menyebabkan Banjir. Untuk melakukan mitigasi, maka kami mencoba membuat Alat Pengukur Ketinggian dan Aliran Air sebagai Pendeteksi Dini Banjir di Sungai Berbasis Arduino Uno.
Alat ini mengukur Ketinggian dan Kecepatan Aliran Sungai yang kemudian apabila melebihi ambang batas tertentu akan mengirimkan notifikasi peringatan melalui SMS. Sehingga dapat menghindari kerugian dan korban jiwa, karena banjir bisa di deteksi secara Dini sebelum benar-benar meluap ke permukaan.
Baca Juga : Cara Program dan Akses Modul GSM SIM800L V.1 Menggunakan Arduino Nano/Uno .
Berikut ini adalah gambar Schematics Diagram Alat Pengukur Ketinggian dan Aliran Air sebagai Pendeteksi Dini Banjir di Sungai Berbasis Arduino Uno :
Berikut ini adalah Hardware yang dibutuhkan :
1. Arduino Uno R3 >>> BELI DISINI
2. Sensor Ultrasonic >>> BELI DISINI
3. Module SIM800L >>> BELI DISINI
4. Water Flow Sensor >>> BELI DISINI
5. Kabel Jumper Secukupnya >>> BELI DISINI
6. Dioda 1N4007 >>> BELI DISINI
7. Elco 470uF/16V >>> BELI DISINI
Berikut ini adalah Code Programnya :
/***************************
Alat Pengukur Ketinggian dan Aliran Air sebagai Pendeteksi Dini Banjir di Sungai Berbasis Arduino Uno
Oleh : Arduino Indonesia
Website : www.arduinoindonesia.id
Toko Online : www.workshopelectronics3in1.com
Blog : www.edukasielektronika.com
Copyright @2020
****************************///Declare GSM
#include "SIM900.h"
#include "sms.h"
SMSGSM sms;
char smsbuffer[160];
char n[20];
boolean started=false;
#include <SoftwareSerial.h>
//Declare Sensor Ultrasonic
#define triger 8 //mendefinisikan trigger pada pin 8
#define echo 9 //mendeklarasikan echo pada pin 9
//Declare Sensor Water Flow
byte sensorInt = 0;
byte flowSensor_pin = 5;
float konst = 4.5;
float debit_air;
volatile byte count;
unsigned int flow_mlt;
unsigned long total_volume;
unsigned long oldTime;
unsigned int frac;
void setup()
{
Serial.begin(9600);
pinMode (triger, OUTPUT); //trigger sebagai output
pinMode (echo, INPUT); //echo sebagai input
pinMode(flowSensor_pin, INPUT);
digitalWrite(flowSensor_pin, HIGH);
if (gsm.begin(9600))
{
Serial.println("\nstatus=READY");
started=true;
}
else Serial.println("\nstatus=IDLE");
if (started)
{
sms.SendSMS("0857xxxxxxxxxx", "Sistem Monitoring READY!!!");
}
count = 0;
debit_air = 0.0;
flow_mlt = 0;
total_volume = 0;
oldTime = 0;
attachInterrupt(sensorInt, countPulse, FALLING);
Serial.println("Menggunakan Water Flow Sensor");
}
void waterflow()
{
if ((millis() - oldTime) > 1000)
{
detachInterrupt(sensorInt);
debit_air = ((1000.0 / (millis() - oldTime)) * count) / konst;
oldTime = millis();
flow_mlt = (debit_air / 60) * 1000;
total_volume += flow_mlt;
frac;
Serial.print("Debit air: ");
Serial.print(int(debit_air));
Serial.println(" L/min");
Serial.print("Volume air: ");
Serial.print(total_volume);
Serial.println(" mL");
count = 0;
attachInterrupt(sensorInt, countPulse, FALLING);
}
}
void loop()
{
digitalWrite (triger, HIGH); //mengirim suara
delayMicroseconds(10); //selama 10 mikro detik
digitalWrite (triger, LOW); //berhenti mengirim suara
float jarak = pulseIn(echo, HIGH); //membaca data dan di masukkan ke variabel jarak
jarak=jarak/1000000; //konversi mikro detik ke detik
jarak=jarak*330/2; //data mentah di ubah ke dalam meter
jarak=jarak*100; //mengubah data ke dalam centi meter
Serial.println(jarak); //menampilkan nilai jarak pada serial
if(started)
{
sms.GetSMS(1,n,20,smsbuffer,100);
if(jarak <= 10.00)
{
sms.SendSMS("Nomor HP Anda","Ketinggian Berbahaya");
}
if(jarak > 10.00 && jarak <=20.00)
{
sms.SendSMS("Nomor HP Anda","Ketinggian Waspada");
}
if(jarak > 20.00)
{
sms.SendSMS("Nomor HP Anda","Ketinggian Normal");
}
}
delay(5000);
waterflow();
if(started)
{
if(debit_air <=1 ) //Liter/Jam
{
sms.SendSMS("Nomor HP Anda","Debit Normal");
}
if(debit_air > 1 && debit_air <= 3) //Liter/Jam
{
sms.SendSMS("Nomor HP Anda","Debit Waspada");
}
if(debit_air > 3) //Liter/Jam
{
sms.SendSMS("Nomor HP Anda","Debit Berbahaya");
}
}
delay(5000);
}
void countPulse()
{
count++;
}
Selamat Mencoba !!!