Sistem Deteksi Dini Banjir Berbasis Arduino – Kode Sumber & Desain Rangkaian
Sistem Pemantauan Banjir Dini – Rangkaian & Kode Sumber Proyek
Di negara berkembang maupun non berkembang, banjir adalah bencana alam massakala yang menyebabkan kerugian nyawa manusia dan hewan serta properti. Banjir karena gempa bumi di laut, ribut, hujan lebat dan bencana alam lainnya terjadi di banyak bagian dunia setiap tahun.
Selama hujan, sistem drainase yang tidak terkelola di berbagai wilayah geografis mengakibatkan banjir dan banyak nyawa hilang. Jika kita memiliki sistem yang dapat memberikan peringatan dini tentang banjir maka kita dapat menyelamatkan nyawa orang. Sistem yang menggunakan teknologi untuk mendeteksi kenaikan tingkat air dan memberi peringatan kepada orang sebelumnya sehingga banyak orang dapat dievakuasi.
Jadi dalam proyek ini kami membawa Anda prototipe yang dapat digunakan untuk mendeteksi tingkat air di beberapa kolam, bendung atau waduk dan kemudian mengirim peringatan menggunakan buzzer. Ini hanyalah prototipe skala kecil di mana kami akan menggunakan Arduino UNO, sensor ultrasonik, buzzer, LCD dan beberapa kabel penghubung.
Proyek Terkait:
- Sistem Penyiraman Tanaman Otomatis – Rangkaian, Kode & Laporan Proyek
- Rangkaian Alarm Hujan – Proyek Detektor Salju, Air dan Hujan
Diagram Rangkaian untuk Deteksi Banjir Dini

Komponen yang Diperlukan
- Arduino UNO
- Sensor Ultrasonik HC-SR04
- Buzzer
- Layar LCD 16×2
- Kabel lompat atau kabel penghubung
Proyek Terkait:
- Pengukuran Jarak Menggunakan Arduino dan Sensor Ultrasonik
- Sumber Daya Variabel Menggunakan Arduino UNO – Rangkaian dan Kode
Sekarang, mari kita pelajari tentang komponen yang digunakan dalam rangkaian dasar ini satu per satu.
Arduino UNO
Arduino adalah platform open source yang digunakan untuk mengembangkan proyek elektronika. Ini dapat dengan mudah diprogram, dihapus dan diprogram ulang kapan saja. Ada banyak papan Arduino yang tersedia di pasaran seperti Arduino UNO, Arduino Nano, Arduino Mega, Arduino lilypad, dll. dengan spesifikasi yang berbeda menurut penggunaannya.
Dalam proyek ini kami akan menggunakan Arduino UNO untuk mengontrol peralatan rumah tangga secara otomatis. Papan ini memiliki mikrokontroler IC ATmega328 yang berjalan pada kecepatan jam 16MHz. Ini adalah mikrokontroler yang kuat yang dapat bekerja pada protokol komunikasi USART, I2C dan SPI.
Papan ini biasanya diprogram menggunakan perangkat lunak Arduino IDE menggunakan kabel micro USB. ATmega328 dilengkaki dengan boot loader onboard yang terprogram sebelumnya yang memudahkan pengunggahan kode tanpa bantuan perangkat keras eksternal. Papan ini memiliki aplikasi luas dalam pembuatan proyek atau produk elektronika. Bahasa C dan C++ digunakan untuk memprogram papan ini yang sangat mudah untuk dipelajari dan digunakan.
Proyek Terkait:
- Diagram Rangkaian Indikator Tingkat Air- Dua Proyek Sederhana
- Pengontrol Tingkat Air Otomatis Lengkap menggunakan SRF04
Arduino IDE memudahkan pemrograman. Ini memisahkan kode menjadi dua bagian yaitu void setup() dan void loop(). Fungsi void setup() hanya berjalan satu kali dan digunakan terutama untuk memulai beberapa proses sementara void loop() terdiri dari bagian kode yang harus dieksekusi secara berkelanjutan.
Model ini terdiri dari 6 pin input analog dan 14 pin GPIO digital yang dapat digunakan sebagai input output 6 di antaranya menyediakan output PWM dan analog menggunakan fungsi pinMode(), digitalWrite(), digitalRead() dan analogRead(). 6 saluran input analog adalah dari pin A0 hingga A5 dan menyediakan resolusi 10 bit.
Papan ini dapat di daya menggunakan kabel USB yang beroperasi pada 5 volt atau melalui jack DC yang beroperasi antara 7 hingga 20 volt. Ada regulator tegangan onboard untuk menghasilkan 3,3 volt untuk mengoperasikan perangkat daya rendah.
Karena ATmega328 bekerja pada protokol komunikasi USART, SPI dan I2C, memiliki pin 0 (Rx) dan 1(Tx) untuk komunikasi USART, pin SDA (A4) dan SCL (A5) untuk I2C dan pin SS (10), MOSI (11), MISO (12) dan SCK (13) untuk protokol komunikasi SPI.
Proyek Terkait:
- Pintu Otomatis dengan Deteksi Objek oleh Arduino
- Lampu Malam Otomatis Menggunakan Arduino
Sensor Ultrasonik HC-SR04
HC-SR04 adalah sensor ultrasonik yang membantu mengukur jarak di banyak tempat tanpa kontak manusia. Ini bekerja berdasarkan prinsip yang sama seperti RADAR dan SONAR dan memberikan cara yang efisien untuk mengukur jarak dengan cara yang sangat tepat.
Secara teoritis dapat mengukur jarak hingga 450 cm tetapi secara praktis dapat mengukur jarak dari 2 cm hingga 80 cm dengan akurasi 3 mm. Ini dioperasikan pada 5 volt, arus kurang dari 15mA dan frekuensi 40 Hertz.

HC-SR04 memiliki satu pemancar dan satu penerima yang dipasang padanya. Jarak dihitung dengan rumus dasar kecepatan, jarak dan waktu yang semuanya kita pelajari di sekolah yaitu,
Jarak = Kecepatan x Waktu
Pemancar sensor HC-SR04 mengirimkan gelombang ultrasonik ke udara. Jika gelombang ini dipantulkan oleh objek dalam jangkauan sensor maka gelombang yang dipantulkan di udara diterima oleh penerima sensor. Jadi untuk menghitung jarak menggunakan rumus di atas kita harus mengetahui kecepatan dan waktu.
Kita tahu bahwa kecepatan gelombang ultrasonik universal sekitar 330 m/s. Waktu diukur oleh rangkaian yang dibangun pada mikrokontroler. Pin echo akan bernilai tinggi selama periode waktu yang dibutuhkan gelombang ultrasonik untuk kembali ke penerima. Dengan cara ini kita dapat menghitung jarak antara objek dan sensor ultrasonik HC-SR04.
Proyek Terkait:
- Sistem Kontrol Gerbang Kereta Otomatis – Rangkaian & Kode Sumber
- Rangkaian Detektor Kecepatan Mobil – Cara Kerja dan Kode Sumber
Interfacing HC-SR04 dengan Arduino UNO
Sensor ultrasonik HC-SR04 dapat digunakan dengan semua mikrokontroler seperti Arduino, PIC, Raspberry Pi, dll. Dalam proyek ini kami akan menghubungkan sensor ultrasonik HC-SR04 dengan Arduino UNO. Modul HC-SR04 memiliki empat pin: VCC, GND, Trig dan Echo.
Kami menyuplidan daya modul HC-SR04 dengan 5 volt dan GND ke Arduino UNO. Pin trigger dan pin echo adalah pin input dan output sehingga harus dihubungkan ke pin input dan output Arduino UNO. Jadi untuk mengukur jarak kita pertama-tama mengatur pin trigger menjadi “tinggi” selama 10 mikrodetik dan kemudian mengatur menjadi “rendah”.
Ini akan menghasilkan gelombang ultrasonik dengan frekuensi 40 kHz yang pergi ke objek dan dipantulkan kembali ke penerima modul. Jika gelombang mendeteksi objek itu segera kembali ke bagian penerima modul dan pin echo akan bernilai “tinggi” selama periode waktu yang dibutuhkan untuk kembali ke sensor.
Sekarang periode waktu ini dikalikan dengan kecepatan gelombang yang merupakan 330 m/s memberi kita jarak antara modul HC-SR04 dan objek.
Posting Terkait:
- Sistem Otomasi Rumah Pintar – Rangkaian dan Kode Sumber
- Pemrograman Arduino PWM dan fungsinya di Arduino
Layar LCD 16×2
Interfacing layar LCD 16 X 2 dengan Arduino UNO cukup mudah. Ada berbagai jenis LCD yang tersedia di pasaran tetapi yang kami gunakan dalam proyek ini adalah 16×2 yang berarti memiliki dua baris dan di setiap baris kita dapat menampilkan 16 karakter.
Modul ini memiliki driver HD44780 dari Hitachi yang membantu untuk menghubungkan dan berkomunikasi dengan mikrokontroler. LCD ini dapat bekerja dalam mode 4 bit dan 8 bit. Dalam mode 4 bit hanya 4 pin data yang diperlukan untuk membangun koneksi antara LCD dan mikrokontroler sementara dalam mode 8 bit 8 pin data yang diperlukan.
Di sini kami akan menggunakannya dalam mode 4 bit karena memerlukan jumlah kabel yang lebih sedikit dan membuat rangkaian menjadi lebih sederhana. Mari kita lihat deskripsi pin layar LCD 16×2.

Deskripsi Pin Modul Layar LCD 16×2:
| Pin pada LCD |
Deskripsi |
| VSS |
Pin Grounding |
| VCC |
Suplidan daya +5V |
| VEE |
Pin untuk mengubah kontras LCD |
| RS |
Register Select: Mode Data atau Mode Perintah |
| RW |
Mode Membaca atau Menulis |
| E |
Aktifkan LCD |
| DB0-DB7 |
Data dan perintah diinput menggunakan pin ini |
| LED+ |
Anoda lampu belakang LED |
| LED- |
Katoda lampu belakang LED |
Layar LCD ini tidak memiliki lampu sendiri jadi ada LED di balik layar yang berfungsi sebagai lampu belakang untuk tampilan. Interfacing layar LCD ini dengan Arduino UNO cukup mudah karena Arduino IDE menyediakan perpustakaan LiquidCrystal yang memiliki banyak fungsi bawaan untuk memudahkan inisialisasi dan mencetak apa pun pada layar. Fungsi layar LCD yang kami gunakan terutama dalam proyek ini adalah:
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); lcd.begin() lcd.clear() lcd.print()
Cara Kerja Sistem Deteksi Banjir Dini & Kode Sumber
Sebuah sensor ultrasonik akan ditempatkan pada beberapa tingkat dasar sehingga pemancar dan penerima akan menghadap ke tingkat air. Arduino UNO akan mengukur jarak antara sensor dan tingkat air.
Layar LCD akan mencetak jarak antara keduanya. Kami akan menetapkan beberapa tolak ukur untuk tingkat banjir dan saat air mencapai tolak ukur tersebut kami akan mengatur buzzer menjadi ‘tinggi’ dan layar LCD akan mencetak teks peringatan tentang banjir.
Penjelasan Kode
#include LiquidCrystal lcd(2,3,4,5,6,7); lcd.begin(16,2);
Perpustakaan bawaan untuk layar LCD diimpor. Fungsi LiquidCrystal lcd() mengambil nomor pin data yang terhubung ke Arduino UNO. Lcd.begin() memulai layar LCD 16×2.
pinMode(18,OUTPUT); //trigger pin pinMode(19,INPUT); //echo pin pinMode(20,OUTPUT); //buzzer
Pin 18 dan 20 diatur sebagai pin output untuk trigger dan buzzer masing-masing dan pin 19 diatur sebagai input untuk pin echo.
t=pulseIn(19,HIGH); dist=t*340/20000;
Variabel waktu ‘t’ mendeteksi jumlah waktu sampai pin trigger diatur tinggi yang kemudian digunakan untuk menghitung waktu dalam sentimeter dan menyimpan nilai dalam variabel ‘dist’.
if(dist<40) { digitalWrite(20,HIGH); lcd.clear(); lcd.setCursor(0,1); lcd.print("Water level is rising. Kindly evacuate"); delay(2000); } else { digitalWrite(20,LOW); delay(2000); }
Dalam kode ini kami telah menetapkan kondisi banjar sebagai jarak antara tingkat air dan sensor ultrasonik menjadi 40cm. Jadi saat tingkat air mencapai 40 cm atau kurang dari itu buzzer akan diatur HIGH untuk memberikan peringatan dan layar LCD akan mencetak dan menampilkan pesan peringatan banjir.
Kode Sumber Lengkap:
#include LiquidCrystal lcd(2,3,4,5,6,7); float t = 0; float dist = 0; void setup() { lcd.begin(16,2); pinMode(18,OUTPUT); //trigger pin pinMode(19,INPUT); //echo pin pinMode(20,OUTPUT); //buzzer lcd.setCursor(0,1); lcd.print(" Water Level Detector"); delay(2000); } void loop() { lcd.clear(); digitalWrite(20,LOW); digitalWrite(18,LOW); delayMicroseconds(2); digitalWrite(18,HIGH); delayMicroseconds(10); digitalWrite(18,LOW); delayMicroseconds(2); t=pulseIn(19,HIGH); dist=t*340/20000; lcd.clear(); lcd.setCursor(0,1); lcd.print("Distance : "); lcd.print(dist/100); lcd.print(" m"); delay(1000); if(dist<40) { digitalWrite(20,HIGH); lcd.clear(); lcd.setCursor(0,1); lcd.print("Water level is rising. Kindly evacuate"); delay(2000); } else { digitalWrite(20,LOW); delay(2000); } }
Proyek Terkait:
- Kontrol Lampu Lalu Lintas Elektronik Proyek menggunakan IC 4017 & 555 Timer
- Diagram Rangkaian Charger HP Sederhana – 5V dari 230V AC
- Rangkaian Saklar Relay Elektronik – NPN, PNP, N & P Channel Relay Switches
- Diagram Rangkaian Roulette LED menggunakan 555 Timer & 4017 Counter
- Breaker Rangkaian Elektronik – Skematis dan Cara Kerja
- Diagram Rangkaian Deteksi Gerak Inframerah
- Rangkaian Saklar Sensitif Sentuh Sederhana
- Diagram Rangkaian Penegak Tegangan Dasar menggunakan IC 555 Timer
- Diagram Rangkaian Sumber Daya Dual – 230VAC ke ±12VDC
- Diagram Rangkaian Charger HP Sederhana – 5V dari 230V AC