• 082226375801
  • alfianmaarif@ee.uad.ac.id
  • Yogyakarta
Materi
Tutorial ESP32 Membuat Alat Monitoring Ketinggian Air Sungai + Alarm Banjir IoT dengan Blynk & LCD

Tutorial ESP32 Membuat Alat Monitoring Ketinggian Air Sungai + Alarm Banjir IoT dengan Blynk & LCD

Tutorial ESP32 Membuat Alat Monitoring Ketinggian Air Sungai + Alarm Banjir IoT dengan Blynk & LCD

Pada bagian ini akan dibahas pembuatan sistem monitoring ketinggian air sungai dan alarm banjir menggunakan mikrokontroler ESP32, sensor jarak, dan sistem Internet of Things (IoT) dengan Blynk IoT, serta software simulasi WOKWI. Skematik rangkaian ditunjukkan pada Gambar 1, program Arduino pada Kode 1, dan video pembuatan pada tautan Video 1. Ketinggian air akan diukur dan ditampilkan pada LCD 16×2. Pada kondisi batas tertentu, buzzer alarm dan lampu indikator LED akan menyala otomatis serta mengunggah data ke aplikasi Blynk IoT.

Gambar 1. Skematik rangkaian sistem

Pemetaan PIN:
* LCD 16×2 I2C
GND => GND
VCC => 5V
SDA => 21
SCL => 22
* HC-SR04
VCC => 5V
TRIG => 5
ECHO => 18
GND => GND
* BUZZER
GND – GND
OUT – 13

Kode Arduino 1. Kode Program

// ============================= 
// ALFIAN CENTER 
// SUBSCRIBE 
// Tutorial ESP32 Membuat Alat Monitoring Ketinggian Air Sungai dengan Alarm Banjir IoT dengan Blynk & LCD
// PROGRAM BAKAL AKU KIRIM DENGAN SYARAT DIBAWAH 
// 50 LIKE, 20 KOMEN DAN *WAJIB SUBSCRIBE*
// PROGRAM DIKIRIM VIA KOMENTAR 
// =============================

#define BLYNK_TEMPLATE_ID "MASUKKAN_ID_DISINI"
#define BLYNK_TEMPLATE_NAME "Alarm Banjir IoT"
#define BLYNK_AUTH_TOKEN "MASUKKAN_TOKEN_DISINI"

#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <LiquidCrystal_I2C.h>

char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";

LiquidCrystal_I2C lcd(0x27, 16, 2);

const int trigPin = 5;
const int echoPin = 18;
const int buzzerPin = 13;

// --- KALIBRASI ---
const int tinggiMaksimal = 100; // Jarak sensor ke dasar (dalam cm)
int tinggiAir = 0;
bool sedangBanjir = false;

BlynkTimer timer;

void monitoringSistem() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  long durasi = pulseIn(echoPin, HIGH);
  int jarakSensor = durasi * 0.034 / 2;

  // Rumus Konversi ke Ketinggian Air
  tinggiAir = tinggiMaksimal - jarakSensor;
  
  // Mencegah nilai minus jika ada error pembacaan
  if (tinggiAir < 0) tinggiAir = 0; 

  // Tampilan LCD Baris 1
  lcd.setCursor(0, 0);
  lcd.print("Air: ");
  lcd.print(tinggiAir);
  lcd.print(" cm / ");
  lcd.print(tinggiMaksimal);
  lcd.print("cm ");

  // --- LOGIKA ALARM BERDASARKAN TINGGI AIR ---
  // Kita set Bahaya jika air sudah setinggi 85cm (atau sisa 15cm ke sensor)
  if (tinggiAir >= 85) { 
    tone(buzzerPin, 1000);
    lcd.setCursor(0, 1);
    lcd.print("STATUS: BAHAYA!!");

    if (sedangBanjir == false) {
      Blynk.virtualWrite(V0, 1); // Aktifkan Alarm and Sound di Web
      Blynk.logEvent("peringatan_banjir", "WASPADA! Ketinggian air kritis!");
      sedangBanjir = true;
    }
  } 
  else {
    noTone(buzzerPin);
    lcd.setCursor(0, 1);
    lcd.print("STATUS: AMAN    ");

    if (sedangBanjir == true) {
      Blynk.virtualWrite(V0, 0); // Matikan Alarm and Sound di Web
      sedangBanjir = false;
    }
  }

  // Kirim data ketinggian ke Blynk V1
  Blynk.virtualWrite(V1, tinggiAir);
  // Kirim data ketinggian ke Blynk V2
  Blynk.virtualWrite(V2, jarakSensor);
}

void setup() {
  lcd.init();
  lcd.backlight();
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(buzzerPin, OUTPUT);

  Blynk.begin(auth, ssid, pass);
  timer.setInterval(1000L, monitoringSistem);
}

void loop() {
  Blynk.run();
  timer.run();
}

Video 1. Video tutorial pembuatan simulasi di WOKWI

Leave a Reply

Your email address will not be published. Required fields are marked *