Banjir adalah salah satu bencana hidrometeorologi yang paling sering melanda berbagai wilayah, terutama saat musim penghujan tiba. Seringkali, kenaikan debit air sungai terjadi begitu cepat di tengah malam atau saat warga tengah tertidur, sehingga memperlambat proses evakuasi dan memperbesar risiko kerugian material maupun korban jiwa.
Berangkat dari kegelisahan terhadap ancaman tersebut, Khairul Tamimi (Micoding) menghadirkan sebuah inovasi teknologi tepat guna berupa Alat Deteksi Banjir Berbasis Mikrokontroler Arduino Uno. Menggunakan komponen elektronik yang terjangkau namun handal, perangkat ini dirancang sebagai sistem peringatan dini (Early Warning System) mandiri yang dapat ditempatkan di titik-titik rawan genangan atau bantaran sungai.
Bagaimana Cara Kerjanya?
Sistem ini bekerja secara otomatis dengan mengandalkan sensor ultrasonik HC-SR04 yang diposisikan menghadap ke arah permukaan air. Sensor ini bekerja dengan memancarkan gelombang suara ultrasonik dan mengukur waktu pantulannya untuk mengetahui jarak akurat antara sensor dan permukaan air.
Data durasi pantulan gelombang tersebut kemudian diolah oleh program yang ditanamkan di dalam mikrokontroler Arduino Uno. Berdasarkan hasil pembacaan jarak (kedalaman air atau kdlm), sistem secara cerdas mengaktifkan beberapa respons keluaran (output) secara bersamaan:
-
Kondisi Aman (Hijau): Ketika kedalaman air berada pada level aman (kdlm < 320 cm), LED hijau menyala, dan layar LCD menampilkan status "Aman".
-
Kondisi Siaga (Kuning): Jika air mulai naik dan memasuki rentang siaga (320 cm - kdlm < 370 - cm), LED kuning menyala, memberikan tanda peringatan awal kepada warga untuk mulai waspada.
-
Kondisi Bahaya (Merah + Buzzer): Pada titik kritis atau ketika air mencapai level tinggi (kdlm >= 370\ cm), sistem langsung mengaktifkan LED merah secara berkedip, membunyikan Buzzer dengan frekuensi alarm 800Hz, dan menampilkan status "Bahaya" pada layar LCD secara berkala guna memicu tindakan evakuasi darurat.
Spesifikasi Teknis Perangkat
-
Mikrokontroler: Arduino Uno (ATmega328P)
-
Sensor Pengukur Jarak: HC-SR04 Ultrasonik
-
Media Tampilan: LCD 16x2 dengan Modul Interfacing I2C (Address
0x27) -
Indikator Audio: Buzzer Aktif (Pin 4)
-
Indikator Visual: 3 Buah LED (Merah di pin 13, Kuning di pin 12, Hijau di pin 11) lengkap dengan resistor pelindung.
Kode Program :
#include <LiquidCrystal_I2C.h>
#define ECHO_PIN 2
#define TRIG_PIN 3
#define buzzer 4
#define ledmerah 13
#define ledkuning 12
#define ledhijau 11
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() {
pinMode(ledmerah, OUTPUT);
pinMode(ledkuning, OUTPUT);
pinMode(ledhijau, OUTPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
lcd.init();
lcd.backlight();
digitalWrite(ledmerah, HIGH);
digitalWrite(ledkuning, HIGH);
digitalWrite(ledhijau, HIGH);
tone(4,300,500);
lcd.setCursor(0,0);
lcd.print("Deteksi Banjir");
lcd.setCursor(5,1);
lcd.print("oleh");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Khairul Tamimi");
lcd.setCursor(0,1);
lcd.print("micoding");
delay(3000);
digitalWrite(ledmerah, LOW);
digitalWrite(ledkuning, LOW);
digitalWrite(ledhijau, LOW);
digitalWrite(buzzer, LOW);
lcd.clear();
}
float kedalaman(){
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int durasi = pulseIn(ECHO_PIN, HIGH);
return 400-durasi*0.034/2;
}
void loop() {
float kdlm = kedalaman();
if(kdlm > 370)
{
digitalWrite(ledmerah, HIGH);
digitalWrite(ledkuning, LOW);
digitalWrite(ledhijau, LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Kdlmn :");
lcd.setCursor(7,0);
lcd.print(kdlm);
lcd.setCursor(14,0);
lcd.print("cm");
lcd.setCursor(0,1);
lcd.print("Satus :");
lcd.setCursor(9,1);
lcd.print("Bahaya");
tone(4,800,1000);
delay(1000);
lcd.clear();
delay(100);
}
else{
if(kdlm >= 320 && kdlm < 370)
{
digitalWrite(ledmerah, LOW);
digitalWrite(ledkuning, HIGH);
digitalWrite(ledhijau, LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Kdlmn :");
lcd.setCursor(7,0);
lcd.print(kdlm);
lcd.setCursor(14,0);
lcd.print("cm");
lcd.setCursor(0,1);
lcd.print("Satus :");
lcd.setCursor(9,1);
lcd.print("Siaga");
delay(1000);
lcd.clear();
delay(100);
}
else{
digitalWrite(ledmerah, LOW);
digitalWrite(ledkuning, LOW);
digitalWrite(ledhijau, HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Kdlmn :");
lcd.setCursor(7,0);
lcd.print(kdlm);
lcd.setCursor(14,0);
lcd.print("cm");
lcd.setCursor(0,1);
lcd.print("Satus :");
lcd.setCursor(9,1);
lcd.print("Aman");
delay(1000);
lcd.clear();
delay(100);
}
}
}
Simulasi di Wokwi, Klik untuk lihat demo

Berikut adalah kesimpulan dari proyek pembuatan alat dan artikel Sistem Deteksi Banjir Berbasis Arduino Uno:
-
Efektivitas Sistem Peringatan Dini (Early Warning System):
Proyek ini berhasil membuktikan bahwa teknologi mikrokontroler sederhana dan terjangkau seperti Arduino Uno dan sensor ultrasonik HC-SR04 dapat diandalkan untuk memantau ketinggian permukaan air sungai atau genangan secara real-time.
-
Klasifikasi Status yang Jelas:
Sistem dibagi menjadi tiga parameter siaga yang sangat intuitif bagi masyarakat:
-
Aman (< 320 cm): Ditandai dengan LED Hijau menyala.
-
Siaga (320 cm - 369 cm): Ditandai dengan LED Kuning menyala sebagai bentuk kewaspadaan awal.
-
Bahaya (>=370 cm): Ditandai dengan LED Merah menyala, alarm Buzzer berbunyi, dan tampilan LCD memberikan peringatan darurat agar warga segera melakukan evakuasi.
-
-
Potensi Pengembangan (IoT):
Meskipun saat ini masih berupa purwarupa berbasis kabel/lokal, sistem ini memiliki fleksibilitas tinggi untuk diintegrasikan dengan teknologi Internet of Things (IoT) seperti modul Wi-Fi (ESP8266) di masa depan, sehingga data kenaikan air dapat dipantau jarak jauh melalui smartphone atau komputer posko penanggulangan bencana.
Komentar
Tulis tanggapan Anda. Komentar akan tampil setelah disetujui.