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

Membuat Sistem Tata Udara Pintar dengan Sensor DHT22 dan Relay (Simulasi Arduino UNO di Wokwi)

⏱ 40 Menit Arduino August 2026 🔧

Pada tutorial ini, kita akan membuat sistem tata udara pintar — alat yang bisa mendeteksi ruangan yang terlalu panas atau lembap (pengap), lalu otomatis menyalakan “kipas” (disimulasikan dengan relay dan LED) tanpa perlu dinyalakan manual. Proyek ini memakai Arduino UNO, sensor DHT22, dan modul Relay, semuanya disimulasikan di Wokwi.

Apa yang Akan Kita Pelajari?

Bagian Komponen Fungsi
Board Arduino UNO Pusat kendali sistem
Input DHT22 Membaca suhu dan kelembapan ruangan sebagai data utama
Output Relay + LED Relay bekerja seperti saklar elektronik, LED sebagai simulasi beban (misalnya kipas)
Library DHT sensor library Membantu membaca data dari sensor DHT22

Deskripsi Proyek

Proyek ini mensimulasikan alat otomatis untuk membaca kondisi udara ruangan dan mengaktifkan relay saat dibutuhkan. Arduino UNO membaca suhu dan kelembapan dari sensor DHT22. Data tersebut dipakai untuk menentukan apakah ruangan masih nyaman atau sudah melewati batas. Ketika suhu mencapai 30°C atau kelembapan mencapai 70%, Arduino akan mengaktifkan relay, sehingga indikator beban (LED) menyala — seolah-olah kipas atau AC otomatis dinyalakan.

Alur Sistem Secara Garis Besar

  1. DHT22 membaca suhu & kelembapan.
  2. Arduino memproses data dan menjalankan logika kontrol.
  3. Relay bertindak sebagai saklar elektronik.
  4. LED menjadi simulasi beban (mewakili kipas/AC sungguhan).

Manfaat Praktik Ini

  • Memahami hubungan antara sensor DHT22, pembacaan data, dan pengambilan keputusan otomatis oleh mikrokontroler.
  • Mengenal relay sebagai saklar elektronik yang memisahkan sinyal kontrol kecil (dari Arduino) dengan jalur beban listrik yang lebih besar.
  • Melatih logika OR (“atau”) — relay aktif jika suhu panas atau kelembapan tinggi (tidak harus keduanya sekaligus).
  • Membiasakan membaca status alat lewat Serial Monitor saat simulasi berjalan.
  • Menjadi dasar untuk mengembangkan alat kontrol kipas, ventilasi, ruang penyimpanan, kandang hewan, atau rumah kaca (greenhouse).

Langkah 1: Menyiapkan Komponen

Komponen Fungsi
Arduino UNO Papan utama yang menjalankan program dan membaca sensor.
DHT22 Sensor suhu dan kelembapan, dihubungkan ke pin digital 2.
Relay Module Saklar elektronik yang dikendalikan dari pin digital 8.
LED + Resistor Simulasi beban yang menyala saat relay aktif.
Breadboard Membagi jalur 5V dan GND untuk semua komponen.
💡 Apa itu Relay, dan kenapa dibutuhkan?

Relay adalah saklar elektronik yang bisa dinyalakan/dimatikan menggunakan sinyal listrik kecil dari Arduino, tapi bisa mengontrol arus listrik yang jauh lebih besar (seperti untuk menyalakan kipas, lampu ruangan, atau AC). Bayangkan relay sebagai “tangan robot” yang menekan saklar besar untuk kita, di mana Arduino cukup memberi perintah “tekan” atau “lepas” lewat sinyal kecil, tanpa Arduino harus menahan arus besar itu secara langsung (yang bisa merusak Arduino kalau dilakukan langsung).

Catatan penting: pada praktik nyata dengan beban listrik besar, jalur tegangan tinggi harus ditangani sesuai standar keselamatan kelistrikan. Simulasi ini memakai LED sebagai beban yang aman untuk dipelajari di Wokwi.

Langkah 2: Memasang Library yang Dibutuhkan

Library yang perlu dipasang di Wokwi untuk proyek ini adalah DHT sensor library, dipakai untuk membaca data suhu dan kelembapan dari sensor DHT22.

Buka tab Library Manager di Wokwi, lalu pastikan DHT sensor library sudah muncul di daftar Installed Libraries. Library ini diperlukan karena kode program memanggil #include <DHT.h>.

Langkah 3: Merangkai Wiring — Sensor dan Jalur Daya

Gunakan breadboard untuk membagi jalur 5V dan GND, lalu hubungkan sensor dan relay sesuai pin berikut:

Komponen Tersambung ke Keterangan
Arduino 5V Breadboard (+) Jalur daya untuk DHT22 dan relay
Arduino GND Breadboard (−) Jalur ground bersama
DHT22 VCC Breadboard (+) Daya sensor
DHT22 GND Breadboard (−) Ground sensor
DHT22 SDA Pin digital 2 Jalur data suhu dan kelembapan

Langkah 4: Merangkai Wiring — Relay dan Beban (LED)

Relay punya dua “sisi” yang perlu dipahami: sisi kontrol (yang terhubung ke Arduino) dan sisi saklar (yang menyambungkan/memutuskan aliran listrik ke beban, dalam hal ini LED).

Pin Tersambung ke Keterangan
Relay VCC Breadboard (+) Daya modul relay
Relay GND Breadboard (−) Ground modul relay
Relay IN Pin digital 8 Perintah ON/OFF dari Arduino
Breadboard (+) Relay COM Sumber daya menuju saklar relay
Relay NO LED Anoda Jalur yang aktif saat relay menyala
LED Katoda Resistor → GND Jalur kembali ke ground
💡 Apa itu NO dan COM pada relay?

COM (Common) adalah jalur masuk sumber daya ke relay. NO singkatan dari Normally Open, artinya jalur ini secara default (kondisi normal) dalam keadaan terputus. Jalur COM ke NO baru tersambung ketika relay dalam kondisi aktif (dinyalakan Arduino) — sehingga LED indikator baru menyala saat kondisi panas atau pengap terdeteksi, dan tetap mati saat kondisi normal.

(Ada juga jalur NC/Normally Closed pada beberapa modul relay, yang bekerja kebalikannya — tapi di proyek ini kita hanya memakai jalur NO.)

Langkah 5: Memahami Konsep Kerja Program

Program membaca dua nilai dari sensor, lalu menentukan status relay berdasarkan dua batas berikut:

  • Suhu ≥ 30°C
  • Kelembapan ≥ 70%

Relay akan aktif jika salah satu dari kedua kondisi di atas terpenuhi (tidak harus keduanya sekaligus) — inilah yang disebut logika OR (“atau”).

Flowchart Program

  1. Baca DHT22 — membaca suhu dan kelembapan.
  2. Cek batas — apakah suhu ≥ 30°C ATAU kelembapan ≥ 70%?
  3. Jika YA — Relay HIGH (aktif), indikator menyala.
  4. Jika TIDAK — Relay LOW (nonaktif), indikator mati.

Langkah 6: Menulis Kode Program (sketch.ino)

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

#include <DHT.h>

// Menyiapkan Sensor
#define pinSensor 2
#define tipeSensor DHT22
DHT sensorSuhu(pinSensor, tipeSensor);

// Menyiapkan Saklar Relay
int pinRelay = 8;
float batasPanas = 30.0;   // Batas suhu
float batasLembap = 70.0;  // Batas kelembapan (pengap)

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

  pinMode(pinRelay, OUTPUT);
  digitalWrite(pinRelay, LOW);

  Serial.println("=== Sistem Tata Udara Pintar AKTIF ===");
}

void loop() {
  // 1. Baca Suhu DAN Kelembapan
  float suhu = sensorSuhu.readTemperature();
  float kelembapan = sensorSuhu.readHumidity();

  // Cek kalau sensor error
  if (isnan(suhu) || isnan(kelembapan)) {
    Serial.println("Gagal membaca sensor DHT!");
    return;
  }

  // Tampilkan di layar
  Serial.print("Suhu: ");
  Serial.print(suhu);
  Serial.print(" C | Kelembapan: ");
  Serial.print(kelembapan);
  Serial.println(" %");

  // 2. Logika Cerdas (Kalau Panas ATAU Pengap, kipas nyala)
  if (suhu >= batasPanas || kelembapan >= batasLembap) {
    Serial.println("-> PANAS / PENGAP! Kipas ON [*CEKLEK*]");
    digitalWrite(pinRelay, HIGH);
  } else {
    Serial.println("-> Udara Nyaman. Kipas OFF");
    digitalWrite(pinRelay, LOW);
  }

  Serial.println("--------------------------------");
  delay(2000); // Jeda 2 detik
}

Langkah 7: Memahami Setiap Bagian Kode

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

📦 Bagian Pemanggilan Library dan Pengaturan Sensor
  • #include <DHT.h> — memanggil library untuk membaca sensor DHT.
  • #define pinSensor 2 — memberi tahu program bahwa sensor DHT22 terhubung ke pin digital 2.
  • #define tipeSensor DHT22 — memberi tahu program tipe sensor yang dipakai adalah DHT22.
  • DHT sensorSuhu(pinSensor, tipeSensor); — membuat objek (perwakilan) bernama sensorSuhu yang mewakili sensor DHT22 di dalam program.
⚙️ Bagian Pengaturan Relay dan Batas Nilai
  • int pinRelay = 8; — variabel yang menyimpan nomor pin tempat relay terhubung, yaitu pin digital 8.
  • float batasPanas = 30.0; — variabel bertipe float (angka desimal) yang menyimpan batas suhu dianggap “panas”, yaitu 30.0 derajat Celcius. Kalau kamu ingin ambang batasnya berbeda, cukup ubah angka ini.
  • float batasLembap = 70.0; — sama seperti di atas, tapi untuk batas kelembapan dianggap “pengap”, yaitu 70%.

Kenapa disimpan sebagai variabel, bukan langsung ditulis angkanya di dalam kode logika? Supaya lebih mudah diubah nanti. Kalau batas suhu ingin diganti dari 30°C menjadi 28°C misalnya, kita cukup ubah satu baris ini saja, tanpa perlu mencari-cari angka 30 di banyak tempat dalam kode.

🚀 Bagian setup() — Dijalankan Sekali di Awal
  • Serial.begin(9600); — mengaktifkan komunikasi Serial Monitor.
  • sensorSuhu.begin(); — mengaktifkan/memulai komunikasi dengan sensor DHT22.
  • pinMode(pinRelay, OUTPUT); — mengatur pin relay sebagai output, karena Arduino akan mengirim perintah nyala/mati ke relay.
  • digitalWrite(pinRelay, LOW); — memastikan relay dalam kondisi mati (LOW) di awal program, sebelum ada pembacaan suhu sama sekali.
  • Serial.println("=== Sistem Tata Udara Pintar AKTIF ==="); — menampilkan pesan pembuka di Serial Monitor.
📏 Bagian loop() — Membaca Sensor dan Mengecek Error
  • float suhu = sensorSuhu.readTemperature(); — membaca nilai suhu dari sensor, disimpan ke variabel suhu.
  • float kelembapan = sensorSuhu.readHumidity(); — membaca nilai kelembapan, disimpan ke variabel kelembapan.
  • if (isnan(suhu) || isnan(kelembapan)) { ... } — mengecek apakah salah satu pembacaan gagal (bukan angka yang valid). isnan() berarti “is not a number”. Tanda || berarti “atau” — jadi kondisi ini benar kalau suhu gagal terbaca atau kelembapan gagal terbaca. Kalau salah satunya gagal, program menampilkan pesan error dan return; menghentikan sisa kode di bawahnya untuk sementara (loop akan mengulang dari awal lagi).
  • Serial.print(...) beberapa baris — menampilkan nilai suhu dan kelembapan yang baru dibaca ke Serial Monitor, supaya kita bisa memantau datanya secara langsung.
🚦 Bagian loop() — Logika Kontrol Relay (Inti Program)
  • if (suhu >= batasPanas || kelembapan >= batasLembap) { ... } — ini adalah inti logika dari seluruh program. Tanda || berarti “atau” (operator OR). Kondisi ini bernilai benar jika suhu sudah mencapai atau melebihi 30°C, ATAU kelembapan sudah mencapai atau melebihi 70% — jadi cukup salah satu saja yang terpenuhi, tidak perlu keduanya sekaligus.
  • Kalau kondisi tadi benar (panas atau pengap): tampilkan pesan peringatan, lalu digitalWrite(pinRelay, HIGH); menyalakan relay (yang akan menyalakan LED indikator lewat jalur NO-COM).
  • Kalau kondisi tadi salah (udara masih nyaman, blok else): tampilkan pesan “Udara Nyaman”, lalu digitalWrite(pinRelay, LOW); mematikan relay kembali.
  • delay(2000); — menunggu 2 detik sebelum loop() mengulang dan membaca sensor lagi.

Kenapa pakai OR (||), bukan AND (&&)? Karena kita ingin relay aktif kalau salah satu saja kondisi bermasalah — ruangan tetap perlu “kipas” dinyalakan meskipun cuma pengap tapi tidak panas, atau cuma panas tapi tidak pengap. Kalau pakai AND, relay baru aktif jika kedua-duanya terjadi bersamaan, yang tentu kurang responsif untuk sistem keamanan udara seperti ini.

Langkah 8: Menjalankan dan Menguji Simulasi

  1. Jalankan simulasi dengan tombol Play di Wokwi.
  2. Buka Serial Monitor untuk melihat nilai suhu dan kelembapan yang dibaca sensor secara langsung.
  3. Klik komponen sensor DHT22, lalu ubah slider Temperature untuk menguji batas panas.
  4. Naikkan suhu sampai 30°C atau lebih — relay akan aktif dan indikator beban (LED) menyala.
  5. Turunkan suhu kembali ke normal, lalu naikkan slider Humidity sampai 70% atau lebih — relay akan aktif kembali, membuktikan logika OR benar-benar bekerja (relay aktif walau hanya salah satu kondisi yang terpenuhi).
  6. Kembalikan suhu dan kelembapan ke nilai normal — relay mati dan indikator beban padam.

Contoh Output yang Diharapkan di Serial Monitor

Suhu: 31.00 C | Kelembapan: 45.00 %
-> PANAS / PENGAP! Kipas ON [*CEKLEK*]
--------------------------------
Kondisi Penjelasan Status Relay
Normal Suhu di bawah 30°C dan kelembapan di bawah 70%. LOW (mati)
Panas Suhu 30°C atau lebih. HIGH (aktif)
Pengap Kelembapan 70% atau lebih. HIGH (aktif)

Langkah 9: Mengatasi Masalah Umum (Troubleshooting)

Masalah Solusi
Library error saat compile Pastikan DHT sensor library sudah terpasang di Library Manager Wokwi.
Serial Monitor menampilkan “gagal membaca sensor” Cek pin data DHT22 ke pin 2, jalur VCC ke 5V, dan GND ke ground.
Relay tidak aktif saat suhu tinggi Pastikan pin IN relay menuju pin 8, dan kode menggunakan digitalWrite(pinRelay, HIGH); dengan benar.
Indikator (LED) tidak menyala Cek jalur COM, NO, anoda LED, resistor, dan ground breadboard satu per satu.
Nilai suhu berubah tapi output tidak berubah Pastikan batas suhu dan kelembapan di kode masih sesuai (30.0 dan 70.0) seperti pada sketch.
Kabel terlihat benar tapi tetap gagal Jalankan ulang simulasi, lalu periksa kembali semua label pin komponen di Wokwi satu per satu.
⚠️ Catatan Keselamatan (klik untuk baca)

Relay sering digunakan untuk mengontrol beban listrik besar di dunia nyata. Pada penerapan sungguhan, pemilihan rating relay (batas maksimal arus/tegangan yang boleh dilewatkan), isolasi kabel yang baik, box pelindung, dan mengikuti standar instalasi listrik yang berlaku harus benar-benar diperhatikan. Untuk belajar dan bereksperimen, simulasi dengan LED seperti di tutorial ini jauh lebih aman.

Langkah 10: Ide Pengembangan Lebih Lanjut

Setelah simulasi dasar berhasil, sistem ini bisa dikembangkan menjadi alat monitoring udara yang lebih nyata:

  • Kontrol kipas otomatis — relay mengendalikan kipas DC/AC sungguhan sesuai ambang batas suhu dan kelembapan.
  • Ventilasi greenhouse — sistem menyalakan exhaust fan (kipas pembuangan udara) ketika udara terlalu panas atau lembap.
  • Ruang penyimpanan — membantu menjaga ruang barang agar tidak terlalu lembap (mencegah jamur/karat).
  • Alarm lingkungan — menambahkan indikator tambahan (misalnya buzzer) untuk memberi peringatan suara saat batas terlampaui.
  • Data logging — suhu dan kelembapan dicatat ke komputer atau modul penyimpanan, supaya riwayatnya bisa dianalisis nanti.
  • Pengaturan batas yang fleksibel — nilai 30°C dan 70% bisa dibuat sebagai parameter yang mudah diubah, misalnya lewat tombol atau aplikasi, tanpa perlu mengedit kode program setiap kali.

Checklist Sebelum Dianggap Selesai

  • ☐ Wiring sudah sesuai dengan tabel pin.
  • ☐ Library DHT sensor sudah terpasang.
  • ☐ Serial Monitor menampilkan data suhu & kelembapan.
  • ☐ Slider DHT22 di Wokwi bisa diubah dan datanya ikut berubah.
  • ☐ Relay menyala (ON) saat batas suhu/kelembapan terlampaui.
  • ☐ Relay mati (OFF) saat kondisi udara kembali normal.

Rangkuman

  • Proyek ini menggabungkan sensor (DHT22), logika kontrol (Arduino), dan saklar elektronik (Relay) menjadi satu sistem otomatis untuk menjaga kondisi udara ruangan.
  • Relay memungkinkan Arduino mengontrol beban listrik yang lebih besar dengan aman, lewat sinyal kontrol kecil.
  • Operator OR (||) memungkinkan sebuah aksi terpicu oleh salah satu dari beberapa kondisi, cocok dipakai saat kita ingin sistem tetap merespons meskipun hanya satu masalah yang terjadi (panas saja, atau lembap saja).
  • Menyimpan nilai ambang batas (seperti suhu dan kelembapan) sebagai variabel terpisah membuat kode lebih mudah diubah dan dikembangkan di kemudian hari.
  • Prinsip kerja ini adalah dasar dari banyak sistem otomatisasi rumah pintar (smart home) dan pertanian pintar (smart farming) yang sesungguhnya.

Coba Simulasi di Wokwi

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