
Pada kesempatan kali ini kita akan membahas tentang tutorial menggunakan sensor suhu dan kelembaban DHT11 dengan NodeMCU ESP8266 dengan Modul Trainer KIT IOT dan menampilkan hasilnya pada LCD 16×2 I2C.
Pada Tutorial Sebelumnya kita hanya menampilkan data suhu dan kelembaban di Serial Monitor pada Arduino IDE saja dan sekarang kita akan menampilkannya pada LCD 16×2 I2C.
Jika Anda belum pernah menggunakan sensor DHT11 sebelumnya, saya menyarankan untuk melihat terlebih dahulu blog sebelumnya yaitu: Membaca Data Suhu Dan Kelembaban Sensor DHT11.
Daftar Isi
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.
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.
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.
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
![]() |
Sensor DHT dengan 4 Buah Pin |
Sensor dengan 3 Buah Pin
![]() |
Sensor DHT dengan 3 Buah Pin |
Komponen
- Modul Trainer IOT
- Board NodeMCU ESP8266
- Display LCD 16×2
- Modul I2C
- Kabel Jumper (Male – Female, Female – Female)
- Kabel USB
- Arduino IDE
Diagram Wiring

Implementasi
- Install Board ESP8266
- Buka File > Preferences di Arduino IDE.
- Tambahkan URL: http://arduino.esp8266.com/stable/package_esp8266com_index.json di Additional Boards Manager URLs.
- Pilih Tools > Board > Board Manager.
- Masukkan “esp8266” pada kolom pencarian, akan muncul pilihan board esp8266 by ESP8266 Community, untuk versi Board pilih 2.5.2, kemudian klik Install.
- Jika Instalasi benar, akan muncul board Esp8266.
- Pada menu pemilihan board Pilih board NodeMCU 1.0 (ESP-12E Module).
- Install Library DHT11
- Buka Sketch > Include Library > Manage Libraries.
- Cari DHTSensorLibrary dan klik Install.
- Install Library LiquidCrystal_I2C
- Silahkan download terlebih dahulu Library LCD I2C, melalui link berikut: https://github.com/johnrickman/LiquidCrystal_I2C/archive/refs/heads/master.zip.
- Setelah di download, file .zip library tidak perlu di ekstrak ya. Tinggal ikuti langkah berikut :
- Pada Arduino IDE, klik Menu Sketch -> Include Library -> Add .ZIP Library…
- Cari file Library yang sudah di Download sebelumnya, lalu pilih dan klik Open.
Kode Program
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
#define DHTPIN 2 // Pin D4 sebagai pin DHT11
#define DHTTYPE DHT11 // jenis DHT yang digunakan
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
// Membuat karakter khusus untuk simbol suhu (°C) dan kelembaban (%)
byte suhuIcon[8] = {
B00100,
B01010,
B01010,
B00100,
B00000,
B00100,
B00100,
B00000
};
byte lembabIcon[8] = {
B00100,
B00100,
B01010,
B10001,
B10001,
B01110,
B00000,
B00000
};
void setup() {
Serial.begin(115200);
dht.begin();
lcd.init();
lcd.backlight();
// Membuat simbol custom pada memori LCD
lcd.createChar(0, suhuIcon); // Simbol suhu
lcd.createChar(1, lembabIcon); // Simbol kelembaban
}
void loop() {
float suhu = dht.readTemperature();
float kelembaban = dht.readHumidity();
Serial.print("Suhu: ");
Serial.print(suhu);
Serial.println("C");
Serial.print("Kelembaban: ");
Serial.print(kelembaban);
Serial.println("%");
delay(2000);
lcd.setCursor(0, 0);
lcd.write(byte(0)); // Menampilkan simbol suhu
lcd.print("Suhu: ");
lcd.print(String(suhu) + " C");
lcd.setCursor(0, 1);
lcd.write(byte(1)); // Menampilkan simbol kelembaban
lcd.print("Lembab: ");
lcd.print(String(kelembaban) + " %");
delay(1000);
}
Langkah-langkah di Arduino IDE
- Memverifikasi Kode
- Klik tombol Verify untuk memeriksa kesalahan pada kode.
- Upload Program
- Hubungkan ESP8266 ke komputer.
- Pilih board ESP8266, pastikan board yang dipilih NodeMCU 1.0 ESP-12E, uploud speed adalah 921600, dan Port telah sesuai.
- Klik tombol Upload untuk mengunggah program.
Hasil Akhir
Jika berhasil maka akan tampil seperti gambar dibawah ini:

Video Tutorial
FAQ
Apa itu I2C dan mengapa digunakan untuk LCD?
I2C (Inter-Integrated Circuit) adalah protokol komunikasi yang memungkinkan beberapa perangkat terhubung hanya dengan dua kabel: SDA (data) dan SCL (clock). Ini memudahkan koneksi LCD dengan hanya menggunakan sedikit pin pada NodeMCU, dibandingkan dengan metode paralel yang memerlukan lebih banyak pin.
Library apa yang harus diinstal di Arduino IDE untuk mengontrol LCD I2C?
Anda perlu menginstal pustaka LiquidCrystal_I2C. Library ini memungkinkan NodeMCU berkomunikasi dengan modul LCD I2C. Anda bisa menemukannya melalui Library Manager di Arduino IDE.
Bagaimana cara menemukan alamat I2C LCD saya?
Anda dapat menggunakan program sederhana untuk mendeteksi alamat I2C. Program ini dapat dijalankan di Arduino IDE menggunakan kode I2C Scanner
. Biasanya, alamat yang sering muncul adalah 0x27 atau 0x3F.
Mengapa Teks tidak kunjung muncul di layar LCD?
- Coba ambil obeng kecil kemudian dibelakang LCD ada Trimpot warna biru, silakan di putar-putar saja.
- Pastikan kalian sudah scan I2C dan Alamat I2C Sesuai.
- Pastikan wiring sudah benar.
- Periksa komponen apabila ada cacat.
Apakah proyek ini cocok untuk pemula?
Ya, menggunakan DHT11 dengan ESP8266 adalah proyek yang cocok untuk pemula yang ingin mempelajari dasar-dasar mikrokontroler, sensor, dan integrasi jaringan IoT.
Apa itu DHT11?
Ya, menggunakan DHT11 dengan ESP8266 adalah proyek yang cocok untuk pemula yang ingin mempelajari dasar-dasar mikrokontroler, sensor, dan integrasi jaringan IoT.
Mengapa sensor DHT11 sering gagal memberikan pembacaan?
- Koneksi kabel longgar atau tidak tepat.
- Tidak ada resistor pull-up di pin data.
- Sensor rusak atau cacat.
- Pembacaan terlalu cepat.
Apa perbedaan antara DHT11 dan DHT22?
DHT11 lebih terjangkau tetapi memiliki rentang suhu dan kelembapan yang lebih terbatas (0–50°C, 20–90% kelembapan), sedangkan DHT22 lebih akurat dan memiliki rentang lebih luas (-40–80°C, 0–100% kelembapan), tetapi harganya lebih mahal.
Kesimpulan
Setelah mengikuti tutorial ini, kamu berhasil menampilkan Data Suhu dan Kelembaban ke LCD 16×2 I2C dan ESP8266 dengan Modul Trainer KIT IOT! Seru, kan? Project ini nggak cuma mengajarkan hal baru, tapi juga membuka banyak peluang untuk bereksperimen lebih lanjut di dunia mikrokontroler. Siapa tahu, project kecil ini bisa jadi awal dari ide-ide kreatif kamu lainnya!