Tutorial Menggunakan Sensor DHT11 dan Tampilan LCD 16x2 dengan Arduino

Tutorial menggunakan sensor suhu dan kelembaban DHT11 dan tampilan LCD 16x2 dengan Arduino
Tutorial Menggunakan Sensor DHT11 dan Tampilan LCD 16x2 dengan Arduino

Pada kesempatan kali ini kita akan membahas tentang tutorial menggunakan sensor suhu dan kelembaban DHT11 dengan board Arduino dan menampilkan hasilnya pada LCD 16x2.

Jika Anda belum pernah menggunakan sensor DHT11 sebelumnya, saya menyarankan untuk melihat terlebih dahulu artikel sebelumnya yaitu: Cara Mengukur Suhu dan Kelembaban dengan DHT11 dan Arduino.

Apa itu Sensor DHT11?

Sensor DHT11 adalah salah satu sensor yang berfungsi untuk mengukur suhu dan kelembaban relatif. Sensor ini kompatibel dengan mikrokontroler dan dapat dengan mudah ditemukan di toko online dengan harga yang sangat terjangkau. 

Ada satu lagi sensor yang sama dengan DHT11 yaitu DHT22. Kedua sensor ini sama saja jika dilihat dari cara kerjanya, yang membedakannya hanya spesifikasi dari kedua sensor.  

Cara Kerja Sensor DHT11

Sensor DHT11 maupun DHT22 mampu mendeteksi suhu menggunakan sebuah komponen yang bernama termistor. Sedangkan untuk mendeteksi kelembaban relatif menggunakan substrat penahan kelembaban dengan elektroda. Informasi lebih lengkap terkait hal ini dapat dilihat pada laman Cara Kerja Sensor DHT11 dan DHT22.

Spesifikasi

Berikut adalah daftar spesifikasi dari kedua sensor yang perlu diperhatikan agar pada saat menggunakannya tidak terjadi kesalahan yang dapat merusak sensor maupun komponen elektronik lain. Informasi lebih jelas terkait perbedaan kedua sensor ini dapat dilihat pada laman Perbedaan DHT11 dengan DHT22.

Spesifikasi DHT11:

  • Tegangan kerja = 3.3V-5V.
  • Arus maksimum = 2.5mA.
  • Range pengukuran kelembaban = 20%-80%.
  • Akurasi pengukuran kelembaban = 5%.
  • Range pengukuran suhu = 0°C-50°C.
  • Akurasi pengukuran suhu = 2°C.
  • Kecepatan pengambilan sampel tidak lebih dari 1 Hz (setiap detik).
  • Ukuran = 15.5 mm x 12 mm x 5.5 mm.
  • 4 pin dengan jarak 0,1 ".

Spesifikasi DHT22:

  • Tegangan kerja = 3.3V-5V.
  • Arus maksimum = 2.5mA.
  • Range pengukuran kelembaban = 0%-100%.
  • Akurasi pengukuran kelembaban = 2-5%.
  • Range pengukuran suhu = -40°C-80°C.
  • Akurasi pengukuran suhu = 0.5°C.
  • Kecepatan pengambilan sampel tidak lebih dari 0.5 Hz (setiap detik).
  • Ukuran = 15.1 mm x 25 mm x 7.7 mm.
  • 4 pin dengan jarak 0,1 ".

Pin Out Sensor DHT11

Pin yang terdapat pada sensor DHT11 dan DHT22 berjumlah 4 buah, tapi yang digunakan hanya 3 buah, yaitu VCC, GND dan DATA. 

Namun apabila kalian membeli sensor DHT11 yang sudah berupa modul, biasanya hanya terdapat 3 pin, bukan 4 pin. 

Karena pin DHT11 dan DHT22 sama saja, maka pada gambar di bawah ini hanya menampilkan sensor DHT22 saja sebagai perwakilan.

Sensor dengan 4 Buah Pin

Tutorial Menggunakan Sensor DHT11 dan Tampilan LCD 16x2 dengan Arduino
Sensor DHT dengan 4 Buah Pin

Sensor dengan 3 Buah Pin

Tutorial Menggunakan Sensor DHT11 dan Tampilan LCD 16x2 dengan Arduino
Sensor DHT dengan 3 Buah Pin

Skematik Sensor DHT11 dan Tampilan LCD I2C

Berikut adalah skematik dari sensor DHT11 dan LCD 16x2 dengan komunikasi I2C. 

Tutorial Menggunakan Sensor DHT11 dan Tampilan LCD 16x2 dengan Arduino
Skematik Sensor DHT11 dan Tampilan LCD I2C
Skematik Sensor DHT11 dan Tampilan LCD I2C
Skematik Sensor DHT11 dan Tampilan LCD I2C

Skematik Sensor DHT11 dan Tampilan LCD Biasa

Berikut adalah skematik dari sensor DHT11 dan LCD 16x2 tanpa komunikasi I2C. 

Tutorial Menggunakan Sensor DHT11 dan Tampilan LCD 16x2 dengan Arduino
Skematik Sensor DHT11 dan Tampilan
Skematik Sensor DHT11 dan Tampilan LCD
Skematik Sensor DHT11 dan Tampilan LCD

Komponen

Ada beberapa komponen kita gunakan dalam artikel ini, berikut daftarnya.
  1. 1x Arduino Uno.
  2. 1x LCD 16x2 (baik I2C atau bukan)
  3. 1x Potensiometer (untuk mengatur kontras LCD non I2C).
  4. 1x Resistor 220 ohm.
  5. 1x Resistor 10K ohm.
  6. Power Supply jika dibutuhkan.

Kode Program Untuk I2C LCD

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include "DHT.h"

LiquidCrystal_I2C lcd(0x27,16,4);
// Deklarasi PIN DHT11 //
#define DHTPIN 2
// Tipe sensor yang digunakan (DHT11 atau DHT22) //
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

// Membuat ikon kelelembaban // 
byte suhu[8] =
{
  B00100,
  B01010,
  B01010,
  B01110,
  B11111,
  B11111,
  B01110,
  B00000
};

// Membuat ikon kelelembaban // 
byte kelembaban[8] =
{
  B00100,
  B01010,
  B01010,
  B10001,
  B10001,
  B10001,
  B01110,
  B00000
};

void setup() {
  lcd.init();
  lcd.backlight();
  lcd.createChar(1, kelembaban);
  lcd.createChar(2, suhu);
  lcd.setCursor(0,0);
  lcd.print("Mahirelektro.com");
  lcd.setCursor(0,1);
  lcd.print("DHT11 + LCD 16x2");
  dht.begin();
  delay(2000);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.write(2);
  lcd.print(" Suhu: ");
  lcd.setCursor(0,1);
  lcd.write(1);
  lcd.print(" Lembab: ");
}

void loop() {
  // Membaca kelembaban //
  float h = dht.readHumidity();
  // Membaca suhu dalam satuan Celsius //
  float t = dht.readTemperature();
  // Membaca suhu dalam satuan Fahrenheit //
  float f = dht.readTemperature(true);

  // Menampilkan pesan Error jika sensor tidak terbaca //
  if (isnan(h) || isnan(t) || isnan(f)) {
    lcd.setCursor(8,0);
    lcd.print("Error   ");
    lcd.setCursor(10,1);
    lcd.print("Error   ");
    return;
  }

  
  float hif = dht.computeHeatIndex(f, h);
  float hic = dht.computeHeatIndex(t, h, false);

  // Menampilkan data ke LCD //
  lcd.setCursor(8,0);
  lcd.print(t,1);
  lcd.print((char)223);
  lcd.print("C     ");
  lcd.setCursor(10,1);
  lcd.print(h,0);
  lcd.print("%     ");

  // Jeda Waktu, ubah menjadi 2000 untuk DHT22//
  delay(1000);
}

Kode Program Untuk LCD Biasa

#include <LiquidCrystal.h>
#include "DHT.h"

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

// Deklarasi PIN DHT11 //
#define DHTPIN 7 
// Tipe sensor yang digunakan (DHT11 atau DHT22) //
#define DHTTYPE DHT11   
DHT dht(DHTPIN, DHTTYPE);

// Membuat ikon kelelembaban // 
byte suhu[8] =
{
  B00100,
  B01010,
  B01010,
  B01110,
  B11111,
  B11111,
  B01110,
  B00000
};

// Membuat ikon kelelembaban // 
byte kelembaban[8] =
{
  B00100,
  B01010,
  B01010,
  B10001,
  B10001,
  B10001,
  B01110,
  B00000
};

void setup(){
  lcd.begin(16, 2);
  lcd.createChar(1, kelembaban);
  lcd.createChar(2, suhu);
  lcd.setCursor(0,0);
  lcd.print("Mahirelektro.com");
  lcd.setCursor(0,1);
  lcd.print("DHT11 + LCD 16x2");
  dht.begin();
  delay(2000);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.write(2);
  lcd.print(" Suhu: ");
  lcd.setCursor(0,1);
  lcd.write(1);
  lcd.print(" Lembab: ");
}

void loop(){
  // Membaca kelembaban //
  float h = dht.readHumidity(); 
  // Membaca suhu dalam satuan Celsius //
  float t = dht.readTemperature(); 
  // Membaca suhu dalam satuan Fahrenheit //
  float f = dht.readTemperature(true); 
  
  // Menampilkan pesan Error jika sensor tidak terbaca //
  if (isnan(h) || isnan(t) || isnan(f)) {
    lcd.setCursor(8,0);
    lcd.print("Error   ");
    lcd.setCursor(10,1);
    lcd.print("Error   ");
    return;
  }
  
  float hif = dht.computeHeatIndex(f, h);
  float hic = dht.computeHeatIndex(t, h, false);

  // Menampilkan data ke LCD //
  lcd.setCursor(8,0);
  lcd.print(t,1);
  lcd.print((char)223);
  lcd.print("C     ");
  lcd.setCursor(10,1);
  lcd.print(h,0);
  lcd.print("%     ");

  // Jeda Waktu, ubah menjadi 2000 untuk DHT22//
  delay(1000);
}

Langkah-Langkah

  1. Ada beberapa library yang kita gunakan kali ini, yaitu library LCD dan library DHT11. Karena library LCD sudah tersedia pada Arduino IDE, jadi kita hanya perlu mengunduh library DHT dari Adafruit, unduh library DHT.
  2. Hubungkanlah komponen-komponen berdasarkan skematik di atas. Sesuaikan dengan jenis LCD yang Anda gunakan. Jika Anda menggunakan LCD I2C, gunakan skematik LCD I2C. Jika menggunakan LCD biasa, gunakan skematik LCD biasa.
  3. Buka software Arduino IDE dan buat file baru.
  4. Salin dan tempel kode program di atas ke Arduino IDE, jangan lupa gunakan kode program yang sesuai dengan jenis LCD yang Anda gunakan. Jika Anda menggunakan LCD I2C, gunakan kode program LCD I2C. Jika menggunakan LCD biasa, gunakan kode program LCD biasa.
  5. Jika sudah, tentukan jenis board Arduino yang Anda gunakan dan pilih port yang terhubung ke board Arduino pada tab tools, di sini saya menggunakan board Arduino. 
    Tutorial Menggunakan Sensor DHT11 dan Tampilan LCD 16x2 dengan Arduino
  6. Setelah itu unggah program dan tunggu hingga proses selesai.
  7. Jika program berhasil diunggah, seharusnya pada LCD akan menampilkan informasi seperti video di bawah.
  8. Namun jika terjadi masalah saat proses mengompilasi ataupun mengunggah, Anda bisa memberikan keterangan error di kolom komentar agar kita dapat berdiskusi.

Hasilnya

Mohon maaf sebelumnya karena masih dalam bentuk simulasi di Proteus, tapi selagi wiring dan kode program sesuai dengan tutorial ini seharusnya hasil tidak akan berbeda. Jika saya ada kesempatan akan saya update artikel ini dengan menyediakan hasil yang asli. Berikut adalah video dari simulasinya. Kalian bisa download file simulasi di akhir artikel ini.

Pembaruan: Berikut adalah hasil akhirnya.

Tutorial Menggunakan Sensor DHT11 dan Tampilan LCD 16x2 dengan Arduino

Unduh File

Penutup

Itulah tutorial menggunakan sensor DHT11 dan menampilkannya pada LCD menggunakan Arduino Uno. Sekali mohon maaf karena pada artikel ini kita hanya menggunakan simulasi dari software Proteus, mudah-mudahan di lain waktu saya bisa memperbarui artikel ini menggunakan komponen asli. 

Jika artikel ini dirasa bermanfaat jangan sungkan untuk membagikannya pada teman-teman yang lainnya. Jika ada kesalahan pada penulisan artikel ini maupun masalah ketika mengikuti artikel ini, jangan sungkan untuk membahasnya di kolom komentar. Sampai jumpa!

Penghobi Elektronika