Monitoring Ketinggian Air Menggunakan Arduino Mega, Sensor Ultrasonik, dan LCD I2C

Monitoring Ketinggian Air Menggunakan Arduino Mega, Sensor Ultrasonik, dan LCD I2C

Proyek Arduino ini memanfaatkan sensor ultrasonik HC-SR04 untuk mengukur ketinggian air dan menampilkan hasilnya dalam bentuk persentase di LCD I2C secara real-time. Dilengkapi buzzer sebagai alarm, cocok untuk monitoring air di tower, toren, sungai, atau waduk.

Pemantauan ketinggian air merupakan aspek penting dalam pengelolaan air bersih, pengendalian banjir, serta efisiensi penggunaan air di rumah dan industri. Melalui teknologi sederhana berbasis Arduino, kita bisa menciptakan sistem monitoring air yang akurat, hemat biaya, dan mudah dikembangkan. Proyek ini cocok untuk penerapan di toren air rumah, tangki penampungan, hingga sungai kecil.

1. Alat dan Bahan

NoAlat/BahanJumlah
1Arduino Mega 25601 unit
2Sensor Ultrasonic HC-SR041 unit
3LCD 16×2 + I2C module1 unit
4Buzzer (aktif)1 unit
5Kabel jumperSecukupnya
6Breadboard (opsional)1 buah
7Power supply (misal USB 5V)1 unit

2. Cara Pemasangan / Skema Koneksi Pin

Sensor HC-SR04 ke Arduino Mega:

SensorArduino Mega
VCC5V
GNDGND
TRIGPin 9
ECHOPin 8

LCD I2C ke Arduino Mega:

LCDArduino Mega
VCC5V
GNDGND
SDAPin 20
SCLPin 21

Buzzer Aktif ke Arduino Mega:

BuzzerArduino Mega
(+)Pin 18
(–)GND

Pastikan sensor dipasang di bagian atas wadah air secara tegak lurus agar pembacaan akurat.

3. Kode Program

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define TRIG_PIN 9
#define ECHO_PIN 8
#define BUZZER_PIN 18

LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C bisa 0x27 atau 0x3F

const float tinggiGelas = 15.0; // Ubah sesuai tinggi tangki/gelas (dalam cm)

void setup() {
  Serial.begin(9600);
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  pinMode(BUZZER_PIN, OUTPUT);

  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Cek Air Gelas...");
  delay(2000);
  lcd.clear();
}

float bacaJarak() {
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  long durasi = pulseIn(ECHO_PIN, HIGH);
  float jarak = durasi * 0.034 / 2; // Konversi ke cm
  return jarak;
}

void bunyikanBuzzer(int persenAir) {
  if (persenAir >= 90) {
    tone(BUZZER_PIN, 2000);
    delay(100);
    noTone(BUZZER_PIN);
    delay(100);
  } else if (persenAir >= 70) {
    tone(BUZZER_PIN, 2000);
    delay(100);
    noTone(BUZZER_PIN);
    delay(300);
  } else if (persenAir >= 50) {
    tone(BUZZER_PIN, 2000);
    delay(100);
    noTone(BUZZER_PIN);
    delay(600);
  } else {
    noTone(BUZZER_PIN);
  }
}

void loop() {
  float jarakSekarang = bacaJarak();
  float tinggiAir = tinggiGelas - jarakSekarang;

  if (tinggiAir < 0) tinggiAir = 0;
  if (tinggiAir > tinggiGelas) tinggiAir = tinggiGelas;

  int persenAir = (tinggiAir / tinggiGelas) * 100;

  Serial.print("Persentase Air: ");
  Serial.print(persenAir);
  Serial.println("%");

  lcd.setCursor(0, 0);
  lcd.print("Air: ");
  lcd.print(persenAir);
  lcd.print("%     ");

  lcd.setCursor(0, 1);
  lcd.print("Jarak: ");
  lcd.print(jarakSekarang);
  lcd.print(" cm     ");

  bunyikanBuzzer(persenAir);
}

4. KESIMPULAN

Proyek ini adalah solusi sederhana namun efektif untuk memantau ketinggian air secara realtime dengan menggunakan sensor ultrasonik. Dengan tampilan LCD dan alarm buzzer yang terintegrasi, pengguna dapat dengan mudah mengetahui status air secara langsung tanpa harus membuka tutup tangki atau turun ke sungai.

💡 Manfaat & Aplikasi:

  • Toren/tangki air rumah: Cegah air meluber atau habis.
  • Monitoring sungai/waduk: Deteksi dini potensi banjir.
  • Penampungan air hujan: Kendalikan kapasitas air agar efisien.

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

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