Buka Senin - Jumat jam 08.30 s/d jam 16.30 , Sabtu Jam 8.30 s/d jam 13.00 , Minggu tutup
  • Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
  • Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
Beranda » Blog » Cara Bikin Sistem Deteksi Banjir IoT dengan Alarm Bertingkat dan Notifikasi Telegram

Cara Bikin Sistem Deteksi Banjir IoT dengan Alarm Bertingkat dan Notifikasi Telegram

Diposting pada 13 November 2026 oleh indo maker / Dilihat: 2 kali / Kategori: ,

Musim hujan sering kali membawa ancaman banjir luapan sungai yang datang tiba-tiba. Masalah utama di lapangan adalah pemantauan manual yang terbatas dan alur informasi yang lambat, sehingga masyarakat terlambat mendapatkan informasi evakuasi. Buat kamu para sobat maker dan IoT enthusiast, kita bisa menciptakan solusinya sendiri secara mandiri! Kita dapat merakit Early Warning System (EWS) banjir berbasis Internet of Things (IoT) yang mampu mengukur tinggi air secara real-time, ditenagai panel surya, serta langsung mengirimkan notifikasi darurat ke aplikasi Telegram di smartphone kamu. Sebelum kita melangkah ke proses perakitannya, kalau kamu tertarik mengembangkan perangkat pemantau lingkungan lainnya, kamu juga bisa membaca panduan tentang bikin alat monitoring kualitas udara ruangan berbasis esp32 dan sensor mq-135. Yuk, kita bedah komponen, skematik, hingga kode pemrogramannya!

Alat dan Bahan Project EWS Banjir

Komponen Jumlah Keterangan
Microcontroller ESP32 / NodeMCU ESP32 1 unit Unit pemroses utama dengan Wi-Fi dan Bluetooth internal
Sensor Ultrasonik HC-SR04 1 unit Sensor pengukur jarak permukaan air non-kontak (rentang 2–400 cm)
Layar LCD I2C 1 unit Tampilan lokal status peringatan, tinggi air (T_{\text{air}}), dan volume air (V_{\text{air}})
Buzzer & LED Indikator 1 set Modul alarm audio-visual lokal di lokasi pemantauan
Panel Surya / Solar Panel 1 unit Sumber daya utama mandiri (off-grid) di luar ruangan
Baterai Lithium-Ion 18650 2 unit Penyimpan daya cadangan (power backup storage)
Modul Charger TP5100 1 unit Pengontrol pengisian daya baterai yang efisien
Buck Converter MP1584 DC-DC 1 unit Regulator penurun tegangan daya keluaran baterai
Kapasitor & Resistor Secukupnya Kapasitor filter 0,1 µF, kapasitor daya 10 µF, sirkuit penunda RC (resistor 10 kΩ & kapasitor 1 µF)
Waterproof Box / Casing Tahan Air 1 unit Wadah pelindung perangkat keras dari cuaca luar

Skematik Rangkaian dan Arsitektur IoT

Arsitektur sistem EWS ini dibangun berdasarkan tiga lapisan (layer) utama IoT:

  1. Perception Layer: Diampu oleh Sensor Ultrasonik HC-SR04 yang bekerja mengukur jarak ke permukaan air tanpa sentuhan langsung.
  2. Network Layer: Mengandalkan modul Wi-Fi internal pada mikrokontroler ESP32 untuk mentransmisikan data mentah ke server cloud secara terus-menerus.
  3. Application Layer: Memanfaatkan Telegram Bot API dan antarmuka web (web interface) interaktif sebagai media penerima laporan visual dan peringatan otomatis.

Panduan Hubungan Rangkaian & Catatan Hardware:

  • Koneksi Sensor: Pin Trigger dan Echo pada sensor HC-SR04 dihubungkan langsung ke GPIO digital pada ESP32 (misalnya GPIO 5 untuk Trigger dan GPIO 18 untuk Echo).
  • Manajemen Daya Mandiri: Panel surya menyuplai arus ke modul charger TP5100 untuk mengisi dua baterai Lithium-Ion 18650. Tegangan baterai kemudian diturunkan menggunakan Buck Converter MP1584 DC-DC agar stabil sesuai kebutuhan rel daya ESP32 (jalur 3.3V).
  • Stabilisasi Daya & Filter: Berdasarkan rujukan teknis pabrikan, ditambahkan dioda proteksi ESD serta kapasitor minimal 10 µF pada pintu masuk daya utama (main power entrance) untuk menahan lonjakan arus saat transmisi Wi-Fi. Pasang pula kapasitor filter 0,1 µF berdekatan dengan pin daya digital dan pin ADC untuk meredam gangguan atau noise frekuensi tinggi.
  • Proteksi Pin Reset: Pin CHIP_PU pada ESP32 tidak boleh dibiarkan mengambang (floating). Hubungkan sirkuit delay RC yang terdiri dari resistor R = 10 kΩ dan kapasitor C = 1 µF ke pin CHIP_PU. Sirkuit ini memastikan rel daya 3.3V telah stabil sepenuhnya sebelum chip diaktifkan (boot up). Untuk panduan teknis kelistrikan perangkat secara mendalam, kamu dapat merujuk pada dokumentasi resmi hardware ESP32.

Cara Kerja dan Logika Alarm Bertingkat

Prinsip kerja alat ini dimulai ketika sensor ultrasonik HC-SR04 memancarkan gelombang suara ke arah permukaan air. Gelombang tersebut akan dipantulkan kembali setelah mengenai permukaan air, kemudian waktu tempuh pantulannya dibaca oleh ESP32 untuk mengetahui jarak antara sensor dan permukaan air.

Jarak tersebut dihitung berdasarkan waktu tempuh gelombang dan kecepatan suara di udara, yaitu sekitar 0,034 cm/µs. Karena gelombang menempuh perjalanan pergi dan pulang, hasil perhitungannya dibagi dua agar mendapatkan jarak sebenarnya.

Hal penting yang perlu dipahami adalah jarak antara sensor dan permukaan air berbanding terbalik dengan ketinggian air. Artinya, ketika permukaan air sungai naik mendekati sensor, jarak yang terbaca justru semakin kecil. Untuk mengetahui ketinggian air sebenarnya, ESP32 mengurangi tinggi posisi pemasangan sensor dari dasar sungai dengan jarak hasil pengukuran sensor.

Sebagai contoh, jika sensor dipasang setinggi 150 cm dari dasar sungai dan jarak yang terbaca adalah 50 cm, berarti ketinggian air mencapai 100 cm.

Hasil pengukuran kemudian ditampilkan pada layar LCD I2C agar kondisi air bisa dipantau langsung di lokasi. Data tersebut juga digunakan untuk menentukan tingkat peringatan berdasarkan ambang batas ketinggian air, yang dibagi menjadi tiga kategori berikut.

  • Status Aman / Normal: Ketinggian air masih berada di bawah batas awal peringatan. Sebagai acuan, kondisi normal memiliki ketinggian rata-rata sekitar 20 cm. LCD menampilkan status aman beserta hasil pengukuran ketinggian air.
  • Status Siaga / Alert (Tingkat 3 & 2): Ketinggian air mulai meningkat dan memasuki rentang 80–120 cm. Pada kondisi ini, sistem menampilkan status siaga pada LCD sebagai tanda bahwa permukaan air perlu diwaspadai.
  • Status Bahaya / Banjir (Alert 1): Ketinggian air telah melewati batas kritis, yaitu lebih dari 120 cm dari dasar sungai. ESP32 akan langsung mengaktifkan status bahaya sebagai tanda bahwa kondisi berpotensi menyebabkan banjir.

Mekanisme Peringatan Ganda (Dual Alert Mechanism): Sistem menjalankan dua respon peringatan secara bersamaan. Secara lokal, indikator LED merah menyala dan audio buzzer berbunyi nyaring di lokasi pemantauan untuk memberi peringatan langsung pada warga sekitar. Secara jarak jauh (remote), ESP32 mengeksekusi pengiriman pesan otomatis melalui Telegram Bot yang akan langsung muncul sebagai notifikasi push di layar terkunci (lock screen) smartphone warga maupun petugas.

Pemrograman ESP32 dan Notifikasi Telegram

Pengembangan program dilakukan menggunakan Arduino IDE. ESP32 dikonfigurasi agar terhubung ke jaringan Wi-Fi lokal, lalu berkomunikasi dengan Telegram Bot API menggunakan protokol HTTPS POST melalui endpoint /sendMessage.

Untuk memastikan pembacaan sensor tidak berfluktuasi akibat riak, gelombang, atau percikan air sungai, diterapkan logika pemrosesan data (data pre-processing). Pembacaan sensor direkam dalam interval 1 menit dengan mengambil 5 sampel data. Data bernilai nol (0) atau lonjakan ekstrem di luar rentang valid sensor (2–400 cm) diabaikan (ignored), lalu sampel yang valid dihitung nilai rata-ratanya (averaging).

Berikut adalah contoh kode C++/Arduino yang sudah menyertakan filtering data, perhitungan tinggi air yang benar, dan pengiriman notifikasi Telegram via HTTPS POST:

#include <WiFi.h>
#include <HTTPClient.h>

// Konfigurasi WiFi dan Telegram
const char* ssid = "NAMA_WIFI_KAMU";
const char* password = "PASSWORD_WIFI_KAMU";

String botToken = "BOT_TOKEN_TELEGRAM_KAMU";
String chatId = "CHAT_ID_TELEGRAM_KAMU";

// Definisi pin ESP32
const int trigPin = 5;
const int echoPin = 18;
const int buzzerPin = 19;
const int ledPin = 21;

// Tinggi posisi sensor dari dasar sungai (cm)
const float SENSOR_HEIGHT = 150.0;

void setup() {
  Serial.begin(115200);

  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(buzzerPin, OUTPUT);
  pinMode(ledPin, OUTPUT);

  // Menghubungkan ESP32 ke jaringan WiFi
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }
}

// Fungsi membaca jarak menggunakan sensor ultrasonik
float readSingleDistance() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);

  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long duration = pulseIn(echoPin, HIGH);

  return (duration * 0.034) / 2.0;
}

void loop() {
  float totalDistance = 0;
  int validSamples = 0;

  // Sampling 5 kali dan menyaring data tidak valid
  for (int i = 0; i < 5; i++) {
    float d = readSingleDistance();

    if (d >= 2.0 && d <= 400.0) {
      totalDistance += d;
      validSamples++;
    }

    delay(100);
  }

  if (validSamples > 0) {
    // Menghitung rata-rata jarak sensor
    float avgDistance = totalDistance / validSamples;

    // Menghitung ketinggian air sebenarnya
    float waterLevel = SENSOR_HEIGHT - avgDistance;

    // Memeriksa batas bahaya ketinggian air
    if (waterLevel > 120.0) {
      digitalWrite(buzzerPin, HIGH);
      digitalWrite(ledPin, HIGH);

      String alertMsg = "⚠️ PERINGATAN BANJIR! Status: BAHAYA. Tinggi Air: " +
                        String(waterLevel, 1) + " cm!";

      sendTelegramAlert(alertMsg);

    } else {
      digitalWrite(buzzerPin, LOW);
      digitalWrite(ledPin, LOW);
    }
  }

  // Interval pemantauan selama 1 menit
  delay(60000);
}

// Fungsi mengirim notifikasi melalui Telegram
void sendTelegramAlert(String message) {
  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;

    String url = "https://api.telegram.org/bot" +
                 botToken + "/sendMessage";

    http.begin(url);
    http.addHeader(
      "Content-Type",
      "application/x-www-form-urlencoded"
    );

    String httpRequestData = "chat_id=" + chatId +
                             "&text=" + message;

    // Mengirim pesan menggunakan HTTPS POST
    int httpResponseCode = http.POST(httpRequestData);

    http.end();
  }
}

 

Pengujian Sistem dan Hasil Evaluasi Real

Berdasarkan pengujian lapangan secara langsung pada aliran sungai (seperti pengujian empiris pada lokasi Sungai Belik di Kampung Sagan dan Kampung Iromejan), sistem ini mencatatkan performa sebagai berikut:

  1. Akurasi Pembacaan Tinggi: Pengujian perbandingan antara sensor ultrasonik dan alat ukur manual menghasilkan tingkat akurasi tinggi sebesar 98,50%, dengan rata-rata tingkat error hanya sebesar 1,27%.
  2. Pengiriman Notifikasi Sangat Cepat: Notifikasi pesan push pada aplikasi Telegram terbukti sangat responsif dengan rata-rata delay pengiriman hanya 1,82 detik (berkisar antara 2 hingga 5 detik sejak status bahaya terdeteksi).
  3. Batas Jarak Efektif Sensor: Pengujian menunjukkan bahwa kesalahan pembacaan (error) cenderung meningkat ketika jarak pengukuran melampaui 300 cm (3 meter). Hal ini disebabkan oleh sudut pantulan gelombang ultrasonik yang tidak kembali sempurna serta turbulensi pada permukaan air.

Tips Perawatan dan Pitfalls yang Harus Dihindari

  • Perawatan Sensor: Bersihkan permukaan sensor HC-SR04 secara berkala dari kotoran sungai, sampah terapung, atau percikan lumpur yang dapat menghalangi pemancaran gelombang ultrasonik.
  • Pemeliharaan Panel Surya: Pastikan kaca panel surya selalu bersih dari debu, dedaunan, atau lumut agar proses pengisian daya baterai 18650 tetap maksimal.
  • Jalur Pancaran Bebas Hambatan (Unobstructed Line of Sight): Pasang posisi sensor secara vertikal dan tegak lurus. Pastikan tidak ada tiang, kabel, atau struktur fisik yang menghalangi lintasan gelombang suara ke permukaan air.
  • Stabilitas Daya Mikrokontroler: Jangan biarkan pin CHIP_PU pada ESP32 dalam kondisi mengambang (floating). Pemasangan sirkuit penunda RC sangat krusial untuk mencegah reset berulang pada sistem saat terjadi fluktuasi tegangan.

Kesimpulan

Kombinasi antara komponen open-source berbiaya terjangkau seperti ESP32, sistem manajemen daya mandiri, serta integrasi pesan instan Telegram terbukti mampu menghasilkan sistem peringatan dini banjir (Early Warning System) berbasis masyarakat yang efektif dan responsif. Kecepatan notifikasi dalam hitungan detik mampu memangkas keterlambatan informasi manual sehingga proses evakuasi dapat dilakukan lebih awal. Yuk, sobat maker, rakit proyek IoT ini sekarang dan bantu amankan lingkungan sekitarmu dari ancaman banjir luapan!

Bagikan ke

Cara Bikin Sistem Deteksi Banjir IoT dengan Alarm Bertingkat dan Notifikasi Telegram

Saat ini belum tersedia komentar.

Silahkan tulis komentar Anda

Cara Bikin Sistem Deteksi Banjir IoT dengan Alarm Bertingkat dan Notifikasi Telegram

Produk yang sangat tepat, pilihan bagus..!

Berhasil ditambahkan ke keranjang belanja
Lanjut Belanja
Checkout
Produk Quick Order

Pemesanan dapat langsung menghubungi kontak dibawah: