Lewati ke konten
RazinSaid

Membaca Sensor Suhu DHT22 dengan ESP32

RS
Razin Said
5 menit baca

Kalau kamu baru masuk dunia IoT dan bingung mau mulai dari proyek apa, baca sensor suhu DHT22 pakai ESP32 itu pilihan yang pas banget. Modalnya murah, tapi kamu udah bisa mantau suhu dan kelembapan ruangan secara real-time. Nah, di sini kita jalan pelan-pelan dari nol: apa sih DHT22 itu, gimana nyambungin ke ESP32, kodenya seperti apa, sampai trik biar pembacaannya nggak sering error.

Kalau kamu belum kenal sama sekali sama board-nya, mending baca dulu pengenalan ESP32 untuk pemula biar lebih nyambung sama istilah-istilah yang bakal sering muncul di sini.

Kenalan Dulu sama Sensor DHT22

DHT22 (kadang ditulis AM2302) itu sensor digital yang bisa ngukur dua hal sekaligus: suhu sama kelembapan udara. Enaknya, dia ngirim data cuma lewat satu kabel sinyal aja, jadi hemat pin.

Spesifikasi singkatnya kira-kira begini:

  • Rentang suhu: -40 sampai 80 derajat Celsius, akurasi sekitar plus minus 0,5 derajat.
  • Rentang kelembapan: 0 sampai 100 persen RH, akurasi sekitar plus minus 2 sampai 5 persen.
  • Tegangan kerja: 3,3 sampai 5 volt, jadi cocok sama ESP32 yang pakai logika 3,3 volt.

Dibanding DHT11 yang lebih murah, DHT22 ini menang di akurasi dan rentangnya yang lebih lebar. Tapi ada minusnya juga: DHT22 agak lelet. Dia cuma sanggup ngasih data baru sekitar sekali tiap 2 detik. Jadi jangan dipaksa dibaca tiap milidetik, percuma.

Yang Perlu Kamu Siapin

Sebelum mulai coding, siapin dulu komponennya:

  • 1 board ESP32 (bebas sih, tapi DevKit V1 yang paling umum).
  • 1 sensor DHT22 (lebih enak ambil yang udah berbentuk modul, soalnya resistor pull-up-nya udah nempel).
  • Kabel jumper secukupnya.
  • Kabel USB buat upload program.

Kalau kamu kebetulan beli DHT22 versi sensor mentah (4 pin tanpa modul), kamu butuh tambahan resistor pull-up sekitar 10 kilo-ohm yang dipasang antara pin data sama pin VCC.

Cara Wiring DHT22 ke ESP32

Wiring-nya gampang kok. Di sini kita pakai GPIO4 sebagai pin data buat contoh:

  • Pin VCC sensor ke pin 3V3 di ESP32.
  • Pin GND sensor ke pin GND di ESP32.
  • Pin DATA (atau SIGNAL) sensor ke GPIO4.

Buat versi modul, biasanya cuma ada 3 pin: VCC (kadang ditulis +), DATA (atau OUT), sama GND (ditulis -). Tinggal cocokin aja, nggak ribet.

Satu tips: jangan pakai kabel yang kepanjangan (lebih dari 20 cm), soalnya sinyalnya bisa keganggu dan pembacaannya jadi sering gagal.

Nyiapin Library di Arduino IDE

Cara paling gampang tuh pakai library dari Adafruit. Buka Arduino IDE, masuk ke menu Tools terus Manage Libraries, lalu cari dan install dua ini:

  • "DHT sensor library" buatan Adafruit.
  • "Adafruit Unified Sensor" (ini dependensi yang wajib ikut, jangan dilewatin).

Pastikan juga board ESP32 udah kepasang di Board Manager. Kalau udah, kita siap nulis kode.

Kode buat Baca DHT22

Ini kode lengkap yang langsung bisa kamu pakai. Tinggal salin ke Arduino IDE, terus upload ke ESP32:

#include "DHT.h"

#define DHTPIN 4        // GPIO yang tersambung ke pin DATA
#define DHTTYPE DHT22   // Tipe sensor yang kita pakai

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  Serial.println("Mulai membaca DHT22...");
  dht.begin();
}

void loop() {
  // DHT22 butuh jeda minimal 2 detik antar pembacaan
  delay(2000);

  float kelembapan = dht.readHumidity();
  float suhu = dht.readTemperature(); // default dalam Celsius

  // Cek apakah pembacaan gagal
  if (isnan(kelembapan) || isnan(suhu)) {
    Serial.println("Gagal membaca dari sensor DHT22!");
    return;
  }

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

Begitu upload-nya kelar, buka Serial Monitor dan set baud rate-nya ke 115200. Nanti kamu bakal lihat nilai suhu sama kelembapan muncul tiap 2 detik.

Penjelasan Singkat Kodenya

  • dht.begin() itu buat nyalain komunikasi sama sensor.
  • readHumidity() dan readTemperature() tugasnya ngambil data terbaru.
  • isnan() ini pengecekan yang penting banget. NaN artinya "bukan angka", alias tanda kalau pembacaannya gagal. Tanpa cek ini, program kamu bisa nampilin nilai aneh-aneh.

Oh iya, kalau kamu mau suhunya dalam Fahrenheit, tinggal ubah jadi dht.readTemperature(true).

Kenapa Pembacaannya Sering Gagal?

Banyak yang baru mulai suka bingung kenapa hasilnya kadang "Gagal membaca". Ini beberapa biang keladi yang paling sering:

  • Jedanya kecepetan. DHT22 nggak suka dibaca lebih sering dari 2 detik. Selalu kasih delay(2000) atau lebih.
  • Pin-nya salah. Pastikan nomor GPIO di kode sama persis sama pin fisik yang kamu sambung.
  • Nggak ada pull-up. Buat sensor mentah, tanpa resistor 10k pembacaannya bakal kacau.
  • Catu dayanya kurang stabil. Pas ESP32 sekalian nyalain WiFi, arusnya bisa naik turun. Makanya pakai sumber daya yang memadai.

Ngirim Datanya ke Mana Aja

Setelah bisa baca sensor, langkah selanjutnya biasanya ngirim data biar bisa dipantau dari jauh. Yang lagi populer itu protokol MQTT, soalnya ringan dan pas banget buat perangkat kecil. Kalau kamu tertarik, lanjut aja baca cara kerja MQTT untuk IoT buat paham konsep publish sama subscribe.

FAQ

DHT22 bisa pakai pin selain GPIO4 nggak? Bisa banget. Hampir semua GPIO ESP32 yang lagi nganggur boleh dipakai. Cuma hindarin pin khusus kayak GPIO0, GPIO2, dan GPIO15 yang dipakai pas boot. Tinggal ganti angka di #define DHTPIN.

Berapa jarak maksimal kabel ke sensor? Buat kabel pendek di breadboard sih aman-aman aja. Tapi kalau butuh lebih panjang dari 1 meter, pakai kabel yang bagus dan kurangin frekuensi pembacaannya biar tetap stabil.

Apa bedanya DHT22 sama sensor DS18B20? DS18B20 cuma ngukur suhu (nggak ada kelembapan) tapi lebih akurat dan tahan air. Ya tinggal pilih aja sesuai kebutuhan proyekmu.

Penutup

Baca DHT22 pakai ESP32 itu sebenarnya gampang, asal kamu sabar sama jeda 2 detiknya dan rajin ngecek hasil pembacaan pakai isnan(). Satu tips praktis terakhir: pas sensor baru dinyalain, abaikan aja pembacaan pertamanya, soalnya kadang masih kosong. Kasih waktu satu siklus dulu, baru ambil datanya biar hasilnya lebih bisa dipercaya.

Bagikan: XWhatsAppFacebookLinkedIn

Artikel terkait