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 komponen | Gambar Komponen |
|---|---|
| NodeMcu esp8266 | ![]() |
| Modul RTC DS1307 | ![]() |
| Pompa DC 5V | ![]() |
| Relay Module 1 Channel | ![]() |
| LCD 16×2 I2C | ![]() |
| Kabel Jumper | ![]() |
| Breadboard | ![]() |
Gambar Rangkaian

| NodeMcu esp8266 | Relay |
|---|---|
| Pin D1 | IN |
| Vin /VU | VCC (+) |
| GND | GND (-) |
| NodeMcu Esp8266 | LCD I2C |
|---|---|
| Pin D5 | SCL |
| Pin D6 | SDA |
| Vin / Vu | VCC |
| GND | GND |
| NodeMcu Esp8266 | DS1307 |
|---|---|
| Pin D5 | SCL |
| Pin D6 | SDA |
| Vin / Vu | VCC |
| GND | GND |
Cara Kerja Sistem
Cara kerja sistem penyiram tanaman terjadwal ini adalah sebagai berikut:
- RTC DS1307 menyimpan dan menyediakan data waktu secara real-time.
- ESP8266 membaca data jam dan menit dari RTC.
- Sistem membandingkan waktu saat ini dengan jadwal penyiraman yang telah ditentukan.
- Jika waktu sesuai dengan jadwal, relay diaktifkan sehingga pompa air menyala.
- Pompa air akan bekerja selama durasi tertentu.
- Setelah durasi penyiraman selesai, pompa dimatikan secara otomatis.
- Waktu saat ini dan status pompa ditampilkan pada LCD dan halaman web.
Library yang Digunakan
Pastikan library berikut sudah terpasang pada Arduino IDE:
ESP8266WiFi.hESPAsyncWebServer.hESPAsyncTCP.hRTClib.hLiquidCrystal_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
- Rangkai RTC DS1307, relay, pompa air, dan LCD sesuai dengan skema koneksi.
- Unggah program ke ESP8266 menggunakan Arduino IDE.
- Atur waktu RTC (sekali saja) sesuai dengan waktu saat ini.
- Nyalakan sistem dan pastikan semua komponen bekerja dengan baik.
- Hubungkan HP atau laptop ke jaringan WiFi SmartWaterRTC_AP.
- Buka browser dan akses alamat IP
192.168.4.1untuk memantau sistem.







