Buka Senin - Jumat jam 08.30 s/d jam 16.30 , Sabtu Jam 8.30 s/d jam 13.00 , Minggu tutup
  • Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
  • Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
Beranda » Blog » Bikin Tempat Sampah Pintar yang Bisa Terbuka Otomatis dan Mendeteksi Kondisi Penuh

Bikin Tempat Sampah Pintar yang Bisa Terbuka Otomatis dan Mendeteksi Kondisi Penuh

Diposting pada 3 November 2026 oleh indo maker / Dilihat: 43 kali

Halo sobat IoT! Pernah gak sih kamu membayangkan punya tempat sampah pintar di rumah yang gak cuma bisa bekerja secara otomatis, tetapi juga mampu memberikan laporan kondisi secara nirkabel? Di era modern ini, mengembangkan perangkat smart bin berbasis Internet of Things (IoT) menjadi salah satu proyek menarik untuk dipelajari. Dengan memadukan mikrokontroler ESP32 dan sensor digital, kita bisa membangun sistem monitoring dan kontrol jarak jauh yang lebih efisien. Konsep monitoring berbasis IoT ini juga bisa diterapkan pada berbagai kebutuhan lain, salah satunya untuk memantau kondisi lingkungan peternakan melalui proyek sistem monitoring suhu dan kelembapan kandang ayam berbasis IoT. Yuk, kita bedah langkah demi langkah pembuatannya!

1. Alat dan Bahan Tempat Sampah Pintar

Berikut adalah daftar komponen hardware utama yang kita butuhkan untuk membangun modul kontrol dan monitoring tempat sampah pintar ini:

Komponen Jumlah Keterangan
ESP32 IoT Programmable Controller (SKU: DFR0886) 1 unit Mikrokontroler utama berbasis ESP32 SoC dengan konektivitas WiFi & MQTT (sumber rujukan resmi dari DFRobot ESP32 Controller).
Sensor DHT22 / AM2302 1 unit Sensor suhu dan kelembapan digital 4-pin (VDD, DATA, NULL, GND) berbasis kapasitif (dapat dikembangkan menggunakan Adafruit DHT Sensor Library).
LED Indikator 1 unit Indikator status aktuator yang terhubung ke pin GPIO 15.
Kapasitor 100nF 1 unit Kapasitor filter tegangan (opsional) dipasang antara VDD dan GND pada DHT22.

Nah, dalam arsitektur sistem pengelolaan sampah pintar modern, sensor DHT22 ini bertugas memantau tingkat kelembapan dan suhu di dalam wadah sampah secara real-time. Data ini sangat vital untuk mendeteksi proses pembusukan sampah organik dan risiko timbulnya bau tak sedap. Sementara itu, komponen LED Indikator berfungsi merespons perintah kontrol jarak jauh via MQTT untuk mensimulasikan pemicu aktuator (seperti alarm status atau mekanisme pembuka otomatis) saat batas kapasitas atau ambang kelembapan terlampaui.

2. Skematik Rangkaian

Pinout Sensor DHT22 atau AM2302

Nah, buat wiring-nya, kita perlu memahami urutan pin dari sensor DHT22 (atau AM2302). Kalau sobat memegang sensor dengan menghadap ke sisi depan, konfigurasi 4 pin dihitung dari kiri ke kanan:

  • Pin 1 adalah VDD yang dihubungkan ke sumber tegangan 3.3V-6V DC.
  • Pin 2 adalah DATA yang memproses transmisi sinyal digital single-bus.
  • Pin 3 adalah NULL atau NC (Not Connected) yang tidak terhubung ke jalur mana pun.
  • Pin 4 adalah GND yang disambungkan ke jalur ground sistem.

Pemasangan Filter Tegangan dan Resistor

Biar sinyal pembacaan gak gampang terkena noise atau gangguan desah listrik, kita pasang kapasitor filter berukuran 100nF tepat di antara jalur VDD dan GND pada sensor DHT22. Selain itu, jalur DATA wajib dilengkapi dengan pull-up resistor (R_L) ke VDD agar jalur bus tetap berada pada level tegangan HIGH saat kondisi bebas (free status).

Koneksi LED Indikator

LED Indikator dihubungkan langsung sebagai aktuator keluaran digital. Pin positif (anode) LED disambungkan ke pin GPIO 15 pada ESP32, sedangkan pin negatifnya (cathode) terhubung ke GND. Logika program mikrokontroler akan mengatur apakah GPIO 15 bernilai HIGH atau LOW berdasarkan data instruksi yang diterima.

3. Cara Kerja Sistem Sensor dan Kontrol IoT

Komunikasi Single Bus DHT22

Komunikasi data antara ESP32 dan sensor DHT22 mengandalkan protokol digital single-bus yang membutuhkan waktu sekitar 5ms untuk sekali transmisi. Proses ini diawali oleh host (ESP32) yang menarik garis bus ke level LOW minimal 1ms, lalu menariknya ke HIGH selama 20-40µs untuk menunggu respons sensor. Sensor DHT22 kemudian menjawab dengan menarik garis ke LOW selama 80µs, diikuti level HIGH selama 80µs sebagai tanda siap mengirimkan data.

Setelah fase respons selesai, DHT22 mulai memancarkan 40-bit data (8-bit kelembapan integer, 8-bit kelembapan desimal, 8-bit suhu integer, 8-bit suhu desimal, dan 8-bit checksum). Nah, yang perlu diperhatikan secara rinci: setiap bit dari 40-bit data tersebut selalu diawali dengan pulsa sinyal LOW sepanjang 50µs. Setelah pulsa LOW 50µs tersebut, durasi sinyal HIGH yang mengikutinya menentukan nilai bit data, di mana sinyal HIGH sepanjang 70µs mewakili bit ‘1’, sedangkan sinyal HIGH sepanjang 26–28µs mewakili bit ‘0’.

Pengolahan dan Pengiriman MQTT

Setelah paket 40-bit data divalidasi melalui checksum, ESP32 memproses nilai suhu serta kelembapan di dalam wadah sampah. Data tersebut secara berkala dikirimkan (publish) melalui jaringan WiFi ke broker MQTT pada topik tertentu. Di saat yang sama, ESP32 terus mendengarkan (subscribe) topik perintah dari broker MQTT. Ketika sistem menerima data perintah dari pengguna (misalnya pemicu kondisi sampah penuh atau instruksi pembersihan), ESP32 langsung mengeksekusi logika untuk menyalakan atau mematikan LED indikator secara real-time.

4. Pemrograman ESP32 dan Konfigurasi MQTT

Berikut adalah kode program C++/Arduino resmi untuk mengelola koneksi WiFi, komunikasi MQTT publish dan subscribe, serta kontrol aktuator pada ESP32:

#include <WiFi.h>
#include <PubSubClient.h>

// Definisi pin LED
#define LED 15

// Konfigurasi WiFi dan MQTT
const char* ssid = "your_ssid";
const char* password = "your_password";
const char* mqtt_server = "broker.mqtt-dashboard.com";

// Inisialisasi koneksi WiFi dan MQTT
WiFiClient espClient;
PubSubClient client(espClient);

// Variabel untuk pengiriman pesan
long lastMsg = 0;
char msg[50];
int value = 0;

// Fungsi untuk menghubungkan ESP32 ke WiFi
void setup_wifi() {
  delay(10);

  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  randomSeed(micros());

  Serial.println("WiFi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
}

// Fungsi untuk menerima pesan dari MQTT
void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");

  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }

  Serial.println();

  // Mengatur kondisi LED berdasarkan pesan MQTT
  if ((char)payload[0] == '0') {
    digitalWrite(LED, LOW);
  } else {
    digitalWrite(LED, HIGH);
  }
}

// Fungsi untuk menghubungkan ulang MQTT
void reconnect() {
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");

    String clientId = "FireBeetleClient-";
    clientId += String(random(0xffff), HEX);

    if (client.connect(clientId.c_str())) {
      Serial.println("connected");

      client.publish("outTopic", "hello world");
      client.subscribe("inTopic");

    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");

      delay(5000);
    }
  }
}

// Fungsi inisialisasi sistem
void setup() {
  pinMode(LED, OUTPUT);

  Serial.begin(115200);

  setup_wifi();

  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);
}

// Fungsi utama yang dijalankan berulang kali
void loop() {
  if (!client.connected()) {
    reconnect();
  }

  client.loop();

  // Mengirim pesan MQTT setiap 2 detik
  long now = millis();

  if (now - lastMsg > 2000) {
    lastMsg = now;

    ++value;

    snprintf(msg, sizeof(msg), "hello world #%ld", value);

    Serial.print("Publish message: ");
    Serial.println(msg);

    client.publish("outTopic", msg);
  }
}

 

Penjelasan Fungsi Penting Program

Program di atas mengintegrasikan pustaka WiFi.h untuk menangani koneksi nirkabel dan PubSubClient.h untuk mengelola protokol MQTT. Broker publik ditentukan pada broker.mqtt-dashboard.com menggunakan port default 1883.

Di dalam fungsi setup_wifi(), terdapat baris randomSeed(micros()); yang dipadukan dengan pemanggilan clientId += String(random(0xffff), HEX); pada fungsi reconnect(). Kenapa hal ini sangat penting? Dalam arsitektur MQTT, setiap klien wajib memiliki Client ID yang unik. Pembuatan ID acak ini mencegah terjadinya session eviction loop, yaitu kondisi di mana dua perangkat dengan ID yang sama saling memutuskan koneksi satu sama lain secara berulang-ulang dari broker.

Fungsi callback() bertugas membaca pesan masuk pada topik subskripsi (inTopic). Jika karakter pertama payload berisi '0', pin GPIO 15 diatur ke LOW (LED padam). Jika menerima karakter lain, GPIO 15 diatur ke HIGH (LED menyala). Pada fungsi loop(), ESP32 secara teratur mempublikasikan status pesan ke outTopic setiap 2000 ms (2 detik) dengan menyertakan nilai increment value.

5. Pengujian Sistem dan Hasil Eksperimen

Untuk menguji integritas hardware dan software, hubungkan ESP32 ke komputer dan buka Serial Monitor pada Arduino IDE dengan baud rate 115200. Saat booting, Serial Monitor akan menampilkan status penyambungan WiFi, alamat IP lokal yang didapatkan, proses otentikasi ke broker MQTT, hingga log publikasi pesan secara terus-menerus ke outTopic.

Tips dan Catatan Penting Pengujian

  • Kenapa harus ada jeda pembacaan? Selalu beri jeda antar-pembacaan pada sensor DHT22 minimal lebih dari 2 detik (>2s) sesuai spesifikasi sensing period, agar data kelembapan dan suhu tidak mengalami eror.
  • Hindari instruksi awal: Peringatan penting, jangan beri perintah atau instruksi apa pun ke sensor DHT22 dalam 1 detik pertama setelah diberi daya untuk melewati fase unstable status.
  • Solusi troubleshooting: Jika pembacaan sinyal dari DHT22 selalu menghasilkan status HIGH, hal ini mengindikasikan koneksi fisik kurang baik atau kabel kendur. Periksa kembali sambungan kabel dan resistor pull-up kamu.

6. Kesimpulan

Mengembangkan tempat sampah pintar berbasis mikrokontroler ESP32, sensor DHT22, dan protokol MQTT memberikan pemahaman mendalam tentang bagaimana sistem IoT bekerja secara komprehensif. Mulai dari pembacaan kondisi internal wadah hingga mengeksekusi aktuator secara real-time, proyek ini merupakan pijakan awal yang sangat solid. Teruslah bereksperimen, kembangkan fitur-fitur baru, dan selamat berkarya di dunia IoT!

Bagikan ke

Bikin Tempat Sampah Pintar yang Bisa Terbuka Otomatis dan Mendeteksi Kondisi Penuh

Saat ini belum tersedia komentar.

Silahkan tulis komentar Anda

Bikin Tempat Sampah Pintar yang Bisa Terbuka Otomatis dan Mendeteksi Kondisi Penuh

Produk yang sangat tepat, pilihan bagus..!

Berhasil ditambahkan ke keranjang belanja
Lanjut Belanja
Checkout
Produk Quick Order

Pemesanan dapat langsung menghubungi kontak dibawah: