Elektronika & Robotika Dasar

Pertemuan 5

Sensor Suhu & Kelembaban

Peringatan keselamatan: Cek dulu tegangan kerja modul (3.3V atau 5V) sebelum memasang VCC - beberapa modul sensor suhu/kelembaban pihak ketiga tidak toleran terhadap kedua tegangan sekaligus, dan salah pasang bisa merusak sensor secara permanen.

Tujuan Pembelajaran

  • Memahami cara kerja modul sensor suhu & kelembaban.
  • Mampu memasang dan membaca data suhu & kelembaban dari sensor.
  • Mampu menggunakan library eksternal di Arduino IDE.

Penjelasan Konsep

Modul Suhu & Kelembaban

Modul ini tersedia di dalam 37-in-1 Sensor Kit. Kebanyakan modul suhu & kelembaban di kit sejenis ini kompatibel dengan chip DHT11, yang membaca suhu dan kelembaban udara sekaligus, lalu mengirim datanya lewat satu pin digital menggunakan protokol komunikasi khusus (bukan analog biasa).

Jika modul di kit kelasmu ternyata bertipe lain (misalnya modul suhu digital sederhana atau DS18B20), prinsipnya tetap sama - cek label/kode pada modul lalu sesuaikan nama library yang di-install.

Menggunakan library

Karena protokol komunikasinya khusus, kita menggunakan library (kode siap pakai) bernama "DHT sensor library" (by Adafruit) agar tidak perlu menulis protokol timing secara manual. Install lewat Sketch > Include Library > Manage Libraries, cari "DHT sensor library" (juga butuh library dependensi "Adafruit Unified Sensor").

Kenapa perlu delay antar pembacaan?

Sensor bertipe DHT11 butuh jeda minimal (sekitar 2 detik) antar pembacaan agar hasilnya akurat dan stabil.

Kesalahan umum

  • Membaca sensor lebih cepat dari 2 detik - hasil pembacaan bisa NaN (Not a Number) atau data lama yang tidak berubah, karena sensor belum sempat mengambil sampel baru.
  • Lupa memasang library dependensi ("Adafruit Unified Sensor") - sketch gagal compile dengan pesan error yang membingungkan pemula karena menyebut file header yang "hilang".
  • Salah menuliskan TIPE_SENSOR - jika modul sebenarnya bukan DHT11 tapi kode tetap memaksa DHT11, pembacaan bisa salah/tidak stabil meski wiring benar.
  • Tidak mengecek nilai isnan() - melewatkan pengecekan ini membuat program tetap memproses data yang sebenarnya gagal terbaca (nilai sampah), menghasilkan keputusan logika yang salah.
  • Memasang VCC ke tegangan yang salah - sebagian modul DHT11 dari kit pihak ketiga hanya toleran 5V atau justru 3.3V saja; cek label modul sebelum menyambungkan ke ESP32 (3.3V) atau Arduino Uno (5V).

Komponen yang Dibutuhkan

  • 1x Arduino Uno atau ESP32
  • 1x Modul Suhu & Kelembaban dari 37-in-1 Sensor Kit
  • Breadboard, kabel jumper

Diagram / Skema Pengkabelan

Modul Suhu & Kelembaban (3 pin):
  VCC  -> 5V (atau 3.3V, cek label modul)
  GND  -> GND
  DATA/OUT -> pin digital (mis. D4)

Peringatan: cek dulu tegangan kerja modul (3.3V atau 5V) - memasang tegangan yang salah ke VCC bisa merusak sensor. Sedangkan jika pin DATA salah sambung ke pin lain, sensor hanya tidak akan terbaca (aman, tinggal diperbaiki).

Contoh Kode Program

// Membaca suhu & kelembaban dari modul sensor
// Membutuhkan library "DHT sensor library" by Adafruit

#include <DHT.h>

#define PIN_SENSOR 4
#define TIPE_SENSOR DHT11 // sesuaikan jika modul kit ternyata tipe lain

DHT dht(PIN_SENSOR, TIPE_SENSOR);

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

void loop() {
  float kelembaban = dht.readHumidity();
  float suhu = dht.readTemperature();

  if (isnan(kelembaban) || isnan(suhu)) {
    Serial.println("Gagal membaca sensor!");
    return;
  }

  Serial.print("Suhu: ");
  Serial.print(suhu);
  Serial.print(" C | Kelembaban: ");
  Serial.print(kelembaban);
  Serial.println(" %");

  delay(2000); // jeda minimal antar pembacaan
}

Tugas / Latihan

  1. Catat suhu dan kelembaban ruangan kelas selama 5 menit (ambil data setiap 30 detik), buat tabel sederhana.
  2. Buat program yang menyalakan LED/buzzer sebagai peringatan jika suhu melebihi nilai tertentu (misalnya 30°C).
  3. (Tantangan) Buat program yang menghitung dan menampilkan suhu rata-rata dari 5 kali pembacaan terakhir (bukan hanya nilai sesaat), lalu bandingkan kestabilannya dengan menampilkan nilai mentah tanpa rata-rata.