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 Komponen | Gambar Komponen |
|---|---|
| NodeMcu ESP8266 | ![]() |
| Servo SG-90 | ![]() |
| LCD 16×2 I2C | ![]() |
| RTC DS1307 | ![]() |
| Kabel Jumper | ![]() |
| Breadboard | ![]() |
Gambar Rangkaian

| ESP8266 | Servo |
|---|---|
| Pin D4 | Kabel orange |
| Vin / Vu | Kabel Merah |
| GND | Kabel Cokelat |
| ESP8266 | LCD I2C |
|---|---|
| D5 | SCL |
| D6 | SDA |
| Vin / VU | VCC |
| GND | GND |
| ESP8266 | RTC DS1307 |
|---|---|
| D5 | SCL |
| D6 | SDA |
| Vin / VU | VCC |
| GND | GND |
Cara Kerja Sistem
Cara kerja alat pemberi pakan otomatis ini adalah sebagai berikut:
- ESP8266 menginisialisasi sistem dan servo motor.
- Servo berada pada posisi awal (tertutup).
- Ketika sistem dijalankan, servo berputar untuk membuka wadah pakan.
- Setelah beberapa detik, servo kembali ke posisi awal.
- Status pemberian pakan ditampilkan pada LCD 16×2.
- Informasi status juga ditampilkan pada halaman web.
Library yang Digunakan
Pastikan library berikut sudah terpasang pada Arduino IDE:
ESP8266WiFi.hESPAsyncWebServer.hESPAsyncTCP.hLiquidCrystal_I2C.hServo.hRTClib.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.1untuk memantau status sistem.











































