Tutorial Sensor Water Flow YF-201 dengan Arduino UNO, Arduino Mega, dan ESP32

1. Pengantar Umum

Air merupakan salah satu sumber daya yang sangat penting bagi kehidupan. Dalam berbagai bidang seperti rumah tangga, industri, pertanian, dan sistem IoT, sering kali kita perlu mengukur jumlah air yang digunakan untuk memantau pemakaian atau mengatur sistem otomatis.

Salah satu komponen yang dapat melakukan hal tersebut adalah sensor Water Flow YF-201 — sebuah sensor yang dapat mendeteksi dan mengukur kecepatan serta volume aliran air secara elektronik.

Sensor ini banyak digunakan karena:
✅ Mudah digunakan dengan berbagai mikrokontroler (Arduino UNO, Mega, dan ESP32).
✅ Harga terjangkau dan desain ringkas.
✅ Mampu memberikan data digital yang bisa diolah menjadi informasi debit air maupun volume total.


2. Apa Itu Sensor Water Flow YF-201?

Sensor YF-201 adalah alat elektronik yang berfungsi untuk mengukur laju aliran air (flow rate) dalam pipa berukuran ½ inci.
Sensor ini bekerja berdasarkan prinsip efek Hall (Hall Effect), yaitu fenomena di mana perubahan medan magnet dapat menghasilkan sinyal listrik.

Ketika air mengalir melewati sensor, baling-baling kecil (rotor) di dalamnya ikut berputar.
Pada baling-baling ini terdapat magnet kecil, dan setiap kali magnet melewati sensor Hall Effect, akan dihasilkan pulsa digital (sinyal HIGH dan LOW).

Pulsa-pulsa ini kemudian dihitung oleh mikrokontroler, dan jumlahnya digunakan untuk menentukan:

  • Debit air (liter/menit)
  • Volume total air (liter)

Semakin cepat aliran air → semakin banyak pulsa → semakin besar nilai debit yang terhitung.


3. Prinsip Kerja Sensor

Cara kerja YF-201 dapat dijelaskan dalam tiga tahap utama:

1️⃣ Tahap Mekanik:
Air mengalir melewati badan sensor dan memutar baling-baling (impeller).

2️⃣ Tahap Magnetik:
Magnet pada baling-baling berputar dan melewati sensor Hall yang akan menghasilkan sinyal digital setiap kali magnet lewat.

3️⃣ Tahap Elektronik:
Sinyal pulsa digital tersebut dikirim ke mikrokontroler (Arduino/ESP32) untuk dihitung dan dikonversi menjadi nilai debit air.


4. Spesifikasi Teknis Sensor YF-201

ParameterNilai
Tegangan kerja5 – 18V DC
Arus kerja< 15 mA (pada 5V)
Rentang debit air1 – 30 Liter/menit
Output sinyalDigital (pulsa 0–5V)
Faktor kalibrasi± 450 pulsa ≈ 1 Liter
Akurasi±10%
Suhu kerja0°C – 80°C
Ukuran pipaG1/2 (½ inci)
Material bodiPlastik tahan suhu dan air

5. Struktur dan Bagian-Bagian

Sensor YF-201 terdiri dari tiga bagian utama:

  1. Badan Sensor (Body):
    Terbuat dari plastik tahan panas, berfungsi sebagai saluran air dan dudukan komponen internal.
  2. Baling-Baling (Rotor):
    Berputar mengikuti aliran air, menandakan kecepatan aliran air.
  3. Sensor Hall Effect:
    Mendeteksi putaran baling-baling melalui medan magnet dan menghasilkan pulsa digital untuk dikirim ke mikrokontroler.

6. Pinout dan Warna Kabel

Warna KabelFungsiKeterangan
MerahVCCTegangan input 5V–18V DC
HitamGNDGround
KuningSignalOutput pulsa digital (0–5V)

⚠️ Catatan:
Saat menggunakan ESP32 (logika 3.3V), sensor tetap bisa digunakan karena output-nya kompatibel dengan level logic rendah.


7. Prinsip Pembacaan oleh Mikrokontroler

Pulsa yang dihasilkan oleh sensor menunjukkan jumlah air yang mengalir.
Mikrokontroler akan menghitung jumlah pulsa per detik, lalu menggunakan rumus konversi untuk mengubahnya menjadi liter per menit.

Langkahnya:

  1. Air mengalir → baling-baling berputar.
  2. Setiap putaran → 1 pulsa digital dikirim ke mikrokontroler.
  3. Pulsa dihitung dalam interval waktu tertentu (misalnya setiap 1 detik).
  4. Nilai tersebut dikonversi menjadi debit (L/min) dan volume (L) berdasarkan konstanta kalibrasi.

8. Rumus Perhitungan

Rumus dasar yang digunakan:

Debit (L/min) = (Jumlah pulsa per detik / Faktor kalibrasi) × 60
Volume (L) = Jumlah total pulsa / Faktor kalibrasi

Contoh:
Jika sensor menghasilkan 45 pulsa per detik, dan faktor kalibrasi adalah 450 pulsa/liter,
maka:

Debit = (45 / 450) × 60 = 6 L/min

Artinya, air mengalir sebesar 6 liter per menit.


9. Komponen yang Dibutuhkan

Untuk mencoba sensor ini, berikut alat dan bahan yang diperlukan:

  • 1x Sensor Water Flow YF-201
  • 1x Arduino UNO / Mega / ESP32
  • Kabel jumper male-female
  • Breadboard (opsional)
  • Selang + sumber air
  • Resistor 10kΩ (opsional sebagai pull-up)
  • Multimeter (untuk cek tegangan)

10. Fungsi dan Aplikasi

Sensor YF-201 sering digunakan pada berbagai proyek, antara lain:

  • Pengukur debit air digital
  • Sistem pompa otomatis
  • Irigasi pintar berbasis IoT
  • Monitoring konsumsi air rumah tangga
  • Sistem pengiriman data ke web atau aplikasi mobile

Dengan integrasi bersama Arduino atau ESP32, kamu bisa membuat sistem yang:

  • Menghitung volume air otomatis.
  • Menyalakan atau mematikan pompa berdasarkan aliran.
  • Mengirim data debit air ke platform IoT seperti Blynk, MQTT, atau Firebase.

11. Kelebihan dan Kekurangan

✅ Kelebihan

  • Mudah digunakan dan diprogram.
  • Harga ekonomis.
  • Kompatibel dengan banyak mikrokontroler.
  • Desain kuat dan ringan.
  • Cocok untuk proyek edukasi, riset, dan IoT.

⚠️ Kekurangan

  • Tidak cocok untuk air kotor atau berlumpur.
  • Membutuhkan kalibrasi manual untuk akurasi.
  • Sensitivitas bisa menurun karena umur pemakaian.
  • Tidak akurat untuk aliran sangat kecil.

12. Cara Kalibrasi

  1. Siapkan wadah atau gelas ukur 1 liter.
  2. Jalankan sensor dan biarkan air mengalir sambil menghitung pulsa yang terbaca.
  3. Catat hasil pembacaan.
  4. Gunakan rumus kalibrasi:
Faktor Kalibrasi = Jumlah Pulsa / Volume Air (Liter)

Contoh Program menggunakan arduino uno

KomponenPin di KomponenSambung ke Pin Arduino UNO
YF-201 SensorMerah (VCC)5V
Hitam (GND)GND
Kuning (Signal)D2
LCD I2CVCC5V
GNDGND
SDAA4
SCLA5
BuzzerPositif (+)D8
Negatif (-)GND
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// --- Konfigurasi LCD (alamat I2C biasanya 0x27 atau 0x3F) ---
LiquidCrystal_I2C lcd(0x27, 16, 2);

// --- Pin Sensor Flow ---
const int flowPin = 2;   // Pin sensor YF-201 ke pin D2 (interrupt)
volatile int pulseCount; // Variabel untuk menghitung pulsa

// --- Pin Buzzer ---
const int buzzerPin = 8;

// --- Konstanta sensor (kalibrasi) ---
const float calibrationFactor = 450.0; // sesuaikan dengan sensormu

// --- Variabel waktu & flow ---
unsigned long oldTime;
float flowRate;
float totalLiters;

// --- Target Volume ---
float targetLiters = 5.0; // target otomatis (liter)

void pulseCounter() {
  pulseCount++;
}

void setup() {
  Serial.begin(9600);
  lcd.init();
  lcd.backlight();

  pinMode(flowPin, INPUT_PULLUP);
  pinMode(buzzerPin, OUTPUT);
  digitalWrite(buzzerPin, LOW);

  pulseCount = 0;
  flowRate = 0.0;
  totalLiters = 0.0;
  oldTime = 0;

  attachInterrupt(digitalPinToInterrupt(flowPin), pulseCounter, FALLING);

  lcd.setCursor(0, 0);
  lcd.print("Water Flow Meter");
  delay(2000);
  lcd.clear();
}

void loop() {
  if (millis() - oldTime > 1000) { // Hitung setiap 1 detik
    detachInterrupt(digitalPinToInterrupt(flowPin));

    // Hitung flow rate (liter/menit)
    flowRate = ((1000.0 / (millis() - oldTime)) * pulseCount) / calibrationFactor * 60.0;
    oldTime = millis();

    // Hitung total volume (liter)
    float litersThisSecond = (flowRate / 60.0);
    totalLiters += litersThisSecond;

    // --- Tampilkan di Serial Monitor ---
    Serial.print("Flow rate: ");
    Serial.print(flowRate);
    Serial.print(" L/min\t");
    Serial.print("Total: ");
    Serial.print(totalLiters);
    Serial.println(" L");

    // --- Tampilkan di LCD ---
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Flow:");
    lcd.print(flowRate, 2);
    lcd.print(" L/m");

    lcd.setCursor(0, 1);
    lcd.print("Total:");
    lcd.print(totalLiters, 2);
    lcd.print(" L");

    // --- Kondisi Buzzer dengan Nada ---
    if (totalLiters >= targetLiters) {
      // kalau sudah capai target -> nada "sukses"
      tone(buzzerPin, 1000, 200); delay(250);
      tone(buzzerPin, 1500, 200); delay(250);
      tone(buzzerPin, 2000, 300); delay(500);
      noTone(buzzerPin);
    } else if (flowRate <= 0.01) {
      // kalau air berhenti -> nada pendek
      tone(buzzerPin, 800, 150);
      delay(200);
      noTone(buzzerPin);
    } else {
      noTone(buzzerPin); // kalau normal -> buzzer diam
    }

    pulseCount = 0;
    attachInterrupt(digitalPinToInterrupt(flowPin), pulseCounter, FALLING);
  }
}

Contoh Program menggunakan ESP32

KomponenPin di KomponenSambung ke Pin ESP32
YF-201 SensorMerah (VCC)5V
Hitam (GND)GND
Kuning (Signal)GPIO 27
LCD I2CVCC5V
GNDGND
SDAGPIO 21
SCLGPIO 22
BuzzerPositif (+)GPIO 19
Negatif (-)GND
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// --- Konfigurasi LCD (alamat I2C biasanya 0x27 atau 0x3F) ---
LiquidCrystal_I2C lcd(0x27, 16, 2);

// --- Pin Sensor Flow ---
const int flowPin = 27;   // YF-201 ke GPIO27 (bisa ubah sesuai wiring)
volatile int pulseCount;  // Variabel hitung pulsa

// --- Pin Buzzer ---
const int buzzerPin = 19;

// --- Konstanta sensor (kalibrasi) ---
const float calibrationFactor = 450.0; // sesuaikan sensor kamu

// --- Variabel waktu & flow ---
unsigned long oldTime;
float flowRate;
float totalLiters;

// --- Target Volume ---
float targetLiters = 5.0; // target otomatis (liter)

// --- ISR untuk hitung pulsa ---
void IRAM_ATTR pulseCounter() {
  pulseCount++;
}

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

  // --- Inisialisasi LCD ---
  Wire.begin(21, 22); // SDA=21, SCL=22 (default ESP32)
  lcd.init();
  lcd.backlight();

  // --- Setup pin ---
  pinMode(flowPin, INPUT_PULLUP);
  pinMode(buzzerPin, OUTPUT);
  digitalWrite(buzzerPin, LOW);

  // --- Variabel awal ---
  pulseCount = 0;
  flowRate = 0.0;
  totalLiters = 0.0;
  oldTime = 0;

  // --- Attach interrupt ---
  attachInterrupt(digitalPinToInterrupt(flowPin), pulseCounter, FALLING);

  lcd.setCursor(0, 0);
  lcd.print("Water Flow Meter");
  delay(2000);
  lcd.clear();
}

void loop() {
  if (millis() - oldTime > 1000) { // update tiap 1 detik
    detachInterrupt(digitalPinToInterrupt(flowPin));

    // Hitung flow rate (liter/menit)
    flowRate = ((1000.0 / (millis() - oldTime)) * pulseCount) / calibrationFactor * 60.0;
    oldTime = millis();

    // Hitung total volume (liter)
    float litersThisSecond = (flowRate / 60.0);
    totalLiters += litersThisSecond;

    // --- Serial Monitor ---
    Serial.print("Flow rate: ");
    Serial.print(flowRate);
    Serial.print(" L/min\t");
    Serial.print("Total: ");
    Serial.print(totalLiters);
    Serial.println(" L");

    // --- Tampilkan di LCD ---
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Flow:");
    lcd.print(flowRate, 2);
    lcd.print(" L/m");

    lcd.setCursor(0, 1);
    lcd.print("Total:");
    lcd.print(totalLiters, 2);
    lcd.print(" L");

    // --- Nada buzzer ---
    if (totalLiters >= targetLiters) {
      // nada sukses (3 nada naik)
      tone(buzzerPin, 1000, 200); delay(250);
      tone(buzzerPin, 1500, 200); delay(250);
      tone(buzzerPin, 2000, 300); delay(500);
      noTone(buzzerPin);
    } else if (flowRate <= 0.01) {
      // beep pendek kalau air berhenti
      tone(buzzerPin, 800, 150);
      delay(200);
      noTone(buzzerPin);
    } else {
      noTone(buzzerPin); // normal diam
    }

    pulseCount = 0;
    attachInterrupt(digitalPinToInterrupt(flowPin), pulseCounter, FALLING);
  }
}

Contoh Program menggunakan arduino mega

KomponenPin di KomponenSambung ke Pin Arduino Mega
YF-201 SensorMerah (VCC)5V
Hitam (GND)GND
Kuning (Signal)D2
LCD 16×2 I2CVCC5V
GNDGND
SDAPin 20 (SDA)
SCLPin 21 (SCL)
Buzzer aktifPositif (+)D8
Negatif (–)GND

Kesimpulan

Sensor Water Flow YF-201 adalah sensor berbasis Hall Effect yang mampu mengubah aliran air menjadi sinyal digital berupa pulsa.
Dengan bantuan mikrokontroler seperti Arduino UNO, Arduino Mega, dan ESP32, sensor ini bisa digunakan untuk mengukur kecepatan aliran (L/min) dan volume total air (L) secara akurat dan real-time.

Sensor ini sangat cocok untuk berbagai proyek seperti:

  • Sistem pengukuran air digital.
  • Otomatisasi pompa air.
  • Monitoring air berbasis IoT.
  • Eksperimen dan pembelajaran di bidang elektronika.

Dengan kalibrasi dan pemasangan yang benar, sensor ini mampu memberikan hasil yang stabil dan akurat, menjadikannya pilihan terbaik untuk proyek edukasi maupun pengembangan teknologi air cerdas.


✨ “Dengan memahami prinsip kerja dan karakteristik sensor Water Flow YF-201, kita dapat menciptakan berbagai sistem otomatis yang efisien, akurat, dan bermanfaat untuk kehidupan sehari-hari.”

Leave a Reply

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