Alat Pemberi Pakan Otomatis Berbasis ESP8266

Alat Pemberi Pakan Otomatis Berbasis ESP8266

Memberi pakan hewan secara teratur merupakan hal penting, baik untuk hewan peliharaan di rumah maupun ternak skala kecil. Namun, kesibukan sehari-hari sering membuat jadwal pemberian pakan menjadi tidak konsisten. Untuk mengatasi hal tersebut, kita dapat memanfaatkan teknologi IoT.

Pada blog post ini, kita akan membahas cara membuat Alat Pemberi Pakan Otomatis menggunakan ESP8266 dan servo motor. Sistem ini mampu mengeluarkan pakan secara otomatis dan menampilkan informasi melalui LCD 16×2, serta dapat dipantau melalui dashboard web tanpa koneksi internet.

Seperti proyek-proyek sebelumnya, ESP8266 dijalankan dalam mode Access Point (AP) dan menggunakan Async Web Server, sehingga sistem tetap sederhana dan mudah diterapkan.

Alat pemberi pakan otomatis ini bekerja dengan menggerakkan servo motor untuk membuka dan menutup wadah pakan berdasarkan jadwal waktu tertentu. Penentuan waktu dilakukan menggunakan RTC (Real Time Clock) sehingga jadwal pemberian pakan tetap akurat meskipun ESP8266 dimatikan atau kehilangan daya. ESP8266 bertugas membaca waktu dari RTC, mengontrol servo sesuai jadwal, menampilkan status sistem pada LCD 16×2, serta menyediakan halaman web yang dapat diakses melalui HP atau laptop untuk memantau proses pemberian pakan.

Alat dan Bahan yang Dibutuhkan

Nama KomponenGambar Komponen
NodeMcu ESP8266
Servo SG-90
LCD 16×2 I2C
RTC DS1307
Kabel Jumper
Breadboard

Gambar Rangkaian

ESP8266Servo
Pin D4Kabel orange
Vin / VuKabel Merah
GNDKabel Cokelat
ESP8266 LCD I2C
D5SCL
D6SDA
Vin / VUVCC
GNDGND
ESP8266RTC DS1307
D5SCL
D6SDA
Vin / VUVCC
GNDGND

Cara Kerja Sistem

Cara kerja alat pemberi pakan otomatis ini adalah sebagai berikut:

  1. ESP8266 menginisialisasi sistem dan servo motor.
  2. Servo berada pada posisi awal (tertutup).
  3. Ketika sistem dijalankan, servo berputar untuk membuka wadah pakan.
  4. Setelah beberapa detik, servo kembali ke posisi awal.
  5. Status pemberian pakan ditampilkan pada LCD 16×2.
  6. Informasi status juga ditampilkan pada halaman web.

Library yang Digunakan

Pastikan library berikut sudah terpasang pada Arduino IDE:

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

Code

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

#define SERVO_PIN D4

LiquidCrystal_I2C lcd(0x27, 16, 2);
Servo feederServo;
RTC_DS1307 rtc;
AsyncWebServer server(80);

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

bool feeding = false;
bool alreadyFed = false;

int feedHour = 7;      // jam pemberian pakan
int feedMinute = 0;    // menit pemberian pakan
unsigned long feedStartMillis = 0;
const unsigned long feedDuration = 3000; // 3 detik

String feedingStatusText() {
  String text = "";

  if (feeding == true) {
    text = "PAKAN AKTIF";
  } else {
    text = "SIAP";
  }

  return text;
}

String htmlPage() {
  String html = "";
  html += "<!DOCTYPE html><html><head>";
  html += "<meta name='viewport' content='width=device-width, initial-scale=1'>";
  html += "<title>Smart Feeder</title>";
  html += "</head><body>";
  html += "<h1>Smart Feeder ESP8266</h1>";
  html += "<p>Status: ";
  html += feedingStatusText();
  html += "</p>";
  html += "<p>Jadwal: 07:00</p>";
  html += "</body></html>";
  return html;
}

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

  feederServo.attach(SERVO_PIN);
  feederServo.write(0);

  rtc.begin();
  // SET WAKTU SEKALI SAJA JIKA RTC BARU
  // rtc.adjust(DateTime(2026, 2, 5, 7, 0, 0));

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

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

  server.begin();
}

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

  /* === Trigger Pakan === */
  if (feeding == false &&
      alreadyFed == false &&
      now.hour() == feedHour &&
      now.minute() == feedMinute) {

    feeding = true;
    feedStartMillis = millis();
    feederServo.write(90);
  }

  /* === Stop Servo === */
  if (feeding == true && millis() - feedStartMillis >= feedDuration) {
    feederServo.write(0);
    feeding = false;
    alreadyFed = true;
  }

  /* === Reset flag setelah menit berlalu === */
  if (now.minute() != feedMinute) {
    alreadyFed = false;
  }

  /* === LCD === */
  lcd.setCursor(0, 0);
  lcd.print("Time: ");
  lcd.print(now.hour());
  lcd.print(":");
  if (now.minute() < 10) {
    lcd.print("0");
  }
  lcd.print(now.minute());
  lcd.print("   ");

  lcd.setCursor(0, 1);
  lcd.print("Status: ");
  lcd.print(feedingStatusText());
  lcd.print("   ");

  delay(1000);
}

Cara Menggunakan Sistem

  • Pasang servo motor pada wadah pakan sehingga dapat membuka dan menutup dengan baik.
  • Rangkai servo dan LCD sesuai dengan skema koneksi.
  • Unggah program ke ESP8266 menggunakan Arduino IDE.
  • Nyalakan sistem dan pastikan servo bergerak dengan benar.
  • Hubungkan HP atau laptop ke jaringan WiFi SmartFeeder_AP.
  • Buka browser dan akses alamat IP 192.168.4.1 untuk memantau status sistem.

Sistem Parkir Pintar Berbasis ESP8266 dengan Sensor Infrared

Sistem Parkir Pintar Berbasis ESP8266 dengan Sensor Infrared

Pengelolaan area parkir akan menjadi lebih efisien apabila kondisi setiap slot parkir dapat diketahui secara langsung. Salah satu solusi sederhana yang dapat diterapkan adalah Sistem Parkir Pintar yang mampu mendeteksi keberadaan kendaraan pada setiap slot.

Pada blog post ini, kita akan membahas pembuatan Sistem Parkir Pintar menggunakan ESP8266 dan sensor infrared (IR) pada setiap slot parkir. Sistem ini menampilkan status tiap slot, jumlah kendaraan terparkir, serta jumlah slot kosong melalui dashboard web dan LCD 16×2.

Seperti proyek-proyek sebelumnya, ESP8266 dijalankan dalam mode Access Point (AP) dan menggunakan Async Web Server, sehingga sistem dapat digunakan tanpa koneksi internet.

Sistem parkir pintar ini menggunakan 3 buah sensor infrared yang masing-masing dipasang pada satu slot parkir. Sensor akan mendeteksi keberadaan kendaraan berdasarkan pantulan objek di depannya.

ESP8266 akan membaca status setiap sensor, kemudian:

  • Menentukan apakah slot parkir TERISI atau KOSONG
  • Menghitung jumlah kendaraan yang sedang terparkir
  • Menghitung jumlah slot parkir yang masih tersedia

Informasi tersebut ditampilkan secara lokal melalui LCD 16×2 dan secara visual melalui dashboard web yang dapat diakses menggunakan HP atau laptop.

Alat dan Bahan yang Dibutuhkan

Nama KomponenGambar Komponen
NodeMcu esp8266
Sensor Infra Red Obstacle 3 Buah
LCD 16×2 I2C
kabel Jumper
Breadboard

Skema Koneksi Komponen

SlotESP8266Sensor IR
1D1OUT
2D2OUT
3D3OUT
3v3VCC
GNDGND
ESP8266 LCD I2C
D5SCL
D6SDA
Vin / VUVCC
GNDGND

Library yang Digunakan

Pastikan library berikut sudah terpasang pada Arduino IDE:

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

Code

#include <ESP8266WiFi.h>
pinMode(IR1, INPUT);
pinMode(IR2, INPUT);
pinMode(IR3, INPUT);


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


server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
bool slot1 = digitalRead(IR1) == LOW;
bool slot2 = digitalRead(IR2) == LOW;
bool slot3 = digitalRead(IR3) == LOW;


int used = 0;
if (slot1 == true) { used++; }
if (slot2 == true) { used++; }
if (slot3 == true) { used++; }


int totalSlot = 3;
int freeSlot = totalSlot - used;


request->send(200, "text/html", htmlPage(slot1, slot2, slot3, used, freeSlot));
});


server.begin();
}


void loop() {
bool slot1 = digitalRead(IR1) == LOW;
bool slot2 = digitalRead(IR2) == LOW;
bool slot3 = digitalRead(IR3) == LOW;


int used = 0;
if (slot1 == true) { used++; }
if (slot2 == true) { used++; }
if (slot3 == true) { used++; }


int totalSlot = 3;
int freeSlot = totalSlot - used;


lcd.setCursor(0, 0);
lcd.print("Parkir:");
lcd.print(used);
lcd.print("/");
lcd.print(totalSlot);


lcd.setCursor(0, 1);
lcd.print("Kosong:");
lcd.print(freeSlot);
lcd.print(" ");


delay(500);
}

Cara Menggunakan Sistem

  1. Rangkai seluruh komponen sesuai skema koneksi.
  2. Unggah program ke ESP8266 menggunakan Arduino IDE.
  3. Hubungkan HP atau laptop ke WiFi SmartParkingIR_AP.
  4. Buka browser dan akses alamat IP 192.168.4.1 untuk melihat dashboard parkir.

Smart Alarm Rumah Berbasis ESP8266 dengan PIR Motion Sensor

Smart Alarm Rumah Berbasis ESP8266 dengan PIR Motion Sensor

Keamanan rumah merupakan salah satu aspek penting dalam kehidupan sehari-hari. Salah satu solusi sederhana yang dapat diterapkan adalah sistem alarm pendeteksi gerakan. Dengan sistem ini, keberadaan orang atau pergerakan mencurigakan dapat terdeteksi secara otomatis dan langsung memberikan peringatan.

Pada blog post ini, kita akan membahas cara membuat Smart Alarm Rumah menggunakan ESP8266 dan PIR Motion Sensor. Sistem akan memberikan notifikasi ke HP melalui web browser serta menampilkan status sistem melalui LED indikator dan notifikasi pada web browser.

Seperti proyek-proyek sebelumnya, ESP8266 akan dijalankan dalam mode Access Point (AP) dan menggunakan Async Web Server, sehingga sistem dapat digunakan tanpa koneksi internet.

Alat dan Bahan yang Dibutuhkan

Nama KomponenGambar Komponen
NodeMcu esp8266
Sensor PIR (HC-SR501)
Buzzer
LED
Resistor
Kabel Jumper
Breadboard

Skema Koneksi Komponen

ESP8266PIR
D2OUT
3V3VCC
GNDGND
ESP8266LED / Buzzer
D3LED Merah (+)
D4Buzzer (+)

Library yang Digunakan

Pastikan library berikut sudah terpasang pada Arduino IDE:

  • ESP8266WiFi.h
  • ESPAsyncWebServer.h
  • ESPAsyncTCP.h

Code

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


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

AsyncWebServer server(80);

bool motionDetected = false;

String alarmStatusText() {
  String text = "";

  if (motionDetected == true) {
    text = "ALARM AKTIF";
  } else {
    text = "AMAN";
  }

  return text;
}

String htmlPage() {
  String html = "";
  html += "<!DOCTYPE html><html><head>";
  html += "<meta name='viewport' content='width=device-width, initial-scale=1'>";
  html += "<title>Smart Alarm Rumah</title>";
  html += "</head><body>";
  html += "<h1>Smart Alarm Rumah</h1>";
  html += "<p>Status: ";
  html += alarmStatusText();
  html += "</p>";
  html += "<script>";
  html += "if ('Notification' in window) {";
  html += "Notification.requestPermission();";
  html += "}";
  html += "</script>";
  html += "</body></html>";
  return html;
}

void setup() {
  

  pinMode(PIR_PIN, INPUT);
  pinMode(LED_ALARM, OUTPUT);
  pinMode(BUZZER_PIN, OUTPUT);

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

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

  server.begin();
}

void loop() {
  int pirValue = digitalRead(PIR_PIN);

  if (pirValue == HIGH) {
    motionDetected = true;
    digitalWrite(LED_ALARM, HIGH);
    digitalWrite(BUZZER_PIN, HIGH);
  } else {
    motionDetected = false;
    digitalWrite(LED_ALARM, LOW);
    digitalWrite(BUZZER_PIN, LOW);
  }

  delay(500);
}

Cara Menggunakan Sistem

  1. Rangkai PIR sensor, LED, dan buzzer sesuai dengan skema koneksi.
  2. Unggah program ke ESP8266 menggunakan Arduino IDE.
  3. Nyalakan sistem dan tunggu sensor PIR melakukan kalibrasi awal.
  4. Hubungkan HP atau laptop ke jaringan WiFi SmartAlarm_AP.
  5. Buka browser dan akses alamat IP 192.168.4.1.
  6. Izinkan notifikasi pada browser untuk menerima peringatan alarm.

Monitoring Level Air Tangki Berbasis ESP8266

Monitoring Level Air Tangki Berbasis ESP8266

Mengetahui kondisi ketersediaan air di dalam tangki atau tandon merupakan hal yang penting, terutama untuk kebutuhan rumah tangga maupun sistem otomatis seperti pompa air. Tanpa sistem monitoring, kita sering kali baru menyadari air habis atau meluap ketika masalah sudah terjadi.

Pada blog post ini, kita akan membahas cara membuat Sistem Monitoring Level Air Tangki menggunakan ESP8266. Sistem ini mampu memberikan indikasi kondisi penuh dan kosong melalui LCD 16×2 dan LED, serta dapat dipantau melalui web browser tanpa koneksi internet.

Sistem monitoring level air ini bekerja dengan mendeteksi ketinggian air di dalam tangki menggunakan sensor level air. Berdasarkan hasil pembacaan sensor, ESP8266 akan menentukan kondisi tangki, apakah dalam keadaan kosong, setengah, atau penuh.

Informasi tersebut ditampilkan secara lokal melalui LCD 16×2 dan LED indikator, serta dapat dipantau melalui halaman web menggunakan HP atau laptop yang terhubung langsung ke WiFi ESP8266.

Alat dan Bahan yang Dibutuhkan

Nama KomponenGambar Komponen
NodeMcu esp8266
Water Level Sensor
LED Merah dan Hijau
Resistor 220 ohm
LCD 16×2 I2C
Kabel Jumper
Breadboard

Gambar Rangkaian

NodeMcu Esp8266LCD I2C
Pin D5SCL
Pin D6SDA
Vin / VuVCC
GNDGND
NodeMcu Esp8266Water Level Sensor
Pin D2S
GNDGND (-)
Vin /VuVCC (+)
NodeMcu Esp8266LED Merah / Hijau
Pin D3Anoda (+) Merah
Pin D4Anoda (+) Hijau
GNDkatoda (-) Merah & Hijau

Cara Kerja Sistem

Cara kerja sistem monitoring level air ini dapat dijelaskan sebagai berikut:

  1. Sensor level air mendeteksi keberadaan air di dalam tangki.
  2. ESP8266 membaca status sensor sebagai input digital.
  3. Sistem menentukan kondisi air berdasarkan input sensor.
  4. LED indikator menyala sesuai kondisi air (penuh atau kosong).
  5. Informasi kondisi air ditampilkan pada LCD 16×2.
  6. ESP8266 menyediakan halaman web untuk memantau kondisi tangki.

Library yang Digunakan

Pastikan library berikut sudah terpasang pada Arduino IDE:

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

Code

#include <ESP8266WiFi.h>
html += "<meta name='viewport' content='width=device-width, initial-scale=1'>";
html += "<title>Monitoring Level Air</title>";
html += "</head><body>";
html += "<h1>Monitoring Level Air Tangki</h1>";
html += "<p>Status Air: ";
html += waterStatusText();
html += "</p>";
html += "</body></html>";
return html;
}


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


pinMode(LEVEL_PIN, INPUT);
pinMode(LED_FULL, OUTPUT);
pinMode(LED_EMPTY, OUTPUT);


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


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


server.begin();
}


void loop() {
int sensorValue = digitalRead(LEVEL_PIN);


if (sensorValue == HIGH) {
waterDetected = true;
digitalWrite(LED_FULL, HIGH);
digitalWrite(LED_EMPTY, LOW);
} else {
waterDetected = false;
digitalWrite(LED_FULL, LOW);
digitalWrite(LED_EMPTY, HIGH);
}


lcd.setCursor(0, 0);
lcd.print("Level Air:");
lcd.setCursor(0, 1);
lcd.print(waterStatusText());
lcd.print(" ");


delay(1000);
}

Cara Menggunakan Sistem

  1. Pasang sensor level air di dalam tangki sesuai ketinggian yang diinginkan.
  2. Rangkai semua komponen sesuai dengan skema koneksi.
  3. Unggah program ke ESP8266 menggunakan Arduino IDE.
  4. Nyalakan sistem dan pastikan LED serta LCD berfungsi dengan baik.
  5. Hubungkan HP atau laptop ke jaringan WiFi WaterLevel_AP.
  6. Buka browser dan akses alamat IP 192.168.4.1 untuk melihat status level air.

Sistem Penyiram Tanaman Terjadwal Berbasis ESP8266

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.

Sistem Penyiram Tanaman Otomatis Berbasis ESP8266

Sistem Penyiram Tanaman Otomatis Berbasis ESP8266

Merawat tanaman secara rutin sering menjadi tantangan, terutama ketika kita memiliki kesibukan atau lupa melakukan penyiraman. Untuk mengatasi masalah tersebut, pada artikel ini kita akan membahas cara membuat Sistem Penyiram Tanaman Otomatis menggunakan ESP8266, sensor soil moisture, dan pompa air.

Sistem ini dirancang agar dapat bekerja secara mandiri tanpa koneksi internet, karena ESP8266 akan dijalankan dalam mode Access Point (AP). Selain itu, informasi kelembapan tanah dan status pompa air dapat dipantau melalui web browser dan LCD 16×2, sehingga mudah digunakan oleh siapa saja.

Sistem penyiram tanaman otomatis ini bekerja dengan cara membaca tingkat kelembapan tanah menggunakan sensor soil moisture. Ketika tanah terdeteksi dalam kondisi kering, ESP8266 akan mengaktifkan pompa air secara otomatis. Sebaliknya, jika tanah sudah cukup lembap, pompa air akan dimatikan.

Untuk memudahkan pemantauan, ESP8266 juga menyediakan halaman web sederhana yang dapat diakses langsung dari HP atau laptop. Informasi yang sama ditampilkan secara lokal melalui LCD 16×2.

Alat dan Bahan yang Dibutuhkan

Sebelum memulai perakitan, siapkan beberapa komponen berikut:

Nama KomponenGambar Komponen
NodeMcu esp8266
Soil Moisture Sensor
Pompa DC 5 Volt
Relay Module 1 Channel
LCD 16×2 I2C
Kabel Jumper
Breadboard

Gambar Rangkaian

NodeMcu esp8266Sensor Soil Moisture
pin A0AO
Vin / VuVCC (+)
GNDGND (-)
NodeMcu esp8266Relay
Pin D1IN
Vin /VUVCC (+)
GNDGND (-)
NodeMcu Esp8266LCD I2C
Pin D5SCL
Pin D6SDA
Vin / VuVCC
GNDGND

Cara Kerja Sistem

Secara sederhana, alur kerja sistem dapat dijelaskan sebagai berikut:

  1. Sensor soil moisture membaca tingkat kelembapan tanah dan menghasilkan nilai analog.
  2. ESP8266 membaca nilai tersebut melalui pin A0.
  3. Nilai kelembapan dibandingkan dengan batas ambang yang telah ditentukan.
  4. Jika tanah dalam kondisi kering, relay akan diaktifkan sehingga pompa air menyala.
  5. Jika tanah sudah cukup lembap, relay dimatikan dan pompa berhenti bekerja.
  6. Nilai kelembapan tanah dan status pompa ditampilkan pada LCD dan halaman web.

Library yang Digunakan

Pastikan beberapa library berikut sudah terpasang di Arduino IDE:

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

Code

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

#define SOIL_PIN A0
#define RELAY_PIN D1

LiquidCrystal_I2C lcd(0x27, 16, 2);

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

AsyncWebServer server(80);

int soilValue = 0;
bool pumpState = false;

String pumpStatusText() {
  String text = "";

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

  return text;
}

String htmlPage() {
  String html = "";
  html += "<!DOCTYPE html><html><head>";
  html += "<meta name='viewport' content='width=device-width, initial-scale=1'>";
  html += "<title>Smart Watering</title>";
  html += "</head><body>";
  html += "<h1>Sistem Penyiram Tanaman</h1>";
  html += "<p>Nilai Kelembapan Tanah: " + String(soilValue) + "</p>";
  html += "<p>Status Pompa: " + pumpStatusText() + "</p>";
  html += "</body></html>";
  return html;
}

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

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

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

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

  server.begin();
}

void loop() {
  soilValue = analogRead(SOIL_PIN);

  if (soilValue > 600) {
    digitalWrite(RELAY_PIN, LOW);
    pumpState = true;
  } else {
    digitalWrite(RELAY_PIN, HIGH);
    pumpState = false;
  }

  lcd.setCursor(0, 0);
  lcd.print("Soil: ");
  lcd.print(soilValue);
  lcd.print("   ");

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

  delay(2000);
}

Cara Menggunakan Sistem

Setelah rangkaian dan program selesai dibuat, lakukan langkah-langkah berikut:

  1. Hubungkan semua komponen sesuai dengan skema koneksi.
  2. Unggah program ke ESP8266 menggunakan Arduino IDE.
  3. Pastikan pompa air mendapatkan sumber daya yang sesuai.
  4. Aktifkan WiFi pada HP atau laptop dan hubungkan ke jaringan SmartWater_AP.
  5. Buka browser dan akses alamat IP 192.168.4.1.
  6. Amati nilai kelembapan tanah dan status pompa air melalui halaman web dan LCD.

Monitoring Kualitas Udara dengan ESP8266 dan Sensor MQ-135

Monitoring Kualitas Udara dengan ESP8266 dan Sensor MQ-135

Pada tutorial ini kita akan membuat sistem Monitoring Kualitas Udara menggunakan sensor MQ-135. Sistem ini mampu mendeteksi gas dan asap di lingkungan sekitar, kemudian menampilkan hasilnya melalui Web Browser dan LCD 16×2.

ESP8266 akan dijalankan dalam mode Access Point (AP) dan menggunakan Async Web Server, sehingga sistem dapat diakses langsung dari HP atau laptop tanpa koneksi internet dan tanpa router.

Alat dan Bahan

Nama KomponenGambar Komponen
NodeMcu esp8266
Sensor kualitas udara MQ 135
LCD 16×2 I2C
Kabel Jumper
Breadboard

Gambar Rangkaian

NodeMcu esp8266MQ135
pin A0Aout
vin / vuVCC
GNDGND
NodeMcu esp8266LCD I2C
Pin D5SCL
Pin D6SDA
GNDGND
vin / vuVCC

Library yang Digunakan

Pastikan library-library ini sudah terinstal

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

Code

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

#define MQ_PIN A0

LiquidCrystal_I2C lcd(0x27, 16, 2);

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

AsyncWebServer server(80);

int airValue = 0;
String airStatus = "";

String htmlPage() {
  String html = "";
  html += "<!DOCTYPE html><html><head>";
  html += "<meta name='viewport' content='width=device-width, initial-scale=1'>";
  html += "<title>Air Quality Monitor</title>";
  html += "</head><body>";
  html += "<h1>Monitoring Kualitas Udara</h1>";
  html += "<p>Nilai Sensor: " + String(airValue) + "</p>";
  html += "<p>Status Udara: " + airStatus + "</p>";
  html += "</body></html>";
  return html;
}

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

  pinMode(MQ_PIN, INPUT);

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

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

  server.begin();
}

void loop() {
  airValue = analogRead(MQ_PIN);

  if (airValue < 300) {
    airStatus = "Baik";
  } else if (airValue >= 300 && airValue < 600) {
    airStatus = "Sedang";
  } else {
    airStatus = "Buruk";
  }

  lcd.setCursor(0, 0);
  lcd.print("Air Value:    ");
  lcd.setCursor(11, 0);
  lcd.print(airValue);

  lcd.setCursor(0, 1);
  lcd.print("Status:      ");
  lcd.setCursor(8, 1);
  lcd.print(airStatus);

  delay(2000);
}

Cara Penggunaan Alat

  1. Rangkai sensor MQ dan LCD 16×2 sesuai dengan tabel koneksi yang telah dijelaskan.
  2. Hubungkan ESP8266 ke komputer dan unggah program menggunakan Arduino IDE hingga proses selesai tanpa error.
  3. Nyalakan ESP8266 dan pastikan modul mendapatkan sumber daya yang stabil.
  4. Aktifkan WiFi pada HP atau laptop, lalu hubungkan ke jaringan AirQuality_AP.
  5. Buka browser dan akses alamat IP 192.168.4.1.
  6. Amati nilai kualitas udara yang ditampilkan pada halaman web dan LCD.

Tutorial Monitoring Suhu & Kelembapan dengan ESP8266

Tutorial Monitoring Suhu & Kelembapan dengan ESP8266

Pada tutorial lanjutan ini, kita akan membuat sistem Monitoring Suhu dan Kelembapan menggunakan sensor DHT11 atau DHT22. Data suhu dan kelembapan akan ditampilkan secara real-time melalui Web Browser (menggunakan Async Web Server mode AP) serta ditampilkan secara lokal pada LCD.

Sama seperti tutorial sebelumnya, ESP8266 akan bekerja dalam mode Access Point (AP) sehingga sistem dapat digunakan tanpa koneksi internet dan tanpa router.

Fitur

Sistem monitoring ini dirancang untuk memberikan informasi kondisi lingkungan secara langsung dan mudah diakses. Fitur-fitur yang akan terdapat pada sistem ini bisa kita cek dibawah ini.

  • Monitoring suhu dan kelembapan menggunakan sensor DHT11 / DHT22
  • ESP8266 beroperasi sebagai WiFi Access Point (AP)
  • Data sensor ditampilkan pada Web Browser secara asynchronous
  • Data suhu dan kelembapan ditampilkan secara lokal pada LCD

Alat Dan Bahan

Nama KomponenGambar Komponen
NodeMcu esp8266
Sensor DHT 11
LCD 16×2 I2C
Kabel Jumper
Breadboard

Gambar Rangkaian

ESP8266DHT-11
pin D2pin Data
pin vin /vupin VCC (+)
pin GNDpin GND
ESP8266LCD I2C
pin D5SCL
pin D6SDA
pin vin /vuVCC
pin GNDGND

Cara Kerja Alat

  1. ESP8266 akan membaca data suhu dan kelembapan dari sensor DHT secara berkala.
  2. Data hasil pembacaan akan ditampilkan pada LCD sebagai monitoring lokal.
  3. ESP8266 akan membuat jaringan WiFi sendiri (Mode AP).
  4. Pengguna menghubungkan HP atau laptop ke WiFi ESP8266.
  5. Data suhu dan kelembapan ditampilkan pada halaman web melalui Web Server.

Library yang Digunakan

Pastikan library berikut ini sudah terinstal di Arduino IDE kamu:

  • ESP8266WiFi.h
  • ESPAsyncWebServer.h
  • ESPAsyncTCP.h
  • DHT.h
  • LiquidCrystal_I2C.h

Code

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

#define DHTPIN D2
#define DHTTYPE DHT11

LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(DHTPIN, DHTTYPE);

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

AsyncWebServer server(80);

float temperature = 0;
float humidity = 0;

String htmlPage() {
  String html = "";
  html += "<!DOCTYPE html><html><head>";
  html += "<meta name='viewport' content='width=device-width, initial-scale=1'>";
  html += "<title>DHT Monitor</title>";
  html += "</head><body>";
  html += "<h1>Monitoring Suhu & Kelembapan</h1>";
  html += "<p>Suhu: " + String(temperature) + " &deg;C</p>";
  html += "<p>Kelembapan: " + String(humidity) + " %</p>";
  html += "</body></html>";
  return html;
}

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

  dht.begin();

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

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

  server.begin();
}

void loop() {
  humidity = dht.readHumidity();
  temperature = dht.readTemperature();

  lcd.setCursor(0, 0);
  lcd.print("Temp: ");
  lcd.print(temperature);
  lcd.print(" C");

  lcd.setCursor(0, 1);
  lcd.print("Hum : ");
  lcd.print(humidity);
  lcd.print(" %");

  delay(2000);
}

Petunjuk Pengerjaan dan Uji Coba

  1. Rangkai sensor DHT11/DHT22 dan modul LCD sesuai dengan tabel koneksi yang telah dijelaskan. Pastikan setiap pin terhubung dengan benar, terutama jalur VCC dan GND, agar sensor dan LCD dapat bekerja dengan normal.
  2. Hubungkan papan ESP8266 ke komputer menggunakan kabel USB, kemudian buka Arduino IDE. Pilih tipe board dan port yang sesuai, lalu unggah (upload) program monitoring suhu dan kelembapan ke ESP8266 hingga proses selesai tanpa error.
  3. Setelah upload berhasil, lepaskan ESP8266 dari komputer (opsional), lalu pastikan papan sudah mendapatkan sumber daya. Selanjutnya, aktifkan fitur WiFi pada HP atau laptop.
  4. Cari jaringan WiFi dengan nama DHT_Monitor_AP, kemudian hubungkan perangkat ke jaringan tersebut. Tunggu hingga perangkat berhasil terhubung.
  5. Buka aplikasi browser (Chrome, Firefox, atau sejenisnya), lalu ketik alamat IP 192.168.4.1 pada kolom alamat dan tekan Enter.
  6. Perhatikan halaman web yang tampil. Nilai suhu dan kelembapan akan ditampilkan secara real-time melalui web, sementara informasi yang sama juga dapat dilihat langsung pada layar LCD yang terpasang pada rangkaian.

Tutorial Smart Lamp (WiFi Control) dengan ESP8266

Tutorial Smart Lamp (WiFi Control) dengan ESP8266

Pada tutorial ini kita akan membuat Smart Lamp sederhana menggunakan ESP8266 + Relay, yang bisa dikontrol langsung dari HP atau browser tanpa internet.

ESP8266 akan berjalan dalam mode Access Point (AP), sehingga HP/laptop bisa langsung terhubung ke WiFi dari ESP8266, lalu mengontrol lampu lewat Web Server.

Alat & Bahan

Nama KomponenGambar Komponen
NodeMcu esp8266
Relay Module 1 Channel
Bola Lampu
Fitting Lampu
Kabel Jumper
Breadboard

Gambar Rangkaian

ESP8266Relay
pin D1pin S
vin / vupin +
GNDpin –

Library yang digunakan

  • ESP8266WiFi.h
  • ESPAsyncWebServer.h
  • ESPAsyncTCP.h

Code

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

#define RELAY_PIN D1

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

AsyncWebServer server(80);

bool lampState = false;

String processor() {
  String statusText = "";

  if (lampState == true) {
    statusText = "ON";
  } else {
    statusText = "OFF";
  }

  String html = "";
  html += "<!DOCTYPE html><html><head>";
  html += "<meta name='viewport' content='width=device-width, initial-scale=1'>";
  html += "<title>Smart Lamp</title>";
  html += "<style>";
  html += "body{font-family:Arial;text-align:center;margin-top:40px;}";
  html += "button{padding:15px 30px;font-size:18px;margin:10px;}";
  html += "</style>";
  html += "</head><body>";

  html += "<h1>Smart Lamp Control</h1>";
  html += "<p>Status: <b>" + statusText + "</b></p>";
  html += "<button onclick=\"fetch('/on')\">ON</button>";
  html += "<button onclick=\"fetch('/off')\">OFF</button>";

  html += "</body></html>";

  return html;
}

void setup() {
  pinMode(RELAY_PIN, OUTPUT);
  digitalWrite(RELAY_PIN, HIGH);

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

  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send(200, "text/html", processor());
  });

  server.on("/on", HTTP_GET, [](AsyncWebServerRequest *request){
    digitalWrite(RELAY_PIN, LOW);
    lampState = true;
    request->send(200, "text/plain", "ON");
  });

  server.on("/off", HTTP_GET, [](AsyncWebServerRequest *request){
    digitalWrite(RELAY_PIN, HIGH);
    lampState = false;
    request->send(200, "text/plain", "OFF");
  });

  server.begin();
}

void loop() {
  // Async Web Server tidak membutuhkan handleClient()
}

Petunjuk Penggunaan

  1. Unggah (upload) program Smart Lamp ke papan ESP8266 menggunakan Arduino IDE.
  2. Setelah proses upload selesai, aktifkan fitur WiFi pada perangkat HP atau laptop.
  3. Cari dan sambungkan perangkat ke jaringan WiFi dengan nama SmartLamp_AP.
  4. Buka aplikasi browser, kemudian akses alamat IP 192.168.4.1.
  5. Gunakan tombol ON atau OFF pada halaman web untuk mengendalikan kondisi lampu.

Sangat Perlu Untuk Diperhatikan

  1. Pastikan sumber listrik PLN dalam kondisi mati sebelum melakukan pemasangan atau perubahan rangkaian.
  2. Hindari menyentuh kabel AC, terminal relay, atau bagian logam lainnya saat rangkaian masih terhubung dengan sumber listrik.
  3. Gunakan box atau casing relay untuk melindungi rangkaian dari sentuhan langsung serta mengurangi risiko korsleting.
  4. Periksa kembali setiap sambungan kabel, pastikan terpasang dengan kuat dan tidak ada kabel yang terkelupas.
  5. Setelah semua komponen terpasang dengan benar, barulah sambungkan rangkaian ke sumber listrik dan lakukan pengujian secara bertahap.

Membaca Database Firebase dan Menampilkannya di Aplikasi Android

Membaca Database Firebase dan Menampilkannya di Aplikasi Android

Pada 2 tulisan sebelumnya kita sudah membahas tentang mengukur suhu ruangan dengan DHT 11 dan mengirimkan data hasil pembacaan sensor ke firebase, maka pada tulisan ini saya akan menyambung tulisan lagi untuk melengkapi project ini dengan menampilkan data yang tersimpan di firebase ke aplikasi android yang kita buat sendiri.

pada tulisan kali ini, kita akan menggunakan situs kodular membuat aplikasi android sederhana yang akan digunakan untuk membaca nilai yang tersimpan di firebase. Baiklah, tanpa berpanjang lebar lagi, langsung saja kit ake materi pokok nya

Kodular

Kodular adalah situs yang menyediakan platform pembuatan aplikasi android dengan mudah tanpa menggunakan text-based programming. Untuk membuat aplikasi android di kodular, kita hanya perlu melakukan drag and drop komponen untuk membuat tampilan aplikasi android. Untuk melakukan programming terhadap komponen yang telah disusun, kodular menyediakan sistem programming model block yang juga digunakan dengan metode drag and drop.

Tampilan Designer Tab pada Kodular
Tampilan Block Tab pada Kodular

Memulai Kodular

Untuk mulai menggunakan situs aplikasi kodular, ikutilah langkah-langkah berikut ini:

1. Buka browser dan ketikkan https://www.kodular.io/ lalu klik tombol “Create Apps”

2. Kita akan diarahkan ke halaman sign in. Pada halaman ini pilih sign in dengan menggunakan akun google.

3. lalu pilih akun gmail yang kamu miliki sebagai akun untuk log in ke kodular.

4. Setelah berhasil log in, kalian akan diarahkan ke halaman creator. Pada halaman ini akan terlihat project-project yang sudah pernah dibuat sebelumnya.

5. Untuk membuat project baru, maka klik tombol “Create project” pada bagian kiri atas halaman Kodular Creator.

6. Berikan nama untuk project yang akan kita buat.

7. Pada “Configure your project”, biarkan saja semua konfigurasi tetap default dan langsung klik finish.

8. Kita akan diarahkan ke tab Designer untuk membuat tampilan aplikasi android yang akan kita buat.

Membuat Aplikasi Android

Aplikasi android yang akan kita buat di situs kodular ini adalah aplikasi yang berfungsi untuk membaca data yang terdapat pada realtime database nya firebase. Untuk mempermudah pembuatan aplikasi silahkan ikuti langkah-langkah berikut ini.

1. Buatlah tampilan android sederhana seperti dibawah ini:

2. untuk komponen image, kalian bisa download asset nya disini lalu nanti upload di properties “Background Image” pada komponen Image2.

3. Pada komponen Firebase_Database1, kita akan diminta untuk memasukkan Firebase token dan firebase URL.

Firebase token bisa didapatkan dengan cara:

  • Buka web firebase dan masuk ke console.
  • Pilih project firebase yang telah kita buat sebelumnya.
  • Klik icon gear yang terdapat pada sebelah kiri atas layar lalu klik project settings
  • pada menu project settings, copy isian web API lalu paste kan ke firebase token di kodular

Firebase URL bisa didapatkan dengan cara

  • Buka web firebase dan masuk ke console.
  • Pilih project firebase yang telah kita buat sebelumnya.
  • Klik Realtime Database
  • Copy link yang terdapat didalam Realtime Database lalu pastekan ke Firebase URL di kodular

4. Masuk ke tab block dan ikuti gambar dibawah ini

Sampai disini, aplikasi kita sudah bisa di download dalam bentuk apk dengan cara klik export >> android APK. Copy aplikasi yang telah kita buat tadi ke HP kita lalu install

Jika pembuatan aplikasi berhasil, maka tampilan aplikasi yang kita buat akan terlihat seperti ini:

Jika kalian masih merasa kesulitan membuat aplikasi nya, silahkan download file aia dibawah ini lalu masukkan ke kodular dengan klik tombol import project pada halaman project.

Project aia

Demikianlah Membaca Database Firebase dan Menampilkannya di Aplikasi Android dengan menggunakan kodular, semoga tulisan ini bermanfaat. Sampai jumpa pada tulisan-tulisan berikutnya