Sistem Penyiram Tanaman Terjadwal Berbasis ESP8266

Penyiraman tanaman tidak selalu harus bergantung pada kondisi tanah. Pada beberapa jenis tanaman, penyiraman justru lebih efektif jika dilakukan pada waktu-waktu tertentu, misalnya pagi dan sore hari. Oleh karena itu, pada artikel ini kita akan membahas cara membuat Sistem Penyiram Tanaman Terjadwal menggunakan ESP8266 dan pompa air.

Berbeda dengan sistem sebelumnya yang berbasis sensor kelembapan tanah, sistem ini akan menyalakan pompa air berdasarkan jadwal waktu yang telah ditentukan. ESP8266 tetap dijalankan dalam mode Access Point (AP) dan menggunakan Async Web Server, sehingga sistem dapat diakses tanpa koneksi internet.

Sistem penyiram tanaman terjadwal ini bekerja dengan memanfaatkan modul RTC DS1307 sebagai penentu waktu. RTC akan menyimpan informasi jam, menit, dan tanggal secara mandiri. ESP8266 membaca data waktu dari RTC, lalu mengaktifkan pompa air sesuai jadwal yang telah ditentukan.

Status pompa, waktu saat ini, dan jadwal penyiraman ditampilkan melalui LCD 16×2 serta dapat dipantau melalui halaman web menggunakan browser HP atau laptop.

Alat dan Bahan yang Dibutuhkan

Nama komponenGambar Komponen
NodeMcu esp8266
Modul RTC DS1307
Pompa DC 5V
Relay Module 1 Channel
LCD 16×2 I2C
Kabel Jumper
Breadboard

Gambar Rangkaian

NodeMcu esp8266Relay
Pin D1IN
Vin /VUVCC (+)
GNDGND (-)
NodeMcu Esp8266LCD I2C
Pin D5SCL
Pin D6SDA
Vin / VuVCC
GNDGND
NodeMcu Esp8266DS1307
Pin D5SCL
Pin D6SDA
Vin / VuVCC
GNDGND

Cara Kerja Sistem

Cara kerja sistem penyiram tanaman terjadwal ini adalah sebagai berikut:

  1. RTC DS1307 menyimpan dan menyediakan data waktu secara real-time.
  2. ESP8266 membaca data jam dan menit dari RTC.
  3. Sistem membandingkan waktu saat ini dengan jadwal penyiraman yang telah ditentukan.
  4. Jika waktu sesuai dengan jadwal, relay diaktifkan sehingga pompa air menyala.
  5. Pompa air akan bekerja selama durasi tertentu.
  6. Setelah durasi penyiraman selesai, pompa dimatikan secara otomatis.
  7. Waktu saat ini dan status pompa ditampilkan pada LCD dan halaman web.

Library yang Digunakan

Pastikan library berikut sudah terpasang pada Arduino IDE:

  • ESP8266WiFi.h
  • ESPAsyncWebServer.h
  • ESPAsyncTCP.h
  • RTClib.h
  • LiquidCrystal_I2C.h

Code

#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>

#define RELAY_PIN D1

LiquidCrystal_I2C lcd(0x27, 16, 2);
RTC_DS1307 rtc;

const char* ssid = "SmartWaterRTC_AP";
const char* password = "12345678";

AsyncWebServer server(80);

bool pumpState = false;

int waterHour = 6;
int waterMinute = 0;
int wateringDuration = 10; // detik

unsigned long startMillis = 0;
bool wateringActive = false;

String pumpStatusText() {
  String text = "";

  if (pumpState == true) {
    text = "ON";
  } else {
    text = "OFF";
  }

  return text;
}

String htmlPage(DateTime now) {
  String html = "";
  html += "<!DOCTYPE html><html><head>";
  html += "<meta name='viewport' content='width=device-width, initial-scale=1'>";
  html += "<title>Smart Watering RTC</title>";
  html += "</head><body>";
  html += "<h1>Penyiram Tanaman Terjadwal</h1>";
  html += "<p>Waktu Saat Ini: ";
  html += String(now.hour());
  html += ":";
  html += String(now.minute());
  html += "</p>";
  html += "<p>Status Pompa: ";
  html += pumpStatusText();
  html += "</p>";
  html += "<p>Jadwal Penyiraman: 06:00</p>";
  html += "</body></html>";
  return html;
}

void setup() {
  lcd.init();
  lcd.backlight();

  pinMode(RELAY_PIN, OUTPUT);
  digitalWrite(RELAY_PIN, HIGH);

  rtc.begin();

  WiFi.mode(WIFI_AP);
  WiFi.softAP(ssid, password);

  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    DateTime now = rtc.now();
    request->send(200, "text/html", htmlPage(now));
  });

  server.begin();
}

void loop() {
  DateTime now = rtc.now();

  if (wateringActive == false && now.hour() == waterHour && now.minute() == waterMinute) {
    digitalWrite(RELAY_PIN, LOW);
    pumpState = true;
    wateringActive = true;
    startMillis = millis();
  }

  if (wateringActive == true && millis() - startMillis >= wateringDuration * 1000) {
    digitalWrite(RELAY_PIN, HIGH);
    pumpState = false;
    wateringActive = false;
  }

  lcd.setCursor(0, 0);
  lcd.print("Time: ");
  lcd.print(now.hour());
  lcd.print(":");
  lcd.print(now.minute());
  lcd.print("   ");

  lcd.setCursor(0, 1);
  lcd.print("Pump: ");
  lcd.print(pumpStatusText());
  lcd.print("   ");

  delay(1000);
}

Cara Menggunakan Sistem

  1. Rangkai RTC DS1307, relay, pompa air, dan LCD sesuai dengan skema koneksi.
  2. Unggah program ke ESP8266 menggunakan Arduino IDE.
  3. Atur waktu RTC (sekali saja) sesuai dengan waktu saat ini.
  4. Nyalakan sistem dan pastikan semua komponen bekerja dengan baik.
  5. Hubungkan HP atau laptop ke jaringan WiFi SmartWaterRTC_AP.
  6. Buka browser dan akses alamat IP 192.168.4.1 untuk memantau sistem.