Banjir merupakan salah satu bencana yang sering terjadi, terutama di daerah perkotaan dan sekitar aliran sungai. Salah satu solusi sederhana yang bisa dilakukan adalah membuat sistem monitoring ketinggian air secara otomatis.
Dengan memanfaatkan Arduino, kita bisa membuat sistem yang mampu:
- Mendeteksi kenaikan air
- Mengetahui kondisi hujan
- Memberikan peringatan dini
- Menampilkan data secara real-time
Project ini sangat cocok untuk:
- Mahasiswa (praktikum / skripsi)
- Pemula Arduino
- Sistem IoT sederhana
Konsep Sistem
Sistem ini menggunakan 3 sensor utama dan LCD untuk monitoring:
Sensor yang digunakan:
- Sensor Ultrasonik → mengukur jarak air
- Sensor Hujan → mendeteksi hujan
- Water Level Sensor → mendeteksi tinggi air
Alat dan Bahan
|
Komponen |
Jumlah |
|
Arduino Uno |
1 |
|
Sensor Ultrasonik HC-SR04 |
1 |
|
Sensor Hujan |
1 |
|
Water Level Sensor |
1 |
|
LCD 16x2 I2C |
1 |
|
Breadboard |
1 |
|
Kabel jumper |
Secukupnya |
Rangkaian Sistem
- Sensor Ultrasonik
|
Pin |
Arduino |
|
VCC |
5V |
|
GND |
GND |
|
TRIG |
D9 |
|
ECHO |
D10 |
- Sensor Hujan
|
Pin |
Arduino |
|
VCC |
5V |
|
GND |
GND |
|
AO |
A0 |
- Water Level
|
Pin |
Arduino |
|
VCC |
5V |
|
GND |
GND |
|
Signal |
A1 |
- LCD I2C
|
Pin |
Arduino |
|
VCC |
5V |
|
GND |
GND |
|
SDA |
A4 |
|
SCL |
A5 |
- Gambar Rangkaian

Cara Kerja Sistem
Sistem bekerja sebagai berikut:
- Sensor membaca kondisi lingkungan
- Arduino memproses data
- Data ditampilkan ke LCD
- Jika kondisi berbahaya → alarm aktif
Program Arduino
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define TRIG 9
#define ECHO 10
#define RAIN A0
#define WATER A1
LiquidCrystal_I2C lcd(0x27, 16, 2);
long durasi;
float jarak;
void setup() {
Serial.begin(9600);
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Monitoring Air");
lcd.setCursor(0, 1);
lcd.print("Sistem Siap...");
delay(2000);
lcd.clear();
}
void loop() {
// Baca sensor ultrasonic
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
durasi = pulseIn(ECHO, HIGH, 30000);
jarak = durasi * 0.034 / 2;
// Jika ultrasonic gagal membaca
if (durasi == 0) {
jarak = 999;
}
// Baca sensor hujan dan water level
int hujan = analogRead(RAIN);
int level = analogRead(WATER);
bool kondisiAir = (jarak < 10);
bool kondisiLevel = (level > 500);
bool kondisiHujan = (hujan < 500);
String status;
if (kondisiAir && kondisiLevel) {
status = "BAHAYA";
}
else if (kondisiAir || kondisiLevel || kondisiHujan) {
status = "SIAGA";
}
else {
status = "AMAN";
}
// Tampilkan ke Serial Monitor
Serial.print("Jarak: ");
Serial.print(jarak);
Serial.print(" cm | Hujan: ");
Serial.print(hujan);
Serial.print(" | Level: ");
Serial.print(level);
Serial.print(" | Status: ");
Serial.println(status);
// Tampilkan ke LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("J:");
lcd.print(jarak, 0);
lcd.print("cm ");
lcd.print("H:");
lcd.print(hujan);
lcd.setCursor(0, 1);
lcd.print("L:");
lcd.print(level);
lcd.print(" ");
lcd.print(status);
delay(1500);
}
Contoh Output LCD
J:8cm
BAHAYA
Kategori Kondisi
|
Kondisi |
Status |
|
Normal |
AMAN |
|
Hujan |
SIAGA |
|
Air tinggi |
BAHAYA |
Pengembangan Project
Project ini bisa dikembangkan menjadi:
- IoT ESP32 + ThingSpeak
- Monitoring berbasis web
- Notifikasi Telegram / WhatsApp
- Dashboard real-time
Sangat cocok untuk skripsi Anda
Kesimpulan
Project ini menggabungkan:
- 3 sensor
- LCD display
- Komunikasi serial
Ini adalah mini sistem monitoring banjir berbasis IoT
Dengan project ini, Anda sudah memahami:
- Input (sensor)
- Proses (Arduino)
- Output (LCD)
Ini adalah dasar untuk membangun sistem Smart Monitoring modern