DC
Kelas Digital Creative
Robotika · IoT · Scratch · Canva · CapCut · AI
← kembali ke Home

Membuat Tempat Sampah Pintar Tanpa Sentuh dengan Sensor Ultrasonik dan Servo (Simulasi Arduino UNO di Wokwi)

⏱ 40 Menit Arduino August 2026 🔧

Pada tutorial ini, kita akan membuat tempat sampah pintar yang bisa membuka tutupnya secara otomatis tanpa perlu disentuh tangan — cukup dekatkan tangan ke sensor, tutupnya akan terbuka sendiri. Proyek ini memakai Arduino UNO, sensor jarak HC-SR04, dan motor servo sebagai penggerak tutup, semua disimulasikan di Wokwi.

Apa yang Akan Kita Pelajari?

Bagian Komponen Fungsi
Board Arduino UNO Membaca sensor dan menggerakkan servo
Sensor HC-SR04 Ultrasonik Mendeteksi jarak tangan (TRIG di pin 3, ECHO di pin 2)
Output Micro Servo Membuka/menutup tutup tempat sampah (PWM di pin 10)
Ambang Jarak 15 cm Batas jarak tangan supaya tutup terbuka
Posisi Servo 0° / 90° 0° = tertutup, 90° = terbuka
Library Servo Memudahkan pengontrolan sudut motor servo

Deskripsi Proyek

Proyek ini mensimulasikan tempat sampah otomatis yang dapat membuka tutupnya tanpa disentuh. Sensor ultrasonik membaca jarak tangan. Ketika tangan berada dekat dengan sensor, Arduino memberi perintah kepada servo untuk membuka tutup. Setelah beberapa detik, servo kembali ke posisi awal sehingga tutup menutup lagi.

Kenapa Proyek Ini Berguna?

  • Mengenalkan konsep kebersihan tanpa sentuhan untuk mengurangi kontak langsung dengan tempat sampah (mengurangi penyebaran kuman/bakteri).
  • Melatih penggunaan sensor jarak HC-SR04 sebagai input digital berbasis pulsa.
  • Memahami gerakan servo sebagai output mekanik sederhana.
  • Membiasakan pembagian jalur 5V dan GND lewat breadboard saat komponen yang dipakai lebih dari satu.
  • Menjadi dasar pengembangan alat rumah pintar lainnya, seperti dispenser otomatis, pintu mini otomatis, dan kotak penyimpanan pintar.

Tujuan Pembelajaran

Setelah menyelesaikan tutorial ini, kamu diharapkan bisa:

  • Menjelaskan peran pin TRIG dan ECHO pada sensor ultrasonik.
  • Menghubungkan servo ke pin PWM Arduino UNO.
  • Membaca nilai jarak dan membuat keputusan buka/tutup berdasarkan batas jarak tertentu.
  • Menjalankan simulasi di Wokwi dan memperbaiki kesalahan wiring dasar.

Langkah 1: Menyiapkan Komponen

Komponen Fungsi
Arduino UNO Mikrokontroler utama yang membaca sensor dan mengontrol servo.
HC-SR04 Sensor ultrasonik untuk mendeteksi jarak tangan dari tempat sampah.
Micro Servo Motor kecil untuk membuka dan menutup tutup tempat sampah.
Breadboard Membagi jalur 5V dan GND untuk sensor dan servo.
Kabel jumper Menghubungkan semua komponen di area simulasi Wokwi.

Langkah 2: Memasang Library yang Dibutuhkan

Library yang perlu dipasang di Wokwi untuk proyek ini adalah Servo. Buka tab Library Manager di Wokwi, lalu pastikan library ini sudah muncul di daftar Installed Libraries.

💡 Catatan Praktik: kenapa servo kadang tidak merespons?

Pastikan servo menggunakan jalur daya 5V dan GND yang sama dengan Arduino (lewat breadboard). Jalur ground (GND) yang tidak tersambung dengan benar adalah penyebab paling umum servo terlihat “diam saja” meskipun kabel PWM-nya sudah benar — karena servo butuh referensi ground yang sama dengan Arduino supaya sinyal kontrolnya bisa “dibaca” dengan tepat.

Langkah 3: Merangkai Wiring (Jalur Kabel)

Jalur / Pin Sambungan
5V Arduino Ke jalur (+) breadboard.
GND Arduino Ke jalur (−) breadboard.
HC-SR04 VCC Ke jalur (+) breadboard.
HC-SR04 GND Ke jalur (−) breadboard.
HC-SR04 TRIG Ke pin digital 3 Arduino.
HC-SR04 ECHO Ke pin digital 2 Arduino.
Servo V+ Ke jalur (+) breadboard.
Servo GND Ke jalur (−) breadboard.
Servo PWM Ke pin digital 10 Arduino.
💡 Bagaimana cara kerja sensor HC-SR04 mendeteksi jarak?

Sensor HC-SR04 bekerja dengan mengirim gelombang ultrasonik (gelombang suara berfrekuensi sangat tinggi, tidak terdengar telinga manusia) dari pin TRIG, lalu menunggu pantulan gelombang tersebut kembali diterima di pin ECHO. Arduino kemudian menghitung berapa lama waktu dari gelombang dipancarkan sampai pantulannya diterima kembali, dan mengubah waktu tersebut menjadi jarak dalam satuan sentimeter. Prinsip ini sama seperti cara kelelawar “melihat” dalam gelap menggunakan gema suara (ekolokasi).

Langkah 4: Memahami Alur Kerja Sistem

  1. Baca Jarak — HC-SR04 mengukur jarak tangan pengguna.
  2. Keputusan — apakah jarak berada di rentang 1–15 cm?
  3. Jika YA — servo membuka ke 90 derajat.
  4. Setelah 3 detik — servo kembali ke 0 derajat (menutup).
  5. Jika TIDAK — servo tetap di 0 derajat (tutup tetap tertutup).
  6. Ulang — sensor terus membaca jarak lagi tanpa henti.

Grafik Ambang Jarak

Jarak Status Tutup
1–15 cm Terbuka (servo 90 derajat)
Lebih dari 15 cm Tetap tertutup (servo 0 derajat)

Saat sensor membaca jarak tangan 15 cm atau kurang, servo membuka selama 3 detik, lalu kembali menutup secara otomatis.

Langkah 5: Menulis Kode Program (sketch.ino)

Buka file sketch.ino di Wokwi, lalu salin kode berikut:

#include <Servo.h>

// Menyiapkan colokan komponen
int trigPin = 3;
int echoPin = 2;

Servo tutupSampah; // Memberi nama servonya "tutupSampah"

void setup() {
  Serial.begin(9600);

  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);

  tutupSampah.attach(10); // Servo dicolok ke angka 10
  tutupSampah.write(0);   // Posisi Awal: Tutup tempat sampah TERTUTUP (0 derajat)

  Serial.println("Tempat Sampah Pintar SIAP DIGUNAKAN.");
  Serial.println("Dekatkan tangan Anda (di bawah 15 cm) untuk membuka.");
}

void loop() {
  // 1. Membaca Jarak (Mendeteksi Tangan)
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long duration = pulseIn(echoPin, HIGH);
  int jarak = duration * 0.034 / 2;

  // 2. Logika Buka/Tutup Tempat Sampah
  if (jarak > 0 && jarak <= 15) {
    // JIKA ADA TANGAN MENDEKAT (Jarak 15 cm atau kurang)
    Serial.println("Tangan terdeteksi! Membuka tutup sampah...");

    // Motor bergerak 90 derajat untuk membuka tutup sampah
    tutupSampah.write(90);

    // Tahan posisi terbuka selama 3 detik agar orang bisa buang sampah
    delay(3000);

    // Setelah 3 detik, tutup kembali
    Serial.println("Menutup kembali tempat sampah.");
    tutupSampah.write(0);

    // Beri jeda 1 detik agar tutup benar-benar rapat sebelum membaca sensor lagi
    delay(1000);

  } else {
    // JIKA TIDAK ADA ORANG (Jarak lebih dari 15 cm)
    // Pastikan tutup tetap tertutup rapat
    tutupSampah.write(0);
  }

  delay(100); // Jeda sangat singkat untuk pembacaan sensor
}

Langkah 6: Memahami Setiap Bagian Kode

Klik masing-masing bagian di bawah ini untuk memahami fungsinya satu per satu:

📦 Bagian Library dan Variabel Pin
  • #include <Servo.h> — memanggil library untuk mengontrol motor servo.
  • int trigPin = 3; — variabel yang menyimpan nomor pin TRIG sensor, yaitu pin digital 3.
  • int echoPin = 2; — variabel yang menyimpan nomor pin ECHO sensor, yaitu pin digital 2.
  • Servo tutupSampah; — membuat objek (perwakilan) servo di dalam program, diberi nama tutupSampah supaya mudah dipahami fungsinya saat membaca kode.
🚀 Bagian setup() — Dijalankan Sekali di Awal
  • Serial.begin(9600); — mengaktifkan komunikasi Serial Monitor.
  • pinMode(trigPin, OUTPUT); — mengatur pin TRIG sebagai output, karena pin ini yang mengirim sinyal ultrasonik keluar.
  • pinMode(echoPin, INPUT); — mengatur pin ECHO sebagai input, karena pin ini yang menerima sinyal pantulan.
  • tutupSampah.attach(10); — menghubungkan objek servo ke pin fisik 10 Arduino.
  • tutupSampah.write(0); — memutar servo ke posisi 0 derajat (tertutup) sebagai posisi awal saat program baru dinyalakan.
  • Serial.println(...) dua baris — menampilkan pesan pembuka ke Serial Monitor, memberi tahu bahwa sistem sudah siap dipakai.
📏 Bagian loop() — Membaca Jarak Sensor
  • digitalWrite(trigPin, LOW); delayMicroseconds(2); — memastikan pin TRIG dalam kondisi mati sesaat, sebagai "ancang-ancang" sebelum mengirim sinyal.
  • digitalWrite(trigPin, HIGH); delayMicroseconds(10); — menyalakan TRIG selama 10 mikrodetik untuk memancarkan gelombang ultrasonik.
  • digitalWrite(trigPin, LOW); — mematikan TRIG lagi setelah gelombang dipancarkan.
  • long duration = pulseIn(echoPin, HIGH);pulseIn() mengukur berapa lama (dalam mikrodetik) pin ECHO menerima sinyal HIGH, yaitu waktu tempuh gelombang pergi dan kembali.
  • int jarak = duration * 0.034 / 2; — mengubah waktu tempuh gelombang menjadi jarak dalam sentimeter. Angka 0.034 adalah kecepatan suara di udara (dalam cm per mikrodetik), dibagi 2 karena gelombang menempuh jarak dua kali (pergi dan pantul kembali).
🚦 Bagian loop() — Logika Buka-Tutup Tempat Sampah
  • if (jarak > 0 && jarak <= 15) { ... } — tanda && berarti "dan". Kondisi ini bernilai benar hanya jika jarak lebih dari 0 DAN 15 atau kurang. Syarat "lebih dari 0" penting untuk menyaring hasil pembacaan yang tidak valid/error dari sensor (kadang sensor bisa membaca 0 jika tidak ada pantulan terdeteksi sama sekali).
  • Di dalam blok if ini: pesan "Tangan terdeteksi!" ditampilkan, servo diputar ke 90 derajat (membuka), lalu delay(3000) menahan posisi terbuka selama 3 detik supaya pengguna sempat membuang sampah.
  • Setelah jeda 3 detik, servo diputar kembali ke 0 derajat (menutup), lalu ada jeda tambahan delay(1000) selama 1 detik supaya tutup benar-benar rapat sebelum sensor membaca jarak lagi.
  • else { ... } — kalau kondisi di atas tidak terpenuhi (tidak ada tangan yang cukup dekat), servo dipastikan tetap di posisi 0 derajat (tertutup).
  • delay(100); — jeda sangat singkat (0,1 detik) sebelum loop() mengulang dan membaca jarak lagi, supaya sensor bisa merespons dengan cepat saat ada tangan mendekat.

Langkah 7: Menjalankan dan Menguji Simulasi

  1. Klik tombol Play di Wokwi untuk menjalankan simulasi.
  2. Buka Serial Monitor supaya pesan status dari Arduino terlihat.
  3. Klik komponen sensor HC-SR04, lalu geser objek simulasi mendekati sensor.
  4. Saat jarak terbaca 15 cm atau kurang, servo bergerak ke 90 derajat untuk membuka tutup.
  5. Servo menahan posisi terbuka selama 3 detik, lalu kembali ke 0 derajat.
  6. Jauhkan objek dari sensor untuk memastikan tutup tetap tertutup.

Hasil yang Diharapkan

Pada kondisi awal, servo berada di posisi 0 derajat. Ketika tangan didekatkan ke sensor, Serial Monitor menampilkan pesan bahwa tangan terdeteksi, lalu servo bergerak membuka. Setelah durasi tunggu selesai, servo kembali menutup.

Kondisi Aksi Arduino Hasil
Jarak lebih dari 15 cm Servo dijaga pada 0 derajat Tutup tertutup
Jarak 1–15 cm Servo diarahkan ke 90 derajat Tutup terbuka
Setelah 3 detik Servo kembali ke 0 derajat Tutup menutup otomatis

Langkah 8: Mengatasi Masalah Umum (Troubleshooting)

Masalah Solusi
Servo tidak bergerak Cek kabel PWM servo sudah masuk ke pin 10, V+ ke jalur 5V, dan GND ke jalur ground.
Sensor tidak membaca jarak Pastikan TRIG masuk ke pin 3 dan ECHO masuk ke pin 2, jangan tertukar.
Nilai jarak terlihat aneh/tidak wajar Cek jalur VCC dan GND sensor, lalu pastikan simulasi memang sudah dijalankan (tombol Play aktif).
Tutup terbuka terus-menerus Pastikan objek simulasi tidak terus berada dalam jarak di bawah 15 cm dari sensor.
Program error saat compile Pastikan library Servo sudah tersedia di Library Manager, dan tanda kurung kurawal { } pada kode tidak ada yang hilang/berubah.

Langkah 9: Ide Pengembangan Lebih Lanjut

  • Tutup asli bisa dibuat memakai engsel ringan, supaya motor servo kecil tidak bekerja terlalu berat mengangkat beban.
  • Batas jarak bisa disesuaikan, misalnya 10 cm untuk ruangan sempit, atau 20 cm jika sensor dipasang agak jauh dari posisi tangan pengguna.
  • Catu daya servo sebaiknya dipisah dari Arduino jika servo fisik yang dipakai membutuhkan arus listrik yang lebih besar.
  • Sensor bisa dipasang di bagian depan atau atas tempat sampah, supaya posisi tangan pengguna lebih mudah terdeteksi secara alami.
  • Untuk penggunaan di luar ruangan, komponen elektroniknya perlu diberi pelindung dari air dan debu (misalnya casing tahan cuaca).
⚠️ Catatan Keamanan Praktik (klik untuk baca)

Gunakan mekanik yang ringan pada tutup tempat sampah, supaya motor servo tidak dipaksa bekerja mengangkat beban yang terlalu berat — servo mikro seperti yang dipakai di simulasi ini didesain untuk beban ringan, dan bisa cepat rusak atau terbakar kalau dipaksakan mengangkat tutup yang berat.

Rangkuman

  • Proyek ini menggabungkan sensor jarak (HC-SR04) sebagai input dan motor servo sebagai output, membentuk sistem otomatis sederhana berdasarkan jarak.
  • Sensor ultrasonik mengukur jarak dengan cara memancarkan gelombang suara dan menghitung waktu pantulannya kembali — prinsip yang sama dipakai di banyak alat pengukur jarak lainnya.
  • Percabangan logika if...else beserta operator && ("dan") dipakai untuk memastikan aksi (membuka tutup) hanya terjadi saat jarak berada dalam rentang yang valid dan masuk akal.
  • delay() dipakai di beberapa tempat untuk mengatur waktu tunggu, seperti menahan tutup tetap terbuka sejenak, atau memberi jeda supaya tutup benar-benar rapat sebelum sensor membaca lagi.
  • Konsep ini adalah dasar dari banyak alat "tanpa sentuh" (touchless) yang makin umum dipakai di kehidupan sehari-hari, seperti dispenser sabun otomatis atau pintu otomatis.

Coba Simulasi di Wokwi

🔒 Simulasi ini dikunci. Minta passcode ke gurumu untuk membuka.