Sistem Deteksi Dini Banjir Menggunakan Arduino – Source Code
Awal Banjir Pemantauan Sistem – Sirkuit &Kode Sumber Proyek
Baik di negara berkembang maupun tidak berkembang, banjir adalah bencana alam masif yang menyebabkan hilangnya nyawa dan harta benda manusia dan hewan. Banjir akibat gempa bumi di lautan, angin topan, curah hujan, dan bencana alam lainnya terjadi di berbagai belahan dunia setiap tahun.
Selama hujan, sistem drainase yang tidak dikelola di berbagai wilayah geografis menyebabkan banjir dan banyak nyawa melayang. Jika kita memiliki beberapa sistem yang dapat memberi kita peringatan dini tentang banjir maka kita dapat menyelamatkan nyawa orang. Sebuah sistem yang menggunakan teknologi untuk mendeteksi kenaikan ketinggian air dan memperingatkan orang-orang sebelumnya sehingga banyak orang dapat dievakuasi.
Jadi dalam proyek ini kami membawakan Anda sebuah prototipe yang dapat digunakan untuk mendeteksi ketinggian air di beberapa kolam, bendungan atau waduk dan kemudian mengirimkan peringatan menggunakan bel. Ini hanyalah prototipe skala kecil di mana kita akan menggunakan Arduino UNO, sensor ultrasonik, buzzer, LCD dan beberapa kabel penghubung.
Proyek Terkait:
- Sistem Pengairan &Irigasi Tanaman Otomatis – Sirkuit, Kode &Laporan Proyek
- Sirkuit Alarm Hujan – Proyek Pendeteksi Salju, Air, dan Hujan
Diagram Sirkuit untuk Deteksi Dini Banjir
Komponen yang Diperlukan
- Arduino UNO
- Sensor Ultrasonik HC-SR04
- Buzzer
- Layar LCD 16×2
- Kabel jumper atau penghubung
Proyek Terkait:
- Pengukuran Jarak Menggunakan Arduino dan Sensor Ultrasonik
- Variabel Power Supply Menggunakan Arduino UNO – Sirkuit dan Kode
Sekarang, mari kita pelajari komponen yang digunakan dalam rangkaian dasar ini satu per satu.
Arduino UNO
Arduino adalah platform open source yang digunakan untuk mengembangkan proyek elektronik. Itu dapat dengan mudah diprogram, dihapus, dan diprogram ulang kapan saja. Papan Arduino yang tersedia di pasaran sangat banyak seperti Arduino UNO, Arduino Nano, Arduino Mega, Arduino lilypad dll dengan spesifikasi yang berbeda-beda sesuai dengan penggunaannya.
Dalam proyek ini kita akan menggunakan Arduino UNO untuk mengontrol peralatan rumah tangga secara otomatis. Ini memiliki IC mikrokontroler ATmega328 di atasnya yang berjalan pada kecepatan clock 16MHz. Ini sangat kuat yang dapat bekerja pada protokol komunikasi USART, I2C dan SPI.
Board ini biasanya diprogram menggunakan software Arduino IDE menggunakan kabel micro USB. ATmega328 hadir dengan boot loader onboard yang telah diprogram sebelumnya yang membuatnya lebih mudah untuk mengunggah kode tanpa bantuan perangkat keras eksternal. Ini memiliki aplikasi yang luas dalam membuat proyek atau produk elektronik. Bahasa C dan C++ digunakan untuk memprogram papan yang sangat mudah dipelajari dan digunakan.
Proyek Terkait:
- Diagram Sirkuit Indikator Ketinggian Air- Dua Proyek Sederhana
- Pengendali Ketinggian Air Sepenuhnya Otomatis menggunakan SRF04
Arduino IDE membuatnya lebih mudah untuk diprogram. Ini memisahkan kode dalam dua bagian yaitu void setup() dan void loop(). Fungsi void setup() hanya berjalan satu kali dan digunakan terutama untuk memulai beberapa proses sedangkan void loop() terdiri dari bagian kode yang harus dijalankan terus menerus.
Model ini terdiri dari 6 pin input analog dan 14 pin GPIO digital yang dapat digunakan sebagai input output 6 diantaranya menyediakan output PWM dan analog menggunakan pinMode(), digitalWrite(), fungsi digitalRead() dan analogRead(). 6 saluran input analog berasal dari pin A0 hingga A5 dan memberikan resolusi 10 bit.
Papan dapat diberi daya baik dari menggunakan kabel USB yang beroperasi pada 5 volt atau dengan jack DC yang beroperasi antara 7 hingga 20 volt. Terdapat regulator tegangan terpasang untuk menghasilkan 3,3 volt untuk mengoperasikan perangkat berdaya rendah.
Karena ATmega328 bekerja pada protokol komunikasi USART, SPI dan I2C, memiliki pin 0 (Rx) dan 1(Tx) untuk komunikasi USART, SDA (A4) dan SCL (A5) pin untuk pin I2C dan SS (10), MOSI (11), MISO (12) dan SCK (13) untuk protokol komunikasi SPI.
Proyek Terkait:
- Bel 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. Ia bekerja pada prinsip yang sama seperti RADAR dan SONAR dan menyediakan 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 terpasang di dalamnya. Jarak dihitung dengan rumus dasar kecepatan, jarak dan waktu yang kita semua pelajari di sekolah kita yaitu,
Jarak =Kecepatan x Waktu
Pemancar sensor HC-SR04 mentransmisikan gelombang ultrasonik di udara. Jika gelombang ini dipantulkan oleh beberapa 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 universal gelombang ultrasonik adalah sekitar 330 m/s. Waktu diukur dengan rangkaian yang dibangun pada mikrokontroler. Pin gema menjadi tinggi selama periode waktu yang dibutuhkan oleh 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 Api Otomatis – Sirkuit &Kode Sumber
- Sirkuit Detektor Kecepatan Mobil – Bekerja dan Kode Sumber
Menghubungkan HC-SR04 dengan Arduino UNO
Senor ultrasonik HC-SR04 dapat digunakan dengan semua mikrokontroler seperti Arduino, PIC, Raspberry Pi, dll. Dalam proyek ini kita akan menghubungkan sensor ultrasonik HC-SR04 dengan Arduino UNO . Modul HC-SR04 memiliki empat pin:VCC, GND, Trig dan Echo.
Kami memberi daya modul HC-SR04 dengan 5 volt dan GND ke Arduino UNO. Pin trigger dan pin Echo merupakan pin input dan output sehingga harus dihubungkan dengan pin input dan output Arduino UNO. Jadi untuk mengukur jarak, pertama-tama setel pin pemicu ke "tinggi" selama 10 mikro detik, lalu setel ke "rendah".
Ini akan menghasilkan gelombang ultrasonik berfrekuensi 40 kHz yang menuju objek dan dipantulkan kembali ke penerima modul. Jika gelombang mendeteksi beberapa objek, gelombang akan segera kembali ke bagian penerima modul dan pin gema menjadi "tinggi" untuk jangka waktu saat gelombang kembali ke sensor.
Sekarang periode waktu ini dikalikan dengan kecepatan gelombang yaitu 330 m/s memberi kita jarak antara modul HC-SR04 dan objek.
Posting Terkait:
- Sistem Otomatisasi Rumah Pintar – Sirkuit dan Kode Sumber
- Pemrograman PWM Arduino dan Fungsinya di Arduino
Layar LCD 16×2
Menghubungkan 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 16x2 yang berarti memiliki dua baris dan di setiap baris kami dapat menampilkan 16 karakter.
Modul ini memiliki driver HD44780 dari Hitachi yang membantu antarmuka dan komunikasi dengan mikrokontroler. LCD ini dapat bekerja dalam mode 4 bit dan mode 8 bit. Dalam mode 4 bit hanya diperlukan 4 pin data untuk membuat koneksi antara LCD dan mikrokontroler sedangkan dalam mode 8 bit diperlukan 8 pin data.
Di sini kita akan menggunakannya dalam mode 4 bit karena membutuhkan lebih sedikit jumlah kabel dan membuat rangkaian disederhanakan. Mari kita lihat deskripsi pin LCD 16×2.
Deskripsi Pin dari modul LCD 16×2:
Sematkan pada LCD | Deskripsi |
VSS | Pin Tanah |
VCC | catu daya +5V |
VEE | Sematkan untuk mengubah kontras LCD |
RS | Pilih Daftar:Mode Data atau Mode Perintah |
RW | Mode Baca atau Tulis |
E | Aktifkan LCD |
DB0-DB7 | Data dan perintah dimasukkan menggunakan pin ini |
LED+ | Anoda lampu latar LED |
LED- | Katoda lampu latar LED |
LCD ini tidak memiliki lampu sendiri sehingga ada LED di belakang layar yang berfungsi sebagai lampu latar untuk tampilan. Menghubungkan 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 di layar. Fungsi LCD yang terutama akan kita gunakan dalam proyek ini adalah:
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
lcd.begin()
lcd.clear()
lcd.print()
Bekerja Sistem Deteksi Dini Banjir &Source Code
Sebuah sensor ultrasonik akan ditempatkan pada beberapa tingkat dasar sehingga pemancar dan penerima akan menghadap ke permukaan air. Arduino UNO akan mengukur jarak antara sensor dan ketinggian air.
LCD akan mencetak jarak antara keduanya. Kami akan menetapkan beberapa tolok ukur untuk tingkat banjir dan saat air akan mencapai tolok ukur, kami akan mengatur bel ke 'tinggi' dan LCD akan mencetak teks peringatan tentang banjir.
Penjelasan Kode
#include
LiquidCrystal lcd(2,3,4,5,6,7);
lcd.begin(16,2);
Library bawaan untuk tampilan LCD disertakan. Fungsi LiquidCrystal lcd() mengambil nomor pin data yang terhubung ke Arduino UNO. Lcd.begin() memulai LCD 16×2.
pinMode(18,OUTPUT); //trigger pin
pinMode(19,INPUT); //echo pin
pinMode(20,OUTPUT); //buzzer
Pin 18 dan 20 masing-masing ditetapkan sebagai pin output untuk pemicu dan buzzer dan pin 19 ditetapkan sebagai input untuk pin gema.
t=pulseIn(19,HIGH);
dist=t*340/20000;
variabel waktu 't' mendeteksi jumlah waktu hingga pin pemicu disetel tinggi yang selanjutnya 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 kita telah mengatur kondisi kondisi banjir karena jarak antara ketinggian air dan sensor ultrasonik menjadi 40cm. Sehingga saat ketinggian air mencapai 40 cm atau kurang dari itu, bel akan disetel HIGH untuk memberikan peringatan dan 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:
- Proyek Elektronik Kontrol Lampu Lalu Lintas menggunakan IC 4017 &555 Timer
- Diagram Sirkuit Pengisi Daya Ponsel Sederhana – 5V dari 230V AC
- Sirkuit Sakelar Relai Elektronik – Sakelar Relai Saluran NPN, PNP, N &P
- Diagram Sirkuit Roulette LED menggunakan Timer 555 &Penghitung 4017
- Pemutus Sirkuit Elektronik – Skema dan Kerja
- Diagram Sirkuit Detektor Gerakan Inframerah
- Sirkuit Sakelar Sensitif Sentuhan Sederhana
- Diagram Rangkaian Pengganda Tegangan Dasar menggunakan IC Timer 555
- Diagram Sirkuit Catu Daya Ganda – 230VAC hingga ±12VDC
- Diagram Sirkuit Pengisi Daya Ponsel Sederhana – 5V dari 230V AC