TUTORIAL PEMBUATAN ALARM BANJIR OTOMATIS BERBASIS IoT MENGGUNAKAN ESP32, HC-SR04, LCD I2C, DAN BLYNK
Kategori: Elektronika, IoT, Arduino, ESP32, Robotika, Teknologi Tepat Guna
1. Pendahuluan
Banjir merupakan salah satu bencana yang dapat menimbulkan kerugian material dan mengancam keselamatan masyarakat. Salah satu upaya untuk mengurangi risikonya adalah dengan melakukan pemantauan ketinggian air dan memberikan peringatan dini ketika permukaan air meningkat.
Pada tutorial ini, kita akan membuat Alarm Banjir Otomatis Berbasis Internet of Things (IoT) menggunakan ESP32, sensor ultrasonik HC-SR04, LCD I2C, LED indikator, buzzer, dan platform Blynk IoT.
Alat ini dirancang untuk mengukur jarak permukaan air, menghitung persentase ketinggian air, menampilkan status melalui LCD, memberikan peringatan menggunakan LED dan buzzer, serta mengirimkan data ke smartphone melalui internet.
Proyek ini cocok digunakan sebagai media pembelajaran elektronika, fisika, pemrograman mikrokontroler, robotika, dan teknologi tepat guna.
2. Tujuan Pembuatan
Tujuan pembuatan alat ini adalah:
- Membuat sistem pemantauan ketinggian air secara otomatis.
- Mengukur jarak permukaan air menggunakan sensor ultrasonik.
- Menampilkan persentase ketinggian air pada LCD.
- Mengelompokkan kondisi air menjadi AMAN, SIAGA, WASPADA, dan BAHAYA.
- Mengaktifkan LED dan buzzer berdasarkan kondisi air.
- Mengirimkan data pemantauan ke smartphone melalui Blynk IoT.
- Memberikan notifikasi ketika kondisi air mencapai tingkat bahaya.
3. Alat dan Bahan
| No. | Komponen | Jumlah |
|---|---|---|
| 1 | ESP32 DevKit | 1 buah |
| 2 | Sensor ultrasonik HC-SR04 | 1 buah |
| 3 | LCD I2C 16×2 | 1 buah |
| 4 | Buzzer | 1 buah |
| 5 | LED hijau | 1 buah |
| 6 | LED kuning | 1 buah |
| 7 | LED merah | 1 buah |
| 8 | Resistor 220–330 Ω untuk LED | 3 buah |
| 9 | Resistor pembagi tegangan ECHO | 1 set |
| 10 | Breadboard | 1 buah |
| 11 | Kabel jumper | Secukupnya |
| 12 | Kabel USB data | 1 buah |
| 13 | Laptop atau komputer | 1 unit |
| 14 | Smartphone | 1 unit |
| 15 | Wadah simulasi air | 1 buah |
Selain komponen tersebut, diperlukan jaringan Wi-Fi, akun Blynk IoT, dan sumber daya yang sesuai untuk setiap komponen.
4. Konfigurasi Pin ESP32
Sebelum melakukan perakitan, perhatikan konfigurasi pin berikut.
| Komponen | Pin komponen | Pin ESP32 |
|---|---|---|
| HC-SR04 | TRIG | GPIO 5 |
| HC-SR04 | ECHO | GPIO 18 melalui pembagi tegangan |
| HC-SR04 | VCC | 5V |
| HC-SR04 | GND | GND |
| LCD I2C | SDA | GPIO 21 |
| LCD I2C | SCL | GPIO 22 |
| LCD I2C | VCC | Sesuai modul |
| LCD I2C | GND | GND |
| Buzzer | Sinyal | GPIO 4 |
| Buzzer | GND | GND |
| LED hijau | Anoda melalui resistor | GPIO 25 |
| LED kuning | Anoda melalui resistor | GPIO 26 |
| LED merah | Anoda melalui resistor | GPIO 27 |
Ketiga LED harus menggunakan resistor pembatas arus. Semua komponen harus memiliki referensi GND yang sama.
Penting: Sensor HC-SR04 standar menggunakan sinyal ECHO 5 V, sedangkan GPIO ESP32 bekerja pada logika 3,3 V. Gunakan pembagi tegangan atau level shifter sebelum menghubungkan ECHO ke GPIO 18. Pastikan juga tegangan sinyal LCD I2C aman bagi ESP32.
5. Skema Rangkaian
Skema blok hubungan antarkomponen dapat dilihat berikut ini.
*Pin ECHO harus melewati pembagi tegangan atau level shifter.
Diagram tersebut merupakan skema blok untuk memperlihatkan hubungan komponen. Saat merakit, ikuti tabel pin dan pastikan polaritas serta tegangan setiap komponen benar.
6. Prinsip Kerja Alat
Sistem bekerja dengan memanfaatkan sensor ultrasonik HC-SR04 untuk mengukur jarak antara sensor dan permukaan air.
Sensor mengirimkan gelombang ultrasonik melalui pin TRIG. Ketika gelombang mengenai permukaan air, gelombang dipantulkan dan diterima kembali melalui pin ECHO. Waktu tempuh gelombang digunakan untuk menentukan jarak permukaan air dari sensor.
Data pengukuran diproses oleh ESP32 untuk menghitung persentase ketinggian air. Selanjutnya, sistem menentukan status kondisi air, mengaktifkan indikator LED, mengatur bunyi buzzer, menampilkan informasi pada LCD, dan mengirimkan data ke Blynk.
Jika status mencapai BAHAYA, sistem akan mengirimkan event notifikasi melalui Blynk apabila koneksi dan konfigurasi notifikasi berfungsi.
7. Klasifikasi Status Air
Sistem menggunakan empat tingkat kondisi.
| Persentase | Status | LED | Buzzer |
|---|---|---|---|
| 0–10% | AMAN | Hijau | Mati |
| Lebih dari 10% hingga kurang dari 50% | SIAGA | Kuning | Bunyi berkala |
| 50% hingga kurang dari 70% | WASPADA | Kuning | Bunyi lebih cepat |
| 70–100% | BAHAYA | Merah | Bunyi terus-menerus |
Jika pembacaan sensor gagal, sistem menampilkan status SENSOR ERROR dan mematikan alarm buzzer agar gangguan sensor tidak disamakan dengan kondisi air yang terukur. Kondisi ini tetap perlu diperiksa oleh pengguna.
Ambang tersebut adalah parameter awal untuk demonstrasi dan harus disesuaikan berdasarkan kebutuhan serta hasil pengujian.
8. Cara Merakit Rangkaian
- Pasang ESP32 pada breadboard atau dudukan yang stabil.
- Hubungkan sensor HC-SR04 ke GPIO 5 dan GPIO 18 sesuai tabel pin. Pasang pembagi tegangan pada jalur ECHO.
- Hubungkan LCD I2C dengan SDA ke GPIO 21 dan SCL ke GPIO 22.
- Pasang LED hijau pada GPIO 25, LED kuning pada GPIO 26, dan LED merah pada GPIO 27. Gunakan resistor untuk setiap LED.
- Hubungkan buzzer ke GPIO 4 dengan GND yang sama.
- Periksa seluruh sambungan daya, polaritas LED, serta hubungan GND.
- Tempatkan sensor menghadap permukaan air di bagian atas wadah simulasi.
- Pastikan ESP32 dan rangkaian elektronik terlindung dari air.
Jangan merendam ESP32, breadboard, atau komponen elektronik lainnya. Hanya sensor yang sesuai dan bagian pemasangannya yang boleh berada di area pemantauan dengan perlindungan yang memadai.
9. Instalasi Arduino IDE dan Board ESP32
Unduh Arduino IDE melalui situs resmi:
https://www.arduino.cc/en/software
Setelah instalasi selesai, buka Arduino IDE dan lakukan langkah berikut:
- Masuk ke Preferences atau Settings.
- Tambahkan alamat berikut pada Additional Boards Manager URLs.: https://espressif.github.io/arduino-esp32/package_esp32_index.json
- Buka Boards Manager.
- Cari ESP 32 dan instal paket board dari Espressif Systems.
- Hubungkan ESP32 ke komputer menggunakan kabel USB data.
- Pilih board yang sesuai, misalnya ESP32 Dev Module.
- Pilih port COM yang muncul pada menu Tools → Port.
Jika port tidak muncul, periksa kabel USB, driver USB-to-serial, dan koneksi board.
10. Instalasi Library
Buka Arduino IDE, kemudian pilih Sketch → Include Library → Manage Libraries.
Instal library berikut:
- Blynk
- LiquidCrystal I2C
- NewPing
Library WiFi dan Wire sudah tersedia melalui paket board ESP32.
11. Kode Program Lengkap
Kode tersebut mencakup seluruh fungsi berikut:
- Inisialisasi ESP32, LCD, sensor ultrasonik, dan buzzer.
- Pembacaan jarak permukaan air.
- Perhitungan persentase ketinggian air.
- Penentuan status AMAN, SIAGA, WASPADA, BAHAYA, dan SENSOR ERROR.
- Tampilan LCD 16×2.
- Indikator LED hijau, kuning, dan merah.
- Pengaturan pola buzzer tanpa jeda delay () panjang.
- Pengiriman data ke Blynk melalui V0, V1, dan V2.
- Pengiriman event banjir ketika status pertama kali memasuki BAHAYA.
- Tampilan data pengukuran pada Serial Monitor.
Kode menggunakan API LEDC baru untuk buzzer pada ESP32 Arduino Core 3.x.
Konfigurasi yang harus diganti
Buka file .ino, lalu ubah bagian berikut:
#define BLYNK_TEMPLATE_ID "ISI_TEMPLATE_ID"
#define BLYNK_TEMPLATE_NAME "Flood Monitoring"
#define BLYNK_AUTH_TOKEN "ISI_AUTH_TOKEN"
char ssid[] = "NAMA_WIFI";
char pass[] = "PASSWORD_WIFI";Masukkan data template, token perangkat, nama Wi-Fi, dan kata sandi Wi-Fi milik sendiri. Jangan membagikan Auth Token atau kata sandi Wi-Fi dalam artikel publik.
12. Cara Upload Program ke ESP32
- Unduh file kode program.
- Buka Arduino IDE.
- Pilih File → Open dan buka file
- Masukkan konfigurasi Blynk dan Wi-Fi.
- Pastikan library yang diperlukan sudah terinstal.
- Pilih board ESP32 yang sesuai.
- Pilih port COM yang benar.
- Klik Verify untuk memeriksa kompilasi.
- Jika tidak ada kesalahan, klik Upload.
- Tunggu hingga proses pengunggahan selesai.
- Buka Serial Monitor dan pilih baud rate 115200.
Jika proses upload berhenti pada tahap Connecting, pada beberapa board pengguna perlu menekan dan menahan tombol BOOT ketika proses upload dimulai, kemudian melepaskannya saat proses pengunggahan berlangsung.
Catatan: Jika muncul kesalahan terkait fungsi LEDC, periksa versi paket ESP32 yang terpasang. Kode ini ditujukan untuk ESP32 Arduino Core 3.x.
13. Cara Mengatur Blynk IoT
A. Membuat akun dan template
- Buka https://blynk.cloud/.
- Buat akun atau masuk ke akun yang sudah tersedia.
- Buka menu Templates atau Developer Zone.
- Buat template baru dengan nama Flood Monitoring.
- Pilih perangkat keras ESP32 dan koneksi Wi-Fi.
- Simpan template.
Nama template harus sama dengan nama pada program.
B. Membuat datastream
Buka menu Datastreams dan buat tiga datastream menggunakan tipe Virtual Pin.
| Nama | Pin | Tipe | Rentang |
|---|---|---|---|
| Ketinggian Air | V0 | Integer | 0–100 |
| Jarak Sensor | V1 | Double | 0–40 |
| Status Air | V2 | String | Tidak ditentukan |
Jika tersedia, atur satuan V0 menjadi % dan V1 menjadi cm.
C. Membuat perangkat
- Buka menu Devices.
- Tambahkan perangkat baru menggunakan template Flood Monitoring.
- Buka informasi perangkat.
- Salin Template ID, Template Name, dan Device Auth Token.
- Masukkan data tersebut ke program Arduino.
D. Membuat dashboard
- Tambahkan widget sesuai kebutuhan:
- Gauge atau Value Display untuk V0.
- Value Display untuk V1.
- Label atau Value Display untuk V2.
- Chart untuk melihat perubahan nilai ketinggian air jika riwayat data telah diaktifkan.
Hubungkan setiap widget dengan datastream yang sesuai dan simpan dashboard.
E. Mengatur notifikasi banjir
- Buka pengaturan Events pada template.
- Buat event dengan kode banjir.
- Aktifkan notifikasi sesuai opsi yang tersedia.
- Simpan pengaturan.
- Pastikan ESP32 terhubung ke Wi-Fi dan perangkat Blynk berstatus online.
- Uji notifikasi dengan menaikkan air hingga mencapai ambang BAHAYA.
Kode program memanggil:
Blynk.logEvent( "banjir", "PERINGATAN! Ketinggian air mencapai status BAHAYA!");
Karena itu, event code harus sama persis dengan banjir. Notifikasi bergantung pada konfigurasi event, koneksi internet, izin aplikasi, serta pengaturan akun Blynk.
14. Cara Menguji Alat
Setelah semua komponen terpasang dan program berhasil diunggah, lakukan pengujian bertahap.
- Nyalakan ESP32 dan periksa apakah LCD menyala.
- Buka Serial Monitor untuk melihat hasil pengukuran.
- Pastikan sensor membaca jarak permukaan air.
- Naikkan permukaan air secara bertahap.
- Perhatikan perubahan persentase pada LCD.
- Periksa LED hijau pada kondisi AMAN.
- Periksa LED kuning dan pola buzzer saat SIAGA dan WASPADA.
- Periksa LED merah dan buzzer saat BAHAYA.
- Buka dashboard Blynk untuk memastikan data V0, V1, dan V2 diperbarui.
- Periksa apakah notifikasi Blynk diterima saat status memasuki BAHAYA.
Catat hasil pengujian sebenarnya pada tabel berikut.
| No. | Pengujian | Hasil yang diharapkan | Hasil aktual |
|---|---|---|---|
| 1 | Air pada level rendah | AMAN | Diisi setelah pengujian |
| 2 | Air mulai meningkat | SIAGA | Diisi setelah pengujian |
| 3 | Air mencapai tingkat lebih tinggi | WASPADA | Diisi setelah pengujian |
| 4 | Air mencapai ambang bahaya | BAHAYA | Diisi setelah pengujian |
| 5 | Sensor gagal membaca | SENSOR ERROR | Diisi setelah pengujian |
| 6 | Koneksi Blynk aktif | Data tampil di dashboard | Diisi setelah pengujian |
| 7 | Status berubah menjadi BAHAYA | Notifikasi diterima | Diisi setelah pengujian |
15. Permasalahan yang Sering Terjadi
LCD menyala tetapi tulisan tidak muncul
Periksa alamat I2C. Modul LCD umumnya menggunakan 0x27 atau 0x3F. Periksa pula sambungan SDA, SCL, VCC, dan GND.
Sensor selalu menunjukkan SENSOR ERROR
Periksa koneksi TRIG dan ECHO, catu daya sensor, pembagi tegangan ECHO, serta posisi sensor terhadap permukaan air. Hindari permukaan yang terlalu bergelombang.
ESP32 tidak dapat terhubung ke Wi-Fi
Periksa nama jaringan, kata sandi, kekuatan sinyal, dan ketersediaan jaringan 2,4 GHz yang kompatibel dengan ESP32.
Data tidak muncul di Blynk
Pastikan Template ID, Auth Token, datastream, dan virtual pin sudah benar. Periksa status perangkat serta koneksi internet.
Buzzer tidak berbunyi
Periksa jenis buzzer, polaritas, sambungan GPIO 4, sumber daya, dan kompatibilitas API LEDC. Jika buzzer membutuhkan arus besar, gunakan driver yang sesuai.
Notifikasi tidak diterima
Pastikan event code banjir benar, notifikasi telah diaktifkan, perangkat online, dan aplikasi memiliki izin notifikasi.
16. Pengembangan Sistem
Sistem dapat dikembangkan lebih lanjut dengan menambahkan:
- Sensor hujan untuk melengkapi pemantauan kondisi cuaca.
- Baterai cadangan agar alat tetap bekerja ketika listrik padam.
- Panel surya sebagai sumber daya alternatif.
- Penyimpanan data historis untuk analisis perubahan air.
- Sirene eksternal untuk menjangkau area yang lebih luas.
- Beberapa sensor pada lokasi pemantauan berbeda.
- Sistem komunikasi cadangan jika koneksi internet terputus.
17. Kesimpulan
Alarm Banjir Otomatis Berbasis IoT merupakan proyek yang menggabungkan ESP32, sensor ultrasonik HC-SR04, LCD I2C, LED indikator, buzzer, dan Blynk IoT dalam satu sistem pemantauan.
Alat ini dirancang untuk membaca jarak permukaan air, menghitung persentase ketinggian relatif, menentukan status kondisi air, memberikan peringatan visual dan suara, serta mengirimkan data ke smartphone.
Selain dapat digunakan sebagai media pembelajaran elektronika, fisika, dan pemrograman, proyek ini juga menjadi contoh penerapan teknologi untuk membantu pemantauan lingkungan.
Namun, prototipe harus melalui pengujian, kalibrasi, perlindungan perangkat, dan evaluasi keandalan sebelum diterapkan di lapangan. Sistem ini bukan pengganti sistem peringatan banjir resmi dan tidak boleh dijadikan satu-satunya dasar keputusan keselamatan.
Selamat mencoba, berinovasi, dan mengembangkan teknologi tepat guna untuk masyarakat!

Tidak ada komentar:
Posting Komentar