← Daftar materi Arduino

Bab 14 · Arduino Uno R3

Sensor Suhu dan Kelembapan DHT11 serta DHT22

Baca suhu dan kelembapan dengan library DHT, lengkap dengan pemasangan sensor dan penanganan pembacaan gagal.

Dua angka dari satu sensor

DHT11 dan DHT22 membaca suhu serta kelembapan relatif udara. Nilai 65% RH bukan berarti 65% isi ruangan adalah air; angka itu menyatakan kelembapan dibandingkan kondisi jenuh pada suhu saat pengukuran. DHT22 umumnya memiliki rentang dan ketelitian lebih baik, tetapi keduanya cocok dipelajari lewat alur program yang sama.

Periksa bentuk sensor

Untuk contoh ini gunakan modul DHT11 tiga pin yang mendukung suplai 5 V, Uno R3, dan jumper. Hubungkan VCC atau + ke 5V, GND atau − ke GND, dan DATA atau S ke pin 2. Urutan fisik kaki modul bisa berbeda, jadi baca labelnya.

Sensor lepas empat kaki berbeda dari modul tiga pin. Pada sensor DHT11/DHT22 standar, ketika kisi menghadap kita dan kaki mengarah ke bawah, urutannya VCC, DATA, NC, GND. NC tidak disambungkan. Pasang resistor pull-up 10 kΩ antara DATA dan VCC pada sensor lepas; modul biasanya sudah memilikinya. Cocokkan lagi dengan datasheet produk yang kamu pegang.

Pasang library

Buka Library Manager di Arduino IDE. Cari dan pasang DHT sensor library by Adafruit, lalu pasang Adafruit Unified Sensor jika belum ikut terpasang sebagai dependensi. Library menangani komunikasi sensor, sehingga kita cukup meminta nilai suhu dan kelembapan.

Program lengkap

#include <DHT.h>

const int PIN_DHT = 2;
#define DHTTYPE DHT11
DHT dht(PIN_DHT, DHTTYPE);

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

void loop() {
  delay(2000);
  float kelembapan = dht.readHumidity();
  float suhu = dht.readTemperature();

  if (isnan(kelembapan) || isnan(suhu)) {
    Serial.println("Sensor belum terbaca. Periksa kabel dan tipe DHT.");
    return;
  }

  Serial.print("Suhu: ");
  Serial.print(suhu, 1);
  Serial.print(" C | Kelembapan: ");
  Serial.print(kelembapan, 1);
  Serial.println(" % RH");
}

Untuk DHT22, ubah DHT11 pada baris #define menjadi DHT22. Buka Serial Monitor pada 9600 baud. Program memperbarui angka setiap sekitar dua detik. Jeda ini sengaja diberikan karena sensor DHT tidak cocok dibaca secepat tombol.

Mengapa perlu isnan?

Saat komunikasi gagal, library dapat memberikan NaN, artinya bukan angka yang valid. isnan memeriksa kondisi itu. Jangan mengubah kegagalan baca menjadi suhu 0 °C karena nol adalah suhu yang mungkin benar. Jika selalu gagal, cek tipe DHT, label pin, sambungan GND, dan resistor pull-up. Pesan DHT.h: No such file or directory berarti library belum ditemukan saat kompilasi.

Percobaan kecil

Catat bacaan di dua lokasi dalam ruangan. Beri sensor waktu menyesuaikan diri sebelum membandingkan. Hindari membasahi sensor atau mendekatkannya ke api. Tambahkan teks "Ruangan hangat" jika suhu valid melebihi 30 °C, lalu coba ambang lain yang sesuai kondisi ruang belajar.

Rujukan

Panduan DHT Adafruit memuat pemasangan library dan penggunaan sensornya.