Tutorial Arduino: Menguasai Suhu & Kelembaban dengan Sensor DHT11 & DHT22
Dalam tutorial Arduino ini, kita akan mempelajari cara menggunakan sensor DHT11 atau DHT22 untuk mengukur suhu dan kelembaban dengan papan Arduino. Anda dapat menonton video berikut atau membaca tutorial tertulis di bawah ini untuk detail lebih lanjut.
Ringkasan
Sensor ini sangat populer di kalangan hobiis elektronika karena harganya sangat murah namun tetap memberikan performa yang baik. Berikut adalah spesifikasi utama dan perbedaan antara kedua sensor ini:
DHT22 adalah versi yang lebih mahal yang tentu memiliki spesifikasi yang lebih baik. Rentang pengukuran suhunya dari -40 hingga +125 derajat Celsius dengan akurasi ±0.5 derajat, sementara rentang suhu DHT11 adalah dari 0 hingga 50 derajat Celsius dengan akurasi ±2 derajat. Selain itu, sensor DHT22 memiliki rentang pengukuran kelembaban yang lebih baik, dari 0 hingga 100% dengan akurasi 2-5%, sementara rentang kelembaban DHT11 adalah dari 20 hingga 80% dengan akurasi 5%.
Ada dua spesifikasi di mana DHT11 lebih unggul dibandingkan DHT22. Pertama adalah tingkat sampling yang untuk DHT11 adalah 1Hz atau satu pembacaan setiap detik, sementara tingkat sampling DHT22 adalah 0,5Hz atau satu pembacaan setiap dua detik. Selain itu, DHT11 memiliki ukuran badan yang lebih kecil. Tegangan operasi untuk kedua sensor adalah dari 3 hingga 5 volt, sedangkan arus maksimum yang digunakan saat pengukuran adalah 2,5mA.
Anda dapat mendapatkan komponen ini dari salah satu situs di bawah ini:
Sensor DHT11……………………………..
Sensor DHT22…………………………….
Papan Arduino ……………………………
Breadboard dan Kabel Jumper ………
Prinsip Kerja DHT11 / DHT22
Baiklah, sekarang mari kita lihat bagaimana sensor ini sebenarnya bekerja. Mereka terdiri dari komponen pengindera kelembaban, sensor suhu NTC (atau termistor) dan IC di bagian belakang sensor.
Untuk mengukur kelembaban, mereka menggunakan komponen pengindera kelembaban yang memiliki dua elektroda dengan substrat yang menahan kelembaban di antaranya. Jadi, seiring dengan perubahan kelembaban, konduktivitas substrat berubah atau resistensi di antara elektroda ini berubah. Perubahan resistensi ini diukur dan diproses oleh IC yang membuatnya siap untuk dibaca oleh mikrokontroler.
Di sisi lain, untuk mengukur suhu, sensor ini menggunakan sensor suhu NTC atau termistor.
Sebuah termistor sebenarnya adalah resistor variabel yang mengubah resistensinya seiring dengan perubahan suhu. Sensor ini dibuat dengan sintering bahan semikonduktor seperti keramik atau polimer untuk memberikan perubahan resistensi yang lebih besar dengan hanya perubahan suhu yang kecil.
Istilah "NTC" berarti "Negative Temperature Coefficient", yang berarti resistensi menurun seiring dengan peningkatan suhu.
Skema Rangkaian
Sensor DHTxx memiliki empat pin, VCC, GND, pin data dan pin yang tidak terhubung yang tidak berguna. Resistor pull-up dari 5K hingga 10K Ohm diperlukan untuk menjaga garis data tetap tinggi dan untuk mengaktifkan komunikasi antara sensor dan Papan Arduino. Ada beberapa versi dari sensor ini yang datang dengan papan breakout dengan resistor pull-up bawaan dan mereka hanya memiliki 3 pin.
Sensor DHTXX memiliki protokol kabel tunggal mereka sendiri yang digunakan untuk mentransfer data. Protokol ini memerlukan waktu yang tepat dan diagram waktu untuk mendapatkan data dari sensor dapat ditemukan dalam datasheet sensor. Namun, kita tidak perlu terlalu khawatir tentang diagram waktu ini karena kita akan menggunakan pustaka DHT yang mengurus semuanya.
Tutorial terkait: Pelajari cara membuat Stasiun Cuaca Nirkabel berbasis Arduino
Kode Sumber
Pertama, kita perlu menyertakan pustaka DHT yang dapat ditemukan dari situs resmi Arduino, lalu menentukan nomor pin tempat sensor kita terhubung dan membuat objek DHT. Di bagian setup, kita perlu memulai komunikasi serial karena kita akan menggunakan serial monitor untuk mencetak hasilnya. Menggunakan fungsi read22(), kita akan membaca data dari sensor dan memasukkan nilai suhu dan kelembaban ke dalam variabel t dan h. Jika Anda menggunakan sensor DHT11, Anda perlu menggunakan fungsi read11(). Pada akhirnya, kita akan mencetak nilai suhu dan kelembaban pada serial monitor.
/* DHT11/ DHT22 Sensor Temperature and Humidity Tutorial * Program made by Dejan Nedelkovski, * www.HowToMechatronics.com */ /* * You can find the DHT Library from Arduino official website * https://playground.arduino.cc/Main/DHTLib */ #include <dht.h> #define dataPin 8 // Defines pin number to which the sensor is connected dht DHT; // Creats a DHT object void setup() { Serial.begin(9600); } void loop() { int readData = DHT.read22(dataPin); // Reads the data from the sensor float t = DHT.temperature; // Gets the values of the temperature float h = DHT.humidity; // Gets the values of the humidity // Printing the results on the serial monitor Serial.print("Temperature = "); Serial.print(t); Serial.print(" *C "); Serial.print(" Humidity = "); Serial.print(h); Serial.println(" % "); delay(2000); // Delays 2 secods, as the DHT22 sampling rate is 0.5Hz }Code language: Arduino (arduino)
Setelah kita mengunggah kode ini ke papan Arduino, hasil suhu dan kelembaban dari sensor dapat dilihat pada Serial monitor.
Saya juga telah membuat contoh di mana saya menampilkan hasilnya pada LCD. Berikut adalah kode sumber dari contoh tersebut:
/* DHT11/ DHT22 Sensor Temperature and Humidity Tutorial * Program made by Dejan Nedelkovski, * www.HowToMechatronics.com */ /* * You can find the DHT Library from Arduino official website * https://playground.arduino.cc/Main/DHTLib */ #include <LiquidCrystal.h> // includes the LiquidCrystal Library #include <dht.h> #define dataPin 8 LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7) dht DHT; void setup() { lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display } void loop() { int readData = DHT.read22(dataPin); float t = DHT.temperature; float h = DHT.humidity; lcd.setCursor(0,0); // Sets the location at which subsequent text written to the LCD will be displayed lcd.print("Temp.: "); // Prints string "Temp." on the LCD lcd.print(t); // Prints the temperature value from the sensor lcd.print(" C"); lcd.setCursor(0,1); lcd.print("Humi.: "); lcd.print(h); lcd.print(" %"); delay(2000); }Code language: Arduino (arduino)
Jangan ragu untuk bertanya di bagian komentar di bawah ini.