AI Assistant
Detail Karya Portofolio

TEMPAT SAMPAH OTOMATIS BERBASIS WEB SERVER

Muhammad Arya Ismail Oleh: Muhammad Arya Ismail

Ringkasan Portofolio

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.

Deskripsi & Detail Proyek

Pentingnya Tempat Sampah Otomatis

  1. Efisiensi Operasional: Tempat sampah otomatis dapat memantau dan mengelola kapasitas tempat sampah secara real-time. Sistem sensor dapat mendeteksi tingkat penuh dan mengirimkan informasi kepada petugas pengelola sampah sehingga pengumpulan dapat dilakukan secara tepat waktu dan tidak perlu dilakukan secara rutin.
  2. Pengurangan Kontaminasi: Dengan fitur penutup otomatis dan mekanisme pemrosesan sampah yang canggih, tempat sampah otomatis dapat mengurangi risiko kontaminasi dan penyebaran bau tidak sedap. Ini membantu menjaga kebersihan lingkungan sekitar dan mengurangi dampak negatif terhadap kesehatan masyarakat.

Teknologi yang Digunakan

  1. Sensor dan Internet: Sensor canggih digunakan untuk memantau tingkat penuh tempat sampah, mendeteksi jenis sampah, dan mengirimkan data ke web server
  2. Sistem Penutup Otomatis: Tempat sampah otomatis dilengkapi dengan mekanisme penutup yang bekerja secara otomatis untuk menjaga kebersihan dan mencegah bau.
  3. Pemrosesan dan Pengolahan: Beberapa model dilengkapi dengan fitur pengolahan sampah internal, seperti pemadatan atau pemisahan sampah, untuk mengoptimalkan kapasitas dan efisiensi.

      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

}