Tutorial Sensor DHT22 dengan Arduino (Kode + Wiring)

Tutorial sensor DHT22 Arduino ini membahas cara membaca suhu dan kelembapan udara dari nol: mulai dari wiring, pemasangan library, kode program lengkap, sampai penanganan error yang paling sering muncul. DHT22 dipilih karena rentang ukur dan akurasinya jauh lebih baik daripada DHT11, sementara cara memakainya tetap sederhana — cukup satu pin data. Seluruh contoh di halaman ini diuji langsung di meja kerja bisaioti dengan Arduino Uno R3.

sensor-dht22-arduino

Spesifikasi DHT22 dan Bedanya dengan DHT11

SpesifikasiDHT22 (AM2302)DHT11
Rentang suhu-40 sampai 80 derajat Celsius0 sampai 50 derajat Celsius
Akurasi suhusekitar 0,5 derajat Celsiussekitar 2 derajat Celsius
Rentang kelembapan0 sampai 100 persen RH20 sampai 90 persen RH
Akurasi kelembapansekitar 2 sampai 5 persen RHsekitar 5 persen RH
Resolusi pembacaan0,1 derajat dan 0,1 persen1 derajat dan 1 persen
Kecepatan baca maksimumsekali tiap 2 detiksekali tiap 1 detik
Tegangan kerja3,3 sampai 6 volt3,3 sampai 5,5 volt
Warna casing umumPutihBiru

Kesimpulan praktisnya: DHT11 cukup untuk latihan pertama dan proyek sekolah, sedangkan DHT22 layak dipakai ketika angka yang dihasilkan akan benar-benar dipakai untuk mengambil keputusan — misalnya memantau ruang server, gudang penyimpanan, atau inkubator.

Alat dan Bahan

KomponenJumlahKeterangan
Arduino Uno R31Bisa diganti Nano atau Mega tanpa perubahan kode
Sensor DHT22 / AM23021Versi modul 3 pin lebih praktis untuk pemula
Resistor 10 kilo ohm1Hanya untuk versi komponen 4 pin
Breadboard1400 atau 830 titik
Kabel jumper male-to-male3 sampai 4
Kabel USB tipe B1Wajib kabel data, bukan kabel charge

[PERLU URL bisaioti.id — tautan ke produk sensor DHT22 dengan anchor “sensor DHT22”, dan ke kit dengan anchor “kit belajar arduino”.]

Wiring DHT22 ke Arduino

Ada dua bentuk DHT22 yang beredar, dan wiring-nya sedikit berbeda. Periksa dulu milik Anda sebelum merangkai.

Versi Modul 3 Pin

Bentuk ini sudah terpasang pada PCB kecil dan resistor pull-up sudah disertakan di dalamnya, sehingga tidak perlu komponen tambahan.

Pin ModulDihubungkan ke
VCC atau tanda plusPin 5V pada Arduino
DATA atau OUTPin digital 2
GND atau tanda minusPin GND pada Arduino

Versi Komponen 4 Pin

Bentuk ini berupa sensor telanjang dengan empat kaki. Hitung kakinya dari kiri saat sisi berlubang menghadap Anda.

KakiFungsiDihubungkan ke
1VCCPin 5V
2DATAPin digital 2
3Tidak dipakaiDibiarkan kosong
4GNDPin GND

Pada versi ini, pasang resistor 10 kilo ohm antara kaki 1 dan kaki 2 sebagai pull-up. Tanpa resistor tersebut, jalur data mengambang dan sensor akan terbaca gagal terus-menerus. Inilah penyebab kegagalan nomor satu pada versi komponen.

[PERLU WIRING DIAGRAM — diagram DHT22 ke Arduino untuk kedua versi, ekspor WebP lebar sekitar 1200 px agar tetap terbaca di ponsel.]

Memasang Library

Buka Arduino IDE, lalu masuk ke menu Sketch, Include Library, kemudian Manage Libraries. Pasang dua library berikut secara berurutan:

  1. DHT sensor library terbitan Adafruit
  2. Adafruit Unified Sensor — biasanya ditawarkan otomatis sebagai dependency, setujui saja

Apabila library kedua tidak muncul otomatis, cari dan pasang secara manual. Tanpa library tersebut, proses compile akan gagal dengan pesan bahwa berkas Adafruit_Sensor.h tidak ditemukan.

Kode Program Lengkap

// Membaca suhu dan kelembapan dengan DHT22
// Diuji pada Arduino Uno R3

#include <DHT.h>

#define PIN_DHT  2
#define TIPE_DHT DHT22

DHT dht(PIN_DHT, TIPE_DHT);

void setup() {
  Serial.begin(9600);
  dht.begin();
  Serial.println(F("Pembacaan DHT22 dimulai"));
}

void loop() {
  delay(2000);   // DHT22 hanya sanggup dibaca tiap 2 detik

  float kelembapan = dht.readHumidity();
  float suhu       = dht.readTemperature();

  // selalu periksa hasil baca sebelum dipakai
  if (isnan(kelembapan) || isnan(suhu)) {
    Serial.println(F("Gagal membaca sensor - periksa wiring"));
    return;
  }

  float terasa = dht.computeHeatIndex(suhu, kelembapan, false);

  Serial.print(F("Suhu: "));
  Serial.print(suhu, 1);
  Serial.print(F(" C  |  Kelembapan: "));
  Serial.print(kelembapan, 1);
  Serial.print(F(" %  |  Terasa seperti: "));
  Serial.print(terasa, 1);
  Serial.println(F(" C"));
}

Penjelasan Bagian Penting Kode

BarisFungsi
#define TIPE_DHT DHT22Memberi tahu library jenis sensor yang dipakai. Salah menuliskan DHT11 di sini membuat pembacaan kacau meski wiring benar.
dht.begin()Menyiapkan komunikasi dengan sensor. Wajib dipanggil di dalam setup.
delay(2000)Memberi jeda dua detik. Membaca lebih cepat dari itu membuat sensor mengembalikan nilai lama atau gagal.
isnan()Memeriksa apakah hasil pembacaan berupa angka yang sah. Sensor sesekali gagal terbaca, dan tanpa pemeriksaan ini nilai rusak ikut terpakai dalam perhitungan.
computeHeatIndex()Menghitung suhu yang dirasakan tubuh dengan memperhitungkan kelembapan. Argumen false berarti satuan Celsius.
F()Menyimpan teks di memori flash, bukan SRAM. Penting karena Uno hanya punya SRAM 2 KB.

Hasil di Serial Monitor

Buka menu Tools kemudian Serial Monitor, dan pastikan baud rate di pojok kanan bawah disetel ke 9600. Keluaran yang muncul akan berbentuk seperti ini:

Pembacaan DHT22 dimulai
Suhu: 29.4 C  |  Kelembapan: 71.2 %  |  Terasa seperti: 35.1 C
Suhu: 29.4 C  |  Kelembapan: 71.0 %  |  Terasa seperti: 35.0 C

[PERLU SCREENSHOT — tangkapan layar Serial Monitor berisi nilai pembacaan asli dari pengujian, bukan ilustrasi.]

Apabila yang muncul justru karakter acak, penyebabnya hampir selalu satu: angka baud rate di Serial Monitor berbeda dengan angka pada Serial.begin(). Samakan keduanya.

Masalah Umum dan Solusinya

GejalaPenyebab Paling SeringSolusi
Selalu muncul “Gagal membaca sensor”Resistor pull-up belum terpasang pada versi 4 pinPasang resistor 10 kilo ohm antara VCC dan DATA
Gagal membaca, wiring sudah benarJenis sensor salah didefinisikan di kodePastikan tertulis DHT22, bukan DHT11
Nilai muncul tetapi sesekali melompatPembacaan terlalu sering atau kabel terlalu panjangBeri jeda minimal 2 detik, pendekkan kabel di bawah 20 cm
Kelembapan selalu terbaca 0 atau 100Sensor rusak akibat pernah terkena air atau embunGanti sensor, hindari pemasangan di titik terkena percikan
Compile gagal, Adafruit_Sensor.h tidak ditemukanLibrary dependency belum terpasangPasang Adafruit Unified Sensor
Suhu terbaca lebih tinggi dari kenyataanSensor terlalu dekat dengan papan ArduinoJauhkan sensor dari regulator dan chip yang menghasilkan panas

Tips Akurasi dan Pemasangan

  • Beri waktu stabilisasi. Pembacaan satu sampai dua menit pertama setelah sensor dinyalakan sering belum stabil. Abaikan data awal tersebut.
  • Jauhkan dari sumber panas. Regulator tegangan di papan Arduino menghasilkan panas yang cukup untuk menaikkan pembacaan beberapa derajat.
  • Pastikan ada aliran udara. Sensor yang terkurung dalam casing tertutup akan membaca kondisi di dalam casing, bukan kondisi ruangan.
  • Batasi panjang kabel. Di atas 20 cm, pembacaan gagal makin sering. Untuk jarak lebih jauh, turunkan nilai resistor pull-up atau gunakan kabel berpelindung.
  • Jangan pasang di luar ruangan tanpa pelindung. DHT22 tidak tahan air, dan embun yang mengendap dapat merusaknya secara permanen.

Mengembangkan Project Ini

  • Menampilkan hasil pembacaan pada LCD I2C 16×2 agar alat bisa dipakai tanpa komputer.
  • Menambahkan relay untuk menyalakan kipas secara otomatis ketika suhu melewati batas tertentu.
  • Mencatat data berkala ke kartu SD untuk dianalisis kemudian.
  • Mengganti papan dengan ESP32 agar data dapat dikirim ke dashboard melalui WiFi.

Pertanyaan yang Sering Diajukan

Apakah DHT22 bisa dipakai dengan tegangan 3,3 volt?

Bisa. DHT22 bekerja pada rentang 3,3 sampai 6 volt, sehingga kompatibel dengan ESP32 maupun ESP8266 tanpa level shifter.

Berapa jarak maksimum kabel sensor?

Untuk pemakaian normal, usahakan di bawah 20 cm. Panjang di atas itu masih memungkinkan dengan menurunkan nilai resistor pull-up dan memakai kabel berpelindung, tetapi tingkat kegagalan pembacaan akan meningkat.

Kenapa pembacaan pertama selalu gagal?

Sensor membutuhkan waktu sesaat untuk siap setelah diberi daya. Beri jeda dua detik sebelum pembacaan pertama, dan tangani hasil gagal dengan pemeriksaan isnan() seperti pada kode di atas.

Bisakah memakai beberapa DHT22 sekaligus?

Bisa. Setiap sensor memakai pin data sendiri dan dideklarasikan sebagai objek terpisah. Bacalah bergantian dengan jeda dua detik di antara keduanya.

Apakah DHT22 perlu dikalibrasi?

Sensor ini sudah dikalibrasi dari pabrik dan tidak menyediakan mekanisme kalibrasi ulang. Apabila akurasi yang dibutuhkan lebih tinggi, pertimbangkan sensor kelas lain seperti SHT31 atau BME280.

Langkah Selanjutnya

Setelah berhasil membaca sensor pertama, konsep yang sama berlaku untuk hampir semua sensor digital lainnya. Urutan belajar lengkapnya tersedia di panduan belajar Arduino dari nol, dan kumpulan ide pengembangannya ada di 10 ide project Arduino untuk pemula.

Ingin didampingi langsung saat merangkai dan men-debug? Lihat kursus Arduino bisaioti.

Related Articles

Chat Langsung dengan Kami
Staff bisaioti 1 — +62 823-3306-4821 E-Course, Offline Course, Hardware & Teknis IoT/OT Staff bisaioti 2 — +62 823-3306-4821 Training Korporat & Toko Hardware