Dalam era modern ini, pengelolaan sampah menjadi salah satu tantangan terbesar bagi masyarakat urban di seluruh dunia. Pertumbuhan populasi yang pesat, urbanisasi, dan perubahan gaya hidup telah menyebabkan peningkatan volume sampah yang signifikan. Pengelolaan sampah yang tidak efisien tidak hanya berdampak pada kesehatan masyarakat dan lingkungan tetapi juga menambah beban operasional kota.
Untuk mengatasi masalah ini, teknologi telah menjadi salah satu solusi yang menjanjikan. Salah satu inovasi terbaru dalam pengelolaan sampah adalah tempat sampah otomatis. Tempat sampah otomatis dirancang untuk meningkatkan efisiensi pengumpulan sampah dengan menggunakan teknologi canggih, seperti sensor, sistem kontrol otomatis, dan komunikasi nirkabel. Teknologi ini bertujuan untuk mengurangi interaksi manual dan meminimalkan kebutuhan untuk penanganan sampah secara langsung.
Pentingnya Tempat Sampah Otomatis
Teknologi yang Digunakan
CARA KERJA
Pertama kita mengubungkan adapter 5v ke sumber tegangan untuk mengaktifkan sistem, Saat sistem sudah aktif maka sensor ultrasonic akan mendeteksi objek yang ada di depan sensor apabila ada objek pada jarang <= 10 cm Maka Servo akan berputar 90 derajat untuk membuka tutup tempat sampah. Sensor Ultrasonik yang berada pada penutup tempat sampah akan mengirim informasi ke WEB Server mengenai tingkat kapasitas Tempat Sampah
PROGRAM
#include <WiFi.h> // Library untuk menghubungkan ESP32 ke WiFi
#include <WebServer.h> // Library untuk membuat server HTTP
#include <ESP32Servo.h> // Library untuk mengendalikan servo motor pada ESP32
const char* ssid = "LAB.ELEKTRO"; // Nama SSID WiFi
const char* password = "awassutet"; // Password WiFi
WebServer server(80); // Inisialisasi server HTTP pada port 80
Servo servo; // Membuat objek servo
const int triggerPin = 13; // Pin trigger untuk sensor ultrasonik 1
const int echoPin = 12; // Pin echo untuk sensor ultrasonik 1
const int fillSensorTriggerPin = 27; // Pin trigger untuk sensor ultrasonik 2
const int fillSensorEchoPin = 26; // Pin echo untuk sensor ultrasonik 2
const int servoPin = 14; // Pin untuk servo motor
long duration; // Variabel untuk menyimpan durasi pulsa dari sensor ultrasonik
int distance; // Variabel untuk menyimpan jarak yang diukur oleh sensor ultrasonik
int fillLevel; // Variabel untuk menyimpan tingkat isian tempat sampah
void setup() {
Serial.begin(115200); // Memulai komunikasi serial pada baud rate 115200
pinMode(triggerPin, OUTPUT); // Set pin trigger sensor ultrasonik 1 sebagai OUTPUT
pinMode(echoPin, INPUT); // Set pin echo sensor ultrasonik 1 sebagai INPUT
pinMode(fillSensorTriggerPin, OUTPUT); // Set pin trigger sensor ultrasonik 2 sebagai OUTPUT
pinMode(fillSensorEchoPin, INPUT); // Set pin echo sensor ultrasonik 2 sebagai INPUT
servo.attach(servoPin); // Menghubungkan pin servo dengan objek servo
WiFi.begin(ssid, password); // Menghubungkan ESP32 ke WiFi
while (WiFi.status() != WL_CONNECTED) { // Menunggu sampai ESP32 terhubung ke WiFi
delay(1000); // Menunggu selama 1 detik
Serial.println("Connecting to WiFi..."); // Menampilkan pesan di serial monitor
}
Serial.println("WiFi connected."); // Menampilkan pesan setelah terhubung ke WiFi
Serial.println("IP address: ");
Serial.println(WiFi.localIP()); // Menampilkan alamat IP ESP32
server.on("/", handleRoot); // Mengatur handler untuk endpoint root ("/")
server.begin(); // Memulai server HTTP
Serial.println("HTTP server started."); // Menampilkan pesan bahwa server HTTP telah dimulai
}
void loop() {
server.handleClient(); // Menangani permintaan klien ke server HTTP
// Mengukur jarak dengan sensor ultrasonik untuk membuka/tutup tempat sampah
digitalWrite(triggerPin, LOW); // Mengatur pin trigger menjadi LOW
delayMicroseconds(2); // Menunggu selama 2 mikrodetik
digitalWrite(triggerPin, HIGH); // Mengatur pin trigger menjadi HIGH
delayMicroseconds(10); // Menunggu selama 10 mikrodetik
digitalWrite(triggerPin, LOW); // Mengatur pin trigger menjadi LOW
duration = pulseIn(echoPin, HIGH); // Mengukur durasi pulsa pada pin echo
distance = duration * 0.034 / 2; // Menghitung jarak dalam cm
// Mengukur tingkat isian dengan sensor ultrasonik
digitalWrite(fillSensorTriggerPin, LOW); // Mengatur pin trigger menjadi LOW
delayMicroseconds(2); // Menunggu selama 2 mikrodetik
digitalWrite(fillSensorTriggerPin, HIGH); // Mengatur pin trigger menjadi HIGH
delayMicroseconds(10); // Menunggu selama 10 mikrodetik
digitalWrite(fillSensorTriggerPin, LOW); // Mengatur pin trigger menjadi LOW
duration = pulseIn(fillSensorEchoPin, HIGH); // Mengukur durasi pulsa pada pin echo
fillLevel = duration * 0.034 / 2; // Menghitung tingkat isian dalam cm
// Mengendalikan servo motor berdasarkan jarak yang terukur
if (distance < 10) { // Jika ada objek dalam jarak kurang dari 10 cm
servo.write(90); // Buka tutup tempat sampah
} else {
servo.write(0); // Tutup tempat sampah
}
// Mengirim data tingkat isian ke klien (web browser)
String fillLevelStr = String(fillLevel); // Mengkonversi tingkat isian menjadi string
server.send(200, "text/plain", fillLevelStr); // Mengirim data ke klien dengan status 200 (OK)
delay(1000); // Menunggu selama 1 detik
}
void handleRoot() {
server.send(200, "text/plain", "Tingkat Isian Tempat Sampah: " + String(fillLevel)); // Mengirim pesan ke klien saat mengakses endpoint root
}
0 Orang Menyukai Karya Ini