Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

ESP32-Based Smart Water Flow and Ultrasonic Level Monitoring System with I2C LCD Display

View and Edit Project In Cirkit DesignerImage of ESP32-Based Smart Water Flow and Ultrasonic Level Monitoring System with I2C LCD Display

Circuit Documentation

Summary

This circuit is designed to measure water flow and distance using a water flow sensor and an ultrasonic distance sensor, respectively. The data is processed by an ESP32 microcontroller and displayed on a 16x2 I2C LCD. The ESP32 also handles the communication with the sensors and the display.

Component List

  1. Water Flow Sensor

    • Description: Measures the rate of water flow.
    • Pins: Signal, Vcc, GND
  2. ESP32-Devkitc-V4

    • Description: A powerful microcontroller with Wi-Fi and Bluetooth capabilities.
    • Pins: 3v3, EN, VP, VN, 34, 35, 32, 33, 25, 26, 27, 14, 12, GND, 13, D2, D3, CMD, 5V, 23, 22, TX, RX, 21, 19, 18, 5, 17, 16, 4, 0, 2, 15, D1, D0, CLK
  3. MKE-S01 Ultrasonic Distance Sensor

    • Description: Measures distance using ultrasonic waves.
    • Pins: GND, 5V, TRIG, ECHO
  4. 16x2 I2C LCD

    • Description: Displays data in a 16x2 character format using I2C communication.
    • Pins: GND, VCC, SDA, SCL

Wiring Details

Water Flow Sensor

ESP32-Devkitc-V4

MKE-S01 Ultrasonic Distance Sensor

16x2 I2C LCD

Documented Code

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

// Inisialisasi LCD I2C dengan alamat 0x27 (alamat bisa berbeda tergantung modul)
LiquidCrystal_I2C lcd(0x27, 16, 2);

// Inisialisasi pin sensor ultrasonik
const int trigPin = 2;
const int echoPin = 3;

// Inisialisasi pin sensor aliran air
const int flowSensorPin = 0;

void setup() {
  // Inisialisasi LCD
  lcd.begin();
  lcd.backlight();
  lcd.print("Level Tangki:");

  // Inisialisasi pin sensor ultrasonik
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);

  // Inisialisasi pin sensor aliran air
  pinMode(flowSensorPin, INPUT);
}

void loop() {
  // Mengukur jarak menggunakan sensor ultrasonik
  long duration, distance;
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration / 2) / 29.1;

  // Menampilkan jarak pada LCD
  lcd.setCursor(0, 1);
  lcd.print("Jarak: ");
  lcd.print(distance);
  lcd.print(" cm  ");

  // Membaca data dari sensor aliran air
  int flowRate = digitalRead(flowSensorPin);
  // Proses data flowRate sesuai kebutuhan

  delay(1000);
}

This code initializes the LCD, ultrasonic distance sensor, and water flow sensor. It measures the distance using the ultrasonic sensor and displays it on the LCD. It also reads the water flow rate from the water flow sensor.