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.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.
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 Komponen
Gambar Komponen
NodeMcu esp8266
Sensor PIR (HC-SR501)
Buzzer
LED
Resistor
Kabel Jumper
Breadboard
Skema Koneksi Komponen
ESP8266
PIR
D2
OUT
3V3
VCC
GND
GND
ESP8266
LED / Buzzer
D3
LED Merah (+)
D4
Buzzer (+)
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
Rangkai PIR sensor, LED, dan buzzer sesuai dengan skema koneksi.
Unggah program ke ESP8266 menggunakan Arduino IDE.
Nyalakan sistem dan tunggu sensor PIR melakukan kalibrasi awal.
Hubungkan HP atau laptop ke jaringan WiFi SmartAlarm_AP.
Buka browser dan akses alamat IP 192.168.4.1.
Izinkan notifikasi pada browser untuk menerima peringatan alarm.
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 Komponen
Gambar Komponen
NodeMcu esp8266
Soil Moisture Sensor
Pompa DC 5 Volt
Relay Module 1 Channel
LCD 16×2 I2C
Kabel Jumper
Breadboard
Gambar Rangkaian
NodeMcu esp8266
Sensor Soil Moisture
pin A0
AO
Vin / Vu
VCC (+)
GND
GND (-)
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
Cara Kerja Sistem
Secara sederhana, alur kerja sistem dapat dijelaskan sebagai berikut:
Sensor soil moisture membaca tingkat kelembapan tanah dan menghasilkan nilai analog.
ESP8266 membaca nilai tersebut melalui pin A0.
Nilai kelembapan dibandingkan dengan batas ambang yang telah ditentukan.
Jika tanah dalam kondisi kering, relay akan diaktifkan sehingga pompa air menyala.
Jika tanah sudah cukup lembap, relay dimatikan dan pompa berhenti bekerja.
Nilai kelembapan tanah dan status pompa ditampilkan pada LCD dan halaman web.
Library yang Digunakan
Pastikan beberapa library berikut sudah terpasang di Arduino IDE:
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.
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 Komponen
Gambar Komponen
NodeMcu esp8266
Sensor DHT 11
LCD 16×2 I2C
Kabel Jumper
Breadboard
Gambar Rangkaian
ESP8266
DHT-11
pin D2
pin Data
pin vin /vu
pin VCC (+)
pin GND
pin GND
ESP8266
LCD I2C
pin D5
SCL
pin D6
SDA
pin vin /vu
VCC
pin GND
GND
Cara Kerja Alat
ESP8266 akan membaca data suhu dan kelembapan dari sensor DHT secara berkala.
Data hasil pembacaan akan ditampilkan pada LCD sebagai monitoring lokal.
ESP8266 akan membuat jaringan WiFi sendiri (Mode AP).
Pengguna menghubungkan HP atau laptop ke WiFi ESP8266.
Data suhu dan kelembapan ditampilkan pada halaman web melalui Web Server.
Library yang Digunakan
Pastikan library berikut ini sudah terinstal di Arduino IDE kamu:
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.
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.
Setelah upload berhasil, lepaskan ESP8266 dari komputer (opsional), lalu pastikan papan sudah mendapatkan sumber daya. Selanjutnya, aktifkan fitur WiFi pada HP atau laptop.
Cari jaringan WiFi dengan nama DHT_Monitor_AP, kemudian hubungkan perangkat ke jaringan tersebut. Tunggu hingga perangkat berhasil terhubung.
Buka aplikasi browser (Chrome, Firefox, atau sejenisnya), lalu ketik alamat IP 192.168.4.1 pada kolom alamat dan tekan Enter.
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.
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 Komponen
Gambar Komponen
NodeMcu esp8266
Relay Module 1 Channel
Bola Lampu
Fitting Lampu
Kabel Jumper
Breadboard
Gambar Rangkaian
ESP8266
Relay
pin D1
pin S
vin / vu
pin +
GND
pin –
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
Unggah (upload) program Smart Lamp ke papan ESP8266 menggunakan Arduino IDE.
Setelah proses upload selesai, aktifkan fitur WiFi pada perangkat HP atau laptop.
Cari dan sambungkan perangkat ke jaringan WiFi dengan nama SmartLamp_AP.
Buka aplikasi browser, kemudian akses alamat IP 192.168.4.1.
Gunakan tombol ON atau OFF pada halaman web untuk mengendalikan kondisi lampu.
Sangat Perlu Untuk Diperhatikan
Pastikan sumber listrik PLN dalam kondisi mati sebelum melakukan pemasangan atau perubahan rangkaian.
Hindari menyentuh kabel AC, terminal relay, atau bagian logam lainnya saat rangkaian masih terhubung dengan sumber listrik.
Gunakan box atau casing relay untuk melindungi rangkaian dari sentuhan langsung serta mengurangi risiko korsleting.
Periksa kembali setiap sambungan kabel, pastikan terpasang dengan kuat dan tidak ada kabel yang terkelupas.
Setelah semua komponen terpasang dengan benar, barulah sambungkan rangkaian ke sumber listrik dan lakukan pengujian secara bertahap.
Tutorial ini adalah tutorial pertama dari seri simulator wokwi yang bisa kalian akses di helmydx.my.id. Dalam tutorial ini, kalian tidak membutuhkan perangkat keras ESP32 maupun komponen lainnya. Yang perlu dipersiapkan pada tutorial ini adalah sebuah komputer PC atau laptop yang terkoneksi dengan internet untuk mengakses simulator wokwi.
Baiklah tanpa panjang basa basi, kita masuki tutorial simulasi pengendalian LED dengan ESP32 dan MicroPython.
Langkah pertama, Bukalah browser di laptop kamu misalnya google chrome atau mozilla firefox, lalu buka laman https://wokwi.com/. Selanjutnya kalian akan melihat tampilan laman web seperti gambar dibawah ini. lakukan proses sign up / sign in dengan menggunakan akun google kalian masing-masing.
karena kita akan menggunakan ESP32 sebagai pengendali dan Micropython, maka kita scroll kebawah sampai kita temukan icon Micropython. Selain ESP32, Wokwi juga mendukung beberapa mikrokontroler lain seperti Arduino, STM32 dan Raspberry pi pico.
Setelah kalian klik MicroPython, kalian akan diarahkan ke halaman khusus berisi contoh project dan template simulasi yang menggunakan ESP32. Scroll sedikit kebawah, menuju bagian “Stater Templates”, lalu “NEW PROJECT” pilih jenis ESP32 yang kalian inginkan. Untuk tutorial ini saya akan menggunakan MicroPython on ESP32 sebagai template.
Setelah itu, kita akan melihat halaman simulator ESP32. Simulator ini terdiri dari dua panel utama yaitu panel rangkaian dan panel program. Di sebelah kanan layar kita adalah panel rangkaian, dan di sebelah kiri adalah panel program.
Membuat Rangkaian
Kita mulai dari membuat rangkaian elektronik sesuai yang kita inginkan. Pada tutorial ini kita akan mengontrol sebuah LED nyala dan mati secara bergantian dengan jeda waktu tertentu. Ikutilah gambar dibawah ini.
Untuk menambahkan LED, klik icon + yang ada dibagian kiri atas panel rangkaian dan pilih LED lalu Atur posisi LED sesuai keinginan. Setelah itu, langkah berikutnya adalah menghubungkan lampu LED ke terminal/pin yang terdapat pada ESP32. Kaki LED yang panjang (kaki A) selalu dihubungkan ke salah satu pin dengan notasi angka dan kaki LED yang pendek (kaki C) selalu dihubungkan ke pin GND. pola rangkaian ini berlaku untuk setiap LED yang akan digunakan. Untuk itu pola ini perlu diingat dan dipahami dengan baik.
Menulis Program.
Disini kita akan menggunakan MicroPython sebagai bahasa pemrograman utama, untuk itu kita perlu menghapus semua program yang terlihat pada panel sebelah kiri. lalu ketikkan code dibawah ini:
from machine import Pin
from time import sleep
led = Pin(18, Pin.OUT)
while True:
led.value(1)
sleep(1)
led.value(0)
sleep(1)
Penjelasan Program
from machine import Pin
Perintah ini dipergunakan untuk memanggil fungsi Pin pada modul machine. Modul machine ini digunakan untuk berinteraksi langsung dengan perangkat keras (hardware) pada ESP32. Dengan perintah ini, kita bisa mengendalikan pin-pin pada mikrokontroler tersebut.
from time import sleep
Dipergunakan memanggil perintah sleep untuk menunda eksekusi program dari modul time. Perintah sleep() digunakan untuk membuat program berhenti sejenak selama waktu tertentu (dalam satuan detik). perintah ini berguna untuk membuat jeda atau delay dalam program.
led = Pin(18, Pin.OUT)
membuat sebuah objek bernama “led” yang merepresentasikan pin nomor 18 dan diatur sebagai output (Pin.OUT). Jika kalian menggunakan lebih dari 1 LED, maka kalian harus membuat objek masing-masing led dengan pola seperti ini. Misalnya, jika kalian menggunakan 2 buah LED maka kalian harus membuat 2 objek untuk mempermudah pengendalian LED. untuk penamaan objek yang lebih dari 1 boleh saja diberi nama led1, led2, led3 dsb. Pastikan juga tiap nomor pin dalam parameter Pin sesuai dengan pin yang terhubung ke kaki LED.
while True:
Fungsi ini bermakna berulang terus menerus. semua baris perintah yang berada dibawah fungsi ini dan berindentasi (agak sedikit masuk kedalam) adalah program yang akan terus menerus di eksekusi sampai akhirnya mesin dihentikan.
led.value(1)
Memberikan nilai 1 pada objek led (pin 18). Memberikan nilai (value) 1 pada pin output akan membuat LED menyala. Nilai 1 umumnya mewakili tegangan positif (misalnya 3.3V atau 5V) yang diperlukan untuk menyalakan LED. sebaliknya memberikan nilai (value) 0 akan membuat LED mati.
sleep(1)
Menunda pembacaan program selama 1 detik. Setelah LED menyala, program akan berhenti sejenak selama 1 detik sebelum melanjutkan ke perintah berikutnya, yaitu led.value(0).
Dengan demikian, jika program dituliskan secara berurutan seperti dibawah ini:
while True:
led.value(1)
sleep(1)
led.value(0)
sleep(1)
Maka lampu LED akan menyala (led.value(1)) selama 1 detik (sleep(1)) lalu LED akan mati (led.value(0)) selama satu detik lalu mengulang kembali dari awal karena looping/perulangan terus menerus oleh while True.
Langkah selanjutnya, klik tombol play berwarna hijau untuk memulai pada panel rangkaian dan perhatikan apa yang terjadi. Jika rangkaian dan program dibuat dengan benar, maka pada saat simulasi dijalankan lampu LED akan hidup dan mati secara teratur.
Sekian tutorial pertama saya tentang simulasi pengendalian LED dengan ESP32 dan MicroPython ini. Semoga tutorialnya mudah dipahami dan bermanfaat bagi pembaca.
Akhir semester sudah dekat. Seperti biasa kita akan membuat robot line follower untuk diperlombakan. Robot line follower adalah robot sederhana yang dapat berjalan mengikuti jalur garis tertentu secara otomatis. Berbeda dengan robot line follower yang biasa kita buat, robot kita kali ini akan dilengkapi dengan sensor jarak. Dengan adanya sensor jarak ini, robot nantinya akan mampu menghindari halangan yang ada di depannya dan kembali ke jalurnya semula.
Tanpa panjang lebar lagi, yuk kita ikuti langkah-langkah kerja pembuatannya.
Bahan-Bahan
Bahan
Jumlah
Gambar
Arduino UNO
1 Buah
Motor Shield L293D
1 buah
Robot Chassis
1 set
Sensor Ultra Sonic
1 buah
Male Header
1 set
Case Ultra Sonic
1 buah
Battery case 2 baterai
1 buah
Baterai 18650
2 buah
Sensor Infra Red
2 buah
Kabel Jumper female to female
Secukupnya
Gambar Rangkaian
Dibawah ini adalah gambar rangkaian masing-masing komponen secara terpisah. masing-masing komponen harus terpasang semuanya dengan benar agar robot dapat bekerja sebagaimana mestinya.
Rangkaian motor dan baterai
Penyambungan Motor dan Baterai
Rangkaian Sensor Inframerah
Sambungan modul sensor inframerah
Rangkaian Modul Sensor Jarak Ultrasonik
Sambungan modul sensor jarak ultrasonik
Tabel Koneksi antar pin
Inframerah kanan
Inframerah kiri
Ultrasonik
Motor Kanan
Motor Kiri
Baterai
Arduino + MotorShield
D0
A3
GND
GND
VCC
+5V
D0
A2
GND
GND
VCC
+5V
VCC
+5V
Trig
A4
Echo
A5
GND
GND
2 kabel
M4
2 Kabel
M1
Kabel Positif (merah)
+M
kabel negatif
GND
Pembuatan Terminal untuk Sensor
Motor Shield L293D memiliki lubang-lubang yang bisa dipasangi header untuk mempermudah penyambungan kabel jumper yang menghubungkan sensor inframerah dan sensor jarak ultrasonik dengan Arduino (perhatikan gambar diatas). Pemasangan header ini dilakukan dengan cara menyolder kaki-kaki header ke lubang-lubang yang tersedia. Selain penyolderan header ke papan Shield L293D, Motor DC juga perlu disolder terminal-terminalnya dengan kabel.
Untuk penempatan komponen dan sambungan kabelnya, perhatikan gambar-gambar dibawah ini:
Code
Upload code dibawah ini supaya robot bisa bekerja sesuai fungsinya, beberapa bagian program juga perlu di modifikasi sesuai kebutuhan robot.
NewPing.h dan AFMotor.h adalah program tambahan yang akan mempermudah proses coding. Program tambahan ini disebut dengan library. Library ini harus diinstal terlebih dahulu sebelum kita mengupload program ke robot line follower yang kita buat. Untuk menginstall library yang dibutuhkan, perlhatikan langkah-langkah berikut:
Buka/klik Library manager yang terdapat dibagian kiri layar
Pada bagian search bar, ketikkan “Adafruit Motor Shield” untuk mencari library yang sesuai. Setelah itu nanti akan terlihat Adafruit Motor Shield library di hasil pencarian, klik instal. Perhatikan gambar
Instalasi bisa dikatakan selesai apabila pada terminal ouput terlihat seperti gambar dibawah ini:
Sampai disitu kita sudah berhasil menginstal library AFMotor. Kita ulangi langkah yang sama dengan sebelumnya untuk menginstal library NewPing. Untuk mempermudah penemuan library NewPing, ketikkan “NewPing” di search bar.
Kecepatan dan Keseimbangan Motor
//GERAKAN MOTOR
#define MAX_SPEED 200
#define MAX_SPEED_OFFSET 20
#define speedKanan MAX_SPEED - 0
#define speedKiri MAX_SPEED - 0
int speedBelokKiri = speedKiri - 30;
int speedBelokKanan = speedKanan - 30;
int delayBelok = 20;
kecepatan maksimal atau MAX_SPEED robot dalam program ini adalah 200. Jika roda kiri dan roda kanan di set dengan nilai MAX_SPEED maka motor akan berputar dengan kecepatan maksimal. Walaupun begitu, seringkali kita harus menyesuaikan kecepatan motor dengan kondisi sebenarnya dilapangan. Untuk mengatur kecepatan motor kanan, kita bisa mengurangi MAX_SPEED secara bertahap pada baris #define speedKanan MAX_SPEED – 0; . Nilai 0 bisa diisi dengan nilai angka misalnya 30 untuk mengurangi kecepatan motor sebelah kanan. Begitu juga dengan motor sebelah kiri, kita ganti nilai 0 pada speedKiri untuk mengurangi kecepatan motor sebelah kiri.
Ada kalanya robot tidak bisa berjalan lurus karena kecepatan real dari motor kanan dan motor kiri berbeda walaupun dalam program kita sudah mengatur dengan nilai yang sama. Untuk mengatasi hal ini, kita bisa mengatur speedKanan dan speedKiri dengan nilai yang berbeda. Misalnya, jika robot ada kecenderungan bergerak kearah kanan, maka kita atur nilai motor sebelah kiri supaya lebih rendah dari motor yang kanan secara bertahap. Uji coba perubahan nilai ini untuk melihat hasilnya secara langsung.
Agar robot bisa berbelok sesuai jalur yang ditentukan, kita juga harus mengatur kecepatan motor saat dibelokan dengan cara menguragi nilai speedKiri dan speed kanan pada variabel speedBelokKiri dan speedBelokKanan. Kurangi nilai ini secara bertahap untuk mendapatkan hasil yang diinginkan. Perlu diingat bahwa pembacaan sensor sering kali gagal jika robot bergerak terlalu cepat.
Melewati Halangan
//HALANGAN
//HALANGAN
int delayHal1 = 200;
int delayHal2 = 700;
int delayHal3 = 300;
Jika terdapat halangan ditengah jalur, robot akan mengambil tindakan mengelak dan memutari halangan tersebut. Tindakan mengelak dan memutari halangan ini memiliki langkah-langkah sebagai berikut:
Robot mendeteksi halangan
Robot berhenti 1 detik
Robot berputar ke kiri dengan gerak rotasi. Jika robot berputar terlalu banyak, kurangi nilai delayHal1
Robot bergerak maju. Jika robot maju terlalu jauh atur nilai delayHal2.
Robot berputar ke kanan dengan gerak rotasi. Jika Robot berputar terlalu banyak, kurangi nilai delayHal3
Posisi kabel Motor Kanan dan Kiri
Sesuai susunan perangkat, kabel motor sebelah kanan bisa dipasang pada terminal M3 dan M4, sedangkan kabel motor kiri bisa dipasang pada terminal M1 dan M2.
Ubah bagian kode dibawah ini untuk menyesuaikan dengan pemasangan terminal yang digunakan. pada kode dibawah ini motor kiri menggunakan terminal M1 dan motor kanan menggunakan terminal M3 (motor1 adalah motor kiri yang terhubung ke M1 dan motor2 adalah motor kanan yang terhubung ke M3.
Jika motor bergerak terbalik, gerakan yang seharusnya maju menjadi mundur, tukar/ balik posisi kabel pada terminal motor.
Sensitifitas Sensor InfraRed
Sensor infra merah yang kita gunakan sangat sensitif terhadap gangguan cahaya dari luar. Untuk mengatasi masalah tersebut, kita bisa memberi tambahan penutup disekitar sensor agar terlindung dari cahaya eksternal. Selain itu, jarak sensor ke permukaan lantai juga harus diperhatikan, jangan terlalu jauh dan jangan terlalu dekat.
Sensor Infra merah yang kita gunakan juga dilengkapi dengan potensiometer (berwarna biru dan punya bagian yang dapat diputar dengan obeng). Potensiometer ini berfungsi untuk menyesuaikan akurasi pembacaan sensor. Potensiometer ini . Sesuaikan pembacaan sensor dengan ketentuan jika berada di luar garis (lantai putih), lampu indikator sensor akan menyala, sebaliknya jika sensor berada digaris berwarna hitam, lampu indikator akan mati. Posisikan dan geser-geser sensor dan pastikan lampu indikator secara responsif hidup dan mati yang menandakan sensor juga merespon dengan cepat.
Akhirnya, saya ucapkan selamat mencoba. Terima kasih sudah mengunjungi tulisan ini dan membaca sampai akhir.
Assalamualikum, Halo, semuanya! Kali ini kita akan membahas tentang sensor gerak yang cukup populer, yaitu sensor PIR HC-SR501. Sensor ini bisa mendeteksi gerakan dengan cara menangkap perubahan radiasi inframerah dari objek di sekitarnya. Radiasi sinar inframerah ini biasanya berasal dari panas tubuh makhluk hidup seperti orang dan binatang sehingga sensor ini sangat cocok untuk digunakan sebagai alat keamanan di rumah kita. Kita akan belajar cara menghubungkannya dengan Arduino UNO dan membuat sistem sederhana yang bisa mendeteksi gerakan. Yuk, simak!
Cara Kerja Sensor PIR HC-SR501
Sensor PIR HC-SR501 ini punya cara kerja yang cukup sederhana dan menarik. Sensor ini dilengkapi dengan dua elemen yang sensitif terhadap radiasi inframerah. Ketika ada objek hangat, seperti tubuh manusia dan hewan, yang bergerak di dekatnya, sensor bisa mendeteksi perubahan radiasi ini. Ketika gerakan terdeteksi, sensor membandingkan sinyal yang diterima dari kedua elemen tersebut. Jika ada perbedaan yang signifikan—misalnya, saat seseorang bergerak dari satu sisi ke sisi lain—sensor akan memberikan sinyal output yang menunjukkan adanya gerakan.
Sinyal ini biasanya berupa sinyal HIGH (sekitar 5V) yang bisa digunakan untuk menghidupkan perangkat lain, seperti LED atau relay. Selain itu, sensor ini juga memiliki potensiometer yang memungkinkan kita untuk mengatur berapa lama sinyal HIGH tersebut aktif setelah gerakan terdeteksi. Jadi, kita bisa sesuaikan durasinya sesuai kebutuhan. Setelah periode waktu yang ditentukan berakhir, sensor akan kembali ke mode tidak aktif dan mengeluarkan sinyal LOW sampai ada gerakan baru yang terdeteksi. Dengan cara kerjanya yang sederhana dan efektif, sensor PIR HC-SR501 ini sangat populer, terutama dalam aplikasi keamanan, otomatisasi rumah, dan berbagai proyek DIY dengan Arduino.
Alat dan Bahan
Seperti biasa, kita butuh alat dan bahan untuk project ini, yaitu:
Alat / Bahan
Kebutuhan
Arduino UNO
1 Buah
Sensor gerak PIR HC-SR501
1 buah
Breadboard
1 buah
LED
1 buah
buzzer
1 buah
Kabel Jumper
Secukupnya
Gambar Rangkaian
Coding
int ledPin = 12; // pin yang terhubung dengan LED
int buzzPin = 11; //pin yang terhubung dengan speaker
int pirPin = 8; // pin yang terhubung dengan
int status= LOW; // anggap saja nggak ada gerakan
int val = 0; // pembacaan status pin
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buzzPin, OUTPUT);
pinMode(pirPin, INPUT);
Serial.begin(9600);
}
void loop(){
val = digitalRead(inputPin);
if (val == HIGH)
{
digitalWrite(ledPin, HIGH);
if (pirState == LOW)
{
Serial.println("Motion detected!"); // print on output change
pirState = HIGH;
tone(buzzPin, 1000);
delay(500);
noTone(buzzPIN);
}
}
else
{
digitalWrite(ledPin, LOW); // turn LED OFF
if (pirState == HIGH)
{
Serial.println("Motion ended!"); // print on output change
pirState = LOW;
}
}
}
Setelah kode di-upload ke Arduino, buka Serial Monitor di Arduino IDE. Gerakkan tangan kalian di depan sensor dan lihat apakah pesan “Motion Detected” muncul. Jika LED nyala dan speaker berbunyi, berarti semua berfungsi dengan baik!
Sampai disini, Kita sudah berhasil belajar bagaimana cara menghubungkan dan menggunakan sensor gerak PIR HC-SR501 dengan Arduino UNO. Dengan pengetahuan ini, kalian bisa mengembangkan proyek lainnya yang lebih seru, seperti sistem keamanan otomatis atau kontrol perangkat berdasarkan keberadaan orang dan sebagainya. Selamat bereksperimen!
Halo, Semuanya!, bertemui lagi dengan saya yang udah lama nggak nulis karena libur sekolah. Dalam dunia pertanian, pemantauan kelembaban tanah menjadi sangat penting untuk meningkatkan menjaga kesehatan tanaman dan efisiensi penggunaan air . Disini kita kan menggunakan sensor kelembaban tanah kapasitif untuk melakukan pemantauan kondisi tanah tempat tanaman kita. Dalam postingan ini, kita akan membahas bagaimana cara membuat antarmuka sensor kelembaban tanah kapasitif menggunakan Arduino UNO. Project ini nantinya bisa dikembangkan sedemikain rupa untuk mendukung sistem pertanian yang modern. Yuk, kita mulai!
Sensor Kelembaban Tanah Kapasitif
Sensor kelembaban tanah kapasitif adalah alat yang digunakan untuk mengukur kadar kelembaban tanah dengan cara mengukur perubahan kapasitansi listrik disekitar tanah. Sensor ini lebih akurat dan tahan lama dibandingkan dengan sensor kelembaban resistif (yang memiliki 2 probe), sehingga sangat cocok untuk penggunaan jangka panjang.
Untuk dapat mengendalikan input dari sensor ini, kita akan menggunakan Arduino sebagai otaknya. Untuk itu kita perlu mempersiapkan alat, bahan, gambar rangkaian dan contoh codingnya.
Alat dan Bahan
Alat/Bahan
Kebutuhan
Arduino UNO
1 Buah
Sensor Kelembaban Tanah Kapasitif
1 buah
Layar LCD
1 buah
Breadboard
1 buah
kabel jumper / kabel biasa
secukupnya
Gambar Rangkaian
Instalasi Library LCD 16×2 I2C
untuk bisa mengendalikan sensor LCD 16×2 dengan mudah, kita perlu menginstal library untuk kedua modul tersebut dengan mengikuti langkah-langkah berikut ini:
Bukalah aplikasi Arduino IDE, lalu buka library manager yang terdapat disebelah kiri layar
Library yang akan kita instal adalah library LiquidCrystal_I2C. Gunakan kotak pencarian untuk mempermudah pencarian library yang dimaksud. Lewati langkah ini jika library sudah pernah diinstal sebelumnya.
Setelah library berhasil terinstal, maka kita bisa lanjut ke proses penulisan code program. yukk lanjut…
Coding
/* Gantilah nilai-nilai variabel dibawah ini sesuai dengan hasil pemantauan mu */
#define nilaiBasah 277 // nilai maksimal, kita anggap ini sebagai kondisi basah
#define nilaiKering 380 // nilai minimal, kita anggap sebagai kering
// pin yang terhubung ke sensor
#define sensorPin A0
//library LCD
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.setCursor(2, 0);
lcd.print("Please Wait");
//tunggu 10 detik sebelum sensor aktif
lcd.setCursor(0, 1);
for (int a = 10; a >= 0; a--) {
Serial.println(a);
lcd.print(">");
delay(1000);
}
lcd.clear();
Serial.print("Sensor Aktif");
lcd.setCursor(2, 0);
lcd.print("Sensor Aktif");
delay(1000);
lcd.clear();
}
void loop() {
// pembacaan input dari sensor
int lembab = analogRead(sensorPin);
//menampilkan hasil pembacaan
Serial.print("Analog output: ");
Serial.println(lembab);
// penentuan kondisi tanah
if (lembab < nilaiBasah) {
Serial.println("Status: tanah terlalu basah");
lcd.setCursor(0, 0);
lcd.print("Kondisi Tanah");
lcd.setCursor(0, 1);
lcd.print("terlalu Basah");
} else if (lembab >= nilaiBasah && lembab < nilaiKering) {
Serial.println("Status: sempurna");
lcd.setCursor(0, 0);
lcd.print("Kondisi Tanah");
lcd.setCursor(0, 1);
lcd.print("sempurna");
} else {
Serial.println("Status: Tanah terlalu kering, perlu disiram");
lcd.setCursor(0, 0);
lcd.print("Kondisi Tanah");
lcd.setCursor(0, 1);
lcd.print("terlalu Kering");
}
Serial.println();
delay(1000);
lcd.clear();
}
Upload kode diatas, cek dahulu pastikan tidak ada yang error. Setelah upload berhasil, kita bisa langsung uji coba dengan menggunakan sampel tanah basah dan kering.