Sensor DHT11 dan Implementasinya dengan Arduino

Sekarang kita akan membahas sensor dht11 yang digunakan untuk pengukuran suhu dan kelembaban. Yang mana sebelumnya kita telah membahas tentang macam-macam sensor dan Sensor Ultrasonik HC SR04.

Di pasaran saat ini, sensor dht terdiri dari dua jenis, jenis pertama adalah dht11 dan yang kedua adalah dht22. Kedua jenis sensor ini mempunyai fungsi yang sama yaitu membaca suhu dan kelembaban udara. Namun keduanya mempunyai perbedaan jangkauan dan keakurasian dalam pembacaan suhu dan kelembaban. Sensor ini dibuat menjadi dalam bentuk modul yang dikenal dengan modul sensor DHT11 ky-015.

Apa Itu Sensor DHT11

Apa itu sensor DHT11? Sensor DHT11 adalah sebuah sensor yang mempunyai fungsi untuk mengukur suhu dan kelembaban udara yang jika dihubungkan menjadi rangkaian akan menghasilkan keluaran tegangan analog dalam bentuk sinyal listrik yang dapat digunakan oleh mikrokontroler (arduino) untuk dikonversi menjadi nilai suhu dan kelembaban pada objek yang diukur. Sensor ini dapat dimasukkan ke dalam elemen resistif seperti perangkat pengukur suhu NTC (Negatif Temperature Cooficient).

Sensor ini dirangkai menjadi modul sensor suhu. Modul sensor ini memiliki kelebihan jika dibandingkan dengan modul sensor suhu lainnya. Kelebihan yang dimiliki oleh modul sensor ini adalah dari segi kualitas pembacaan data pengukuran, modul ini lebih responsif dan mempunyai kecepatan dalam hal pembacaan suhu dan kelembaban dari objek yang diukurnya, selain itu data yang terbaca tidak mudah terinterferensi.

Sensor ini juga mempunyai fitur untuk kalibrasi nilai pembacaan suhu dan kelembaban yang cukup akurat. Kalibrasi sensor ini dapat dilakukan dengan mengurangi atau menambahkan nilai suhu yang terbaca pada kode program sehingga nilai pembacaannya suhu atau kelembabannya sama dengan sensor suhu dan kelembaban yang dijadikan sebagai acuan. Misalnya sensor suhu yang dijadikan acuan adalah termo gun.

Penyimpanan data kalibrasi tersebut terdapat pada memori program OTP yang disebut juga dengan nama koefisien kalibrasi.

Sensor ini memiliki 4 kaki pin, setelah dirangkai menjadi modul, modul sensor DHT11  memiliki 3 kaki pin.

 

Sensor Suhu dan Kelembaban DHT11

Sensor Suhu dan Kelembaban DHT11 ini banyak diimplementasikan pada bidang pertanian, di antaranya adalah mengukur suhu dan kelembaban udara pada daerah pertanian dengan tujuan untuk meningkatkan produksi hasil pertanian. Sensor suhu udara ini tidak dapat berjalan sendiri karena hasil output pengukuran dari sensor ini adalah sinyal tegangan analog, karena itu dibutuhkan sebuah kontroller untuk mengkonversi tegangan analog menjadi suhu dan kelembaban. 

Jadi nantinya pada pembahasan nantinya dalam artikel ini, kami juga akan mengimplementasikan dht11 ini dengan arduino sehingga anda dapat mengerti bagaimana menggunakannya dengan arduino.

Pin DHT 11

Pin DHT 11 ini terdapat 3 pin pada modulnya, namun pin pada sensor ini sebenarnya terdiri dari 4 pin. Apa saja pin-pin tersebut? Anda dapat melihat pin-pin yang terdapat pada Modul DHT11 dengan breakout PCB dan Sensor DHT11 di bawah ini:

Modul DHT11 dengan breakout PCB mempunyai 3 Pin

  • Pin 1 yaitu VCC diberi sumber tegangan 5 VDC
  • Pin 2 yaitu A0 atau Data merupakan Pin yang memberikan hasil pengukuran. Pin ini mengeluarkan tegangan yang berkisar antara 0-5V DC. Tegangan inilah yang akan dikonversi menjadi suhu dan kelembaban.
  • Pin 3 yaitu GND diberikan Ground

Sebelum dijadikan modul dalam bentuk PCB, Sensor DHT11 mempunyai 4 Pin 

  • Pin 1 yaitu VCC diberi tegangan 5 V DC
  • Pin 2 yaitu A0 atau Data adalah Pin yang mengeluarkan hasil pengukuran. Pin ini dapat menghasilkan tegangan yang berkisar antara 0-5V DC. Tegangan inilah yang akan diubah menjadi suhu dan kelembaban oleh arduino.
  • Pin 3 yaitu NC (Not Connected) adalah pin yang diberikan tegangan / tidak disambungkan kemanapun
  • Pin 4 yaitu GND disambungkan ke ground sumber listrik

Data Sheet DHT 11

Untuk menggunakan sensor DHT 11 diperlukan data sheet. Datasheet ini memuat spesifikasi dari sensor yang berguna untuk acuan dalam menghubungkan sensor dan kontroller. Adapun spesifikasi dari sensor suhu dan kelembaban yang terdapat di dalam datasheet adalah sebagai berikut:

Berikut adalah link lengkap download dari data sheet DHT11. Dari datasheet tersebut anda bisa mengetahui berapa tegangan yang dibutuhkan untuk menghubungkan sensor ini dengan arduino. Selain itu datasheet juga berisi cara kerja pembacaan suhu dan kelembaban sensor suhu ini.

 

Sensor Suhu dan Kelembaban Udara DHT11 arduino

Bagaimana mengaplikasikan Sensor Suhu dan Kelembaban Udara DHT11 dengan arduino? Untuk menjawab pertanyaan ini, diperlukan berbagai persiapan. Persiapan tersebut dimulai dari alat dan bahan yang akan digunakan untuk mengaplikasikan kedua komponen ini.

Adapun alat dan bahan yang dibutuhkan untuk mengaplikasikan DHT11 dan Arduino Uno adalah:

  • Modul DHT11

 

  • Arduino Uno beserta Kabel

 

  • Kabel Jumper Secukupnya

 

  • Protoboard / breadboard

 

Aplikasi Arduino dan DHT11

Hubungkan DHT11 dan arduino menggunakan kabel melalui breadboard. Dalam pemasangan DHT11, koneksi VCC dan GND ke Arduino perlu menjadi perhatian agar tidak terbalik pemasangannya, karena bisa menyebabkan kerusakan DHT11 jika terbalik. Berikut ini adalah rangkaian DHT11 dan Arduino:

 

Hubungan pin Modul DHT11 ke Board Arduino Uno adalah:

Pin DHT 11
Pin Arduino Uno
+ (VCC) VCC
Out (Data) Kaki Tengah
Pin 2
GND GND

Program Sensor Suhu DHT11 Arduino

Selanjutnya kita akan membuat program sensor suhu DHT11 Arduino. Program ini adalah program sederhana bagaimana membaca suhu dan kelembaban pada DHT11 dan menampilkan hasil pembacaannya pada serial monitor Arduino IDE. Adapun langkah yang anda lakukan untuk membuat program ini adalah:

Buat program ini pada aplikasi Arduino IDE. Anda bisa mengkopi program ini dan mempaste pada sketch Arduino IDE. Berikut ini adalah programnya:

// membutuhkan library Arduino :
// – DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
// – Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor
 
#include “DHT.h”;
 
#define DHTPIN 2     // Pin 2 Digital arduino dihubungkan ke out(data) DHT sensor
 
 
 
#define DHTTYPE DHT22   // menggunakan type DHT 11 (DHT ada 2 jenis DHT11 dan DHT22)
 
 
// Hubungkan pin 1 dari sensor ke VCC +5V
// Catatan: Jika menggunakan kontroller lain seperti ESP8266 atau Arduino Due dengan VCC sebesar 3.3V, hubungkan VCC tersebut ke pin 1 (VCC) dari DHT11
// Hubungkan pin 2 (Tengah) dari sensor(DHTPIN) is ke pin digital Arduino
// Hubungkan pin 3 (kanan) dari sensor ke GROUND (jika sensor memiliki 3 pin), Perhatikan letak VCC //dan GND jangan sampai terbalik, pastikan dengan melihat Datasheet atau penamaan yang terdapat pada //board sensor
// Hubungkan pin 4 (on the right) dari sensor ke GROUND and jangan menghubungkan apapun ke pin 3
// (jika sensor yang anda gunakan memiliki  4 pins)
// Hubungkan sebuah resistor 10K dari pin 2 (data) ke pin 1 (VCC) dari sensor
 
 
 
DHT dht(DHTPIN, DHTTYPE); // Inisialisasi sensor DHT.
 
//Fungsi yang pertama dibaca arduino
void setup() {
  Serial.begin(9600); //memulai komunikasi serial arduino (serial monitor) dengan baudrate 9600
  Serial.println(“Birolistrik.com”); //menampilkan text (serial monior) Birolistrik.com melalui serial komunikasi
  Serial.println(“DHT11 Testing”); //menampilkan text (serial monior) DHT11 Testing melalui serial komunikasi
  dht.begin(); //memulai komunikasi dengan sensor DHT11
}
 
void loop() {
  //menunda waktu selama 2 detik
  delay(2000);
 
 
  float h = dht.readHumidity(); //membaca kelembaban sensor DHT dan menyimpan pembacaannya pada variable h dengan type data float/bilangan berkoma
   
  float t = dht.readTemperature(); //membaca suhu sensor DHT dalam Celcius dan menyimpan pembacaannya pada variable t dengan type data float/bilangan berkoma
  // membaca suhu dengan satuan Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);
 
  // isnan adalah apakah variable tersebut bukan sebuah angka?
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(“Gagal Membaca DHT sensor!”);
    return;
  }
 
  // hitung index panas dalam Fahrenheit (default)
  float hif = dht.computeHeatIndex(f, h);
  //hitung index panas dalam Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);
 
  Serial.print(“Kelembaban: “);
  Serial.print(h);
  Serial.print(“%  Suhu: “);
  Serial.print(t);
  Serial.print(“°C “);
  Serial.print(f);
  Serial.print(“°F  index panas: “);
  Serial.print(hic);
  Serial.print(“°C “);
  Serial.print(hif);
  Serial.println(“°F”);
}

Setelah selesai mencopy paste, kemudian lakukan kompilasi program, jika terdapat kesalahan, perbaiki kesalahan tersebut,  sampai tidak terjadi kesalahan. Setelah itu lakukan upload ke dalam board Arduino yang anda gunakan. Jangan lupa memilih port komunikasi yang digunakan untuk mengupload hasil kompilasi program yang sudah dibuat ke dalam Arduino.

Hasil dari running program adalah seperti pada gambar berikut:

 

 

Wokwi DHT11

Sekarang kita akan mecoba menjalankan program dht11 dengan arduino uno tersebut secara simulasi dengan wokwi. Saya sudah membuat simulasinya dengan menggunakan wokwi pada link berikut https://wokwi.com/projects/375547801588210689 . Namun komponen dht11 diganti dengan dht22 karena pada wokwi tidak tersedia komponen dht11. Secara program antara arduino uno dht11 dan arduino uno dht22 hampir sama, hanya saja penggunaan librarynya saja yang berbeda. Yaitu penggunaan library untuk dht11 dan dht22 seperti berikut:
// membutuhkan library Arduino :
// – DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
// – Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor

#include “DHT.h”;

#define DHTPIN 2 // Pin 2 Digital arduino dihubungkan ke out(data) DHT sensor



#define DHTTYPE DHT22 // menggunakan type DHT 11 (DHT ada 2 jenis DHT11 dan DHT22)


// Hubungkan pin 1 dari sensor ke VCC +5V
// Catatan: Jika menggunakan kontroller lain seperti ESP8266 atau Arduino Due dengan VCC sebesar 3.3V, hubungkan VCC tersebut ke pin 1 (VCC) dari DHT22
// Hubungkan pin 2 (Tengah) dari sensor(DHTPIN) is ke pin digital Arduino
// Hubungkan pin 3 (kanan) dari sensor ke GROUND (jika sensor memiliki 3 pin), Perhatikan letak VCC //dan GND jangan sampai terbalik, pastikan dengan melihat Datasheet atau penamaan yang terdapat pada //board sensor
// Hubungkan pin 4 (on the right) dari sensor ke GROUND and jangan menghubungkan apapun ke pin 3
// (jika sensor yang anda gunakan memiliki 4 pins)
// Hubungkan sebuah resistor 10K dari pin 2 (data) ke pin 1 (VCC) dari sensor



DHT dht(DHTPIN, DHTTYPE); // Inisialisasi sensor DHT.

//Fungsi yang pertama dibaca arduino
void setup() {
Serial.begin(9600); //memulai komunikasi serial arduino (serial monitor) dengan baudrate 9600
Serial.println(“Birolistrik.com”); //menampilkan text (serial monior) Birolistrik.com melalui serial komunikasi
Serial.println(“DHT22 Testing”); //menampilkan text (serial monior) DHT22 Testing melalui serial komunikasi
dht.begin(); //memulai komunikasi dengan sensor DHT22
}

void loop() {
//menunda waktu selama 2 detik
delay(2000);


float h = dht.readHumidity(); //membaca kelembaban sensor DHT dan menyimpan pembacaannya pada variable h dengan type data float/bilangan berkoma

float t = dht.readTemperature(); //membaca suhu sensor DHT dalam Celcius dan menyimpan pembacaannya pada variable t dengan type data float/bilangan berkoma
// membaca suhu dengan satuan Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);

// isnan adalah apakah variable tersebut bukan sebuah angka?
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(“Gagal Membaca DHT sensor!”);
return;
}

// hitung index panas dalam Fahrenheit (default)
float hif = dht.computeHeatIndex(f, h);
//hitung index panas dalam Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);

Serial.print(“Kelembaban: “);
Serial.print(h);
Serial.print(“% Suhu: “);
Serial.print(t);
Serial.print(“°C “);
Serial.print(f);
Serial.print(“°F index panas: “);
Serial.print(hic);
Serial.print(“°C “);
Serial.print(hif);
Serial.println(“°F”);
}
 
Untuk running hasil program arduino dht22 tetap sama dengan dht11:

Sensor Suhu DHT11 Arduino dengan LCD

Bagaimana menampilkan pembacaan sensor suhu dht11 arduino dengan lcd? Untuk menampilkan pembacaan sensor ke LCD diperlukan modul tambahan yaitu LCD. LCD yang akan kita gunakan adalah LCD I2C, hal ini dilakukan karena LCD I2C menggunakan 2 port dari arduino, VCC dan GND.

Ada dua hal yang harus anda ketahui untuk menampilkan pembacaan sensor suhu ke LCD menggunakan arduino, dua hal tersebut adalah:

  1. Bagaimana membaca suhu dan kelembaban DHT11 menggunakan arduino
  2. Bagimana menampilkan text pada LCD dengan program lcd i2c arduino yang telah saya buat pada artikel sebelumnya

Untuk itu dari alat dan bahan di atas, kita menambahkan modul LCD I2C seperti gambar di bawah:

Sehingga jika arduino dan LCD beserta DHT11 kita rangkai menjadi rangkaian sebagai berikut:

 

Hubungan Pin DHT11 ke Pin Arduino pada rangkaian adalah:

Pin DHT 11
Pin Arduino Uno
+ (VCC) VCC
Out (Data) Kaki Tengah
Pin 2
GND GND

 

Hubungan Pin  LCD I2C ke Arduino Uno pada rangkaian adalah:

Pin LCD I2C
Pin Arduino Uno
+ (VCC) VCC
SDA
D18/SDA
SCL
D19/SCL
GND GND

 

Dari gambar rangkaian kedua modul tersebut (DHT11 dan LCD I2C), kemudian kita bisa membuat koding atau program alat kontrol penampil suhu dan kelembaban DHT11 ke LCD I2C menggunakan arduino uno. Berikut Programnya:

 

// membutuhkan library Arduino :
// – DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
// – Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor

#include “DHT.h”;
#include “LiquidCrystal_I2C.h” //masukkan library liquidCrystal_I2C.h
#define DHTPIN 2 // Pin 2 Digital arduino dihubungkan ke out(data) DHT sensor
LiquidCrystal_I2C lcd(0x27, 16, 2); //gunakan variable lcd sebagai obyek lcd


#define DHTTYPE DHT11 // menggunakan type DHT 11 (DHT ada 2 jenis DHT11 dan DHT22)


// Hubungkan pin 1 dari sensor ke VCC +5V
// Catatan: Jika menggunakan kontroller lain seperti ESP8266 atau Arduino Due dengan VCC sebesar 3.3V, hubungkan VCC tersebut ke pin 1 (VCC) dari DHT11
// Hubungkan pin 2 (Tengah) dari sensor(DHTPIN) is ke pin digital Arduino
// Hubungkan pin 3 (kanan) dari sensor ke GROUND (jika sensor memiliki 3 pin), Perhatikan letak VCC //dan GND jangan sampai terbalik, pastikan dengan melihat Datasheet atau penamaan yang terdapat pada //board sensor
// Hubungkan pin 4 (on the right) dari sensor ke GROUND and jangan menghubungkan apapun ke pin 3
// (jika sensor yang anda gunakan memiliki 4 pins)
// Hubungkan sebuah resistor 10K dari pin 2 (data) ke pin 1 (VCC) dari sensor



DHT dht(DHTPIN, DHTTYPE); // Inisialisasi sensor DHT.

//Fungsi yang pertama dibaca arduino
void setup() {
dht.begin(); //memulai komunikasi dengan sensor DHT11
lcd.begin(16,2); //mulai LCD 16 kolom, 2 baris
}

void loop() {
//menunda waktu selama 2 detik
delay(2000);


float h = dht.readHumidity(); //membaca kelembaban sensor DHT dan menyimpan pembacaannya pada variable h dengan type data float/bilangan berkoma

float t = dht.readTemperature(); //membaca suhu sensor DHT dalam Celcius dan menyimpan pembacaannya pada variable t dengan type data float/bilangan berkoma
// membaca suhu dengan satuan Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);

// isnan adalah apakah variable tersebut bukan sebuah angka?
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(“Gagal Membaca DHT sensor!”);
return;
}

// hitung index panas dalam Fahrenheit (default)
float hif = dht.computeHeatIndex(f, h);
//hitung index panas dalam Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);

lcd.clear();
lcd.setCursor(0,0); // set kursor pada kolom ke 0 baris ke 0
lcd.print(“Arduino LCD i2C”); //tulis ke lcd “Arduino LCD i2c”
// set kursor pada kolom ke 0 baris ke 1
lcd.setCursor(0,1);
lcd.print(“birolistrik.com”); //tulis ke lcd “birolistrik.com”
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Kelembaban :”);
lcd.setCursor(0,1);
lcd.print(h);
lcd.print(“%”);

delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Suhu :”);
lcd.setCursor(0,1);
lcd.print(t);
lcd.print((char) 223);
lcd.print(“C, “);
lcd.print(f);
lcd.print((char) 223);
lcd.print(“F, “);

delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“index panas:”);
lcd.setCursor(0,1);
lcd.print(hic);
lcd.print((char) 223);
lcd.print(“C, “);
lcd.print(hif);
lcd.print((char) 223);
lcd.print(“F, “);

}

Adapun hasil dari program adalah berikut ini:

 

Demikianlah aplikasi yang kami buat tentang sensor DHT 11 secara lengkap. Semoga dapat membantu anda mengerti dengan Sensor DHT11 dan Implementasinya.

 

Leave a Reply