DC
Kelas Digital Creative
Robotika · IoT · Scratch · Canva · CapCut · AI
← kembali ke Home

Membuat Pengukur Suhu Ruangan Digital dengan Arduino UNO, Sensor DHT22, dan LCD I2

⏱ 30 Menit Arduino August 2026 🔧 Arduino Uno, Sensor DHT22, LCD 16x2 I2C

Membuat Pengukur Suhu Ruangan Digital dengan Arduino UNO, Sensor DHT22, dan LCD I2C (Simulasi di Wokwi)

Pada tutorial ini, kita akan membuat sebuah alat pengukur suhu dan kelembapan ruangan menggunakan Arduino UNO, sensor DHT22, dan layar LCD 16×2 I2C. Semua percobaan dilakukan secara simulasi lewat website Wokwi, jadi kamu tidak perlu punya komponen fisik untuk mencobanya.

Apa yang Akan Kita Pelajari?

Proyek ini menggabungkan tiga bagian penting dalam sistem elektronik/robotika:

  • Input — sensor DHT22 membaca suhu dan kelembapan ruangan.
  • Proses — Arduino UNO mengolah data dari sensor secara berkala.
  • Output — layar LCD I2C menampilkan angka suhu dan kelembapan supaya bisa dibaca manusia.

Fokus latihan kita: cara membaca data dari sensor, cara memakai library (kode bantuan yang sudah dibuat orang lain), cara menyambungkan LCD I2C, dan cara menampilkan data secara real-time (langsung berubah mengikuti kondisi terkini).

Tujuan Pembelajaran

Setelah menyelesaikan tutorial ini, kamu diharapkan bisa:

  • Memasang library LiquidCrystal_I2C dan DHT sensor library di Wokwi.
  • Menyambungkan sensor DHT22, LCD I2C, breadboard, dan Arduino UNO sesuai jalur pin yang benar.
  • Menjelaskan fungsi perintah-perintah seperti begin, init, backlight, setCursor, print, readHumidity, dan readTemperature.
  • Menguji perubahan suhu dan kelembapan lewat slider sensor DHT22 di simulator.

Kenapa Proyek Ini Berguna?

  • Melatih penggunaan sensor digital untuk membaca kondisi lingkungan sekitar.
  • Membantu memahami bagaimana Arduino mengolah data suhu dan kelembapan.
  • Mengenalkan cara pakai LCD I2C, supaya informasi bisa ditampilkan tanpa harus buka Serial Monitor di komputer.
  • Menjadi dasar untuk membuat alat monitoring ruangan, inkubator telur, gudang penyimpanan, rumah kaca (green house), sampai sistem peringatan suhu.
  • Membiasakan diri membaca hubungan antara library, wiring (jalur kabel), pin, sensor, dan tampilan LCD — empat hal ini akan terus muncul di banyak proyek elektronika lainnya.

Langkah 1: Menyiapkan Komponen

Rangkaian ini memakai lima bagian berikut:

Komponen Fungsi Catatan Penting
Arduino UNO Pusat kontrol program (otak dari alat ini) Membaca data sensor, lalu mengirim hasilnya ke LCD.
Sensor DHT22 Mengukur suhu dan kelembapan udara Kaki data (pengirim informasi) masuk ke pin digital 7 Arduino.
LCD 16×2 I2C Menampilkan teks/angka secara digital Kaki SDA masuk ke pin A4, kaki SCL masuk ke pin A5.
Breadboard Membagi jalur listrik (5V dan GND) ke banyak komponen Merapikan jalur listrik untuk sensor dan LCD sekaligus.
Kabel jumper Menghubungkan antar komponen Digunakan untuk semua sambungan kabel di rangkaian ini.
💡 Kenapa perlu breadboard?

Karena sensor DHT22 dan LCD sama-sama butuh sumber daya listrik (5V) dan jalur ground (GND). Breadboard berfungsi seperti “stop kontak” yang membagi satu sumber listrik dari Arduino menjadi beberapa jalur, supaya kedua komponen bisa mendapat daya tanpa harus mencolok langsung berkali-kali ke Arduino.

Langkah 2: Memasang Library yang Dibutuhkan

Library adalah kumpulan kode siap pakai yang dibuat orang lain, supaya kita tidak perlu menulis semua perintah rumit dari nol. Untuk proyek ini, kita butuh dua library:

Nama Library Fungsi
LiquidCrystal_I2C Untuk mengontrol LCD I2C 16×2 (menampilkan teks, mengatur posisi kursor, menyalakan lampu latar, dll).
DHT sensor library Untuk membaca data dari sensor DHT22 (suhu dan kelembapan).

Cara memasangnya di Wokwi: buka tab Library Manager pada project Wokwi kamu, lalu pastikan kedua library di atas sudah muncul di daftar Installed Libraries. Jika belum ada, tambahkan lewat tombol + di pojok kanan atas Library Manager.

Penting: jika salah satu library belum terpasang, program akan gagal compile (gagal diproses) dan simulasi tidak bisa berjalan. Jadi selalu cek bagian ini terlebih dahulu sebelum menjalankan program.

Langkah 3: Merangkai Wiring (Jalur Kabel)

Ikuti langkah-langkah berikut secara berurutan untuk menyambungkan semua komponen:

  1. Hubungkan pin 5V Arduino ke jalur plus (+) pada breadboard.
  2. Hubungkan pin GND Arduino ke jalur minus (−) pada breadboard.
  3. Hubungkan VCC (kaki daya) DHT22 ke jalur plus breadboard, GND DHT22 ke jalur minus breadboard, dan pin data DHT22 ke pin digital 7 Arduino.
  4. Hubungkan VCC LCD ke jalur plus breadboard, GND LCD ke jalur minus breadboard, SDA LCD ke pin A4 Arduino, dan SCL LCD ke pin A5 Arduino.
  5. Pastikan semua jalur ground (GND) tersambung, supaya sensor dan LCD memiliki referensi listrik yang sama. Tanpa ini, komponen bisa salah baca data atau tidak berfungsi sama sekali.

Ringkasan tabel pin, supaya lebih mudah dicek satu per satu:

Komponen Pin di Komponen Tersambung ke
DHT22 VCC Jalur 5V breadboard
DHT22 GND Jalur GND breadboard
DHT22 SDA / DATA Pin digital 7 Arduino
LCD I2C VCC Jalur 5V breadboard
LCD I2C GND Jalur GND breadboard
LCD I2C SDA Pin A4 Arduino
LCD I2C SCL Pin A5 Arduino
💡 Apa itu SDA dan SCL?

Keduanya adalah dua jalur komunikasi khusus yang dipakai LCD I2C untuk “berbicara” dengan Arduino menggunakan protokol bernama I2C. Bayangkan seperti dua kabel telepon yang dipakai bergantian untuk mengirim dan menerima data, sehingga LCD hanya butuh 2 kabel data saja (SDA dan SCL) dibanding LCD biasa yang bisa butuh 6 kabel atau lebih.

Langkah 4: Memahami Alur Kerja Program

Sebelum masuk ke kode, penting untuk memahami dulu bagaimana program ini bekerja secara garis besar:

  1. DHT22 mengukur suhu dan kelembapan di sekitarnya.
  2. Arduino membaca data tersebut dan memprosesnya.
  3. LCD I2C menampilkan hasilnya dalam bentuk angka yang mudah dibaca.
  4. Program menunggu 2 detik (delay).
  5. Proses ini berulang terus-menerus selama Arduino menyala (disebut loop), sehingga data yang tampil di LCD selalu diperbarui.

Langkah 5: Menulis Kode Program (sketch.ino)

Buka file sketch.ino di Wokwi, lalu salin kode berikut:

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

// Mengatur colokan Sensor Suhu
#define DHTPIN 7        // Sensor dicolok ke angka 7
#define DHTTYPE DHT22   // Tipe sensor yang dipakai

DHT sensorSuhu(DHTPIN, DHTTYPE);

// Mengatur ukuran LCD (alamat 0x27, 16 kolom, 2 baris)
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  // Menyalakan mesin sensor dan LCD
  sensorSuhu.begin();
  lcd.init();
  lcd.backlight();

  // Menampilkan layar pembuka sesaat
  lcd.setCursor(0, 0);
  lcd.print(" ALAT PENGUKUR ");
  lcd.setCursor(0, 1);
  lcd.print("  SUHU RUANGAN  ");
  delay(2000);   // Tahan tulisan selama 2 detik
  lcd.clear();   // Bersihkan layar
}

void loop() {
  // 1. Membaca data kelembapan (Humidity) dan suhu (Celcius)
  float kelembapan = sensorSuhu.readHumidity();
  float suhuC = sensorSuhu.readTemperature();

  // 2. Cek apakah sensor rusak/gagal membaca
  if (isnan(kelembapan) || isnan(suhuC)) {
    lcd.setCursor(0, 0);
    lcd.print("SENSOR ERROR!  ");
    return;
  }

  // 3. Menampilkan Suhu di baris pertama (atas)
  lcd.setCursor(0, 0);
  lcd.print("Suhu: ");
  lcd.print(suhuC);
  lcd.print(" C  ");

  // 4. Menampilkan Kelembapan di baris kedua (bawah)
  lcd.setCursor(0, 1);
  lcd.print("Lembap: ");
  lcd.print(kelembapan);
  lcd.print(" %  ");

  // Jeda 2 detik sebelum alat membaca suhu baru
  delay(2000);
}

Langkah 6: Memahami Setiap Bagian Kode

Supaya tidak sekadar copy-paste, klik masing-masing bagian di bawah untuk memahami fungsinya satu per satu:

📦 Bagian Pemanggilan Library
  • #include <LiquidCrystal_I2C.h> — memanggil/mengaktifkan library untuk mengontrol LCD I2C.
  • #include <DHT.h> — memanggil/mengaktifkan library untuk membaca sensor DHT.
⚙️ Bagian Pengaturan Awal (di luar setup dan loop)
  • #define DHTPIN 7 — memberi tahu program bahwa kaki data sensor DHT22 terpasang di pin digital nomor 7 pada Arduino.
  • #define DHTTYPE DHT22 — memberi tahu program bahwa tipe sensor yang dipakai adalah DHT22 (bukan tipe lain seperti DHT11, karena cara membacanya sedikit berbeda).
  • DHT sensorSuhu(DHTPIN, DHTTYPE); — membuat sebuah “objek” (semacam wakil/perwakilan) bernama sensorSuhu yang mewakili sensor DHT22 kita di dalam program, supaya bisa dipanggil-panggil nanti.
  • LiquidCrystal_I2C lcd(0x27, 16, 2); — membuat objek bernama lcd yang mewakili layar LCD kita. Angka 0x27 adalah alamat unik LCD I2C (seperti nomor rumah, supaya Arduino tahu LCD mana yang diajak bicara), sedangkan 16 dan 2 berarti LCD ini punya 16 kolom dan 2 baris karakter.
🚀 Bagian setup() — Dijalankan Sekali di Awal

Fungsi setup() hanya dijalankan satu kali saat Arduino pertama kali dinyalakan, biasanya berisi persiapan awal:

  • sensorSuhu.begin(); — mengaktifkan/memulai komunikasi dengan sensor DHT22, supaya sensor siap dipakai.
  • lcd.init(); — menyiapkan/menyalakan LCD supaya siap menampilkan teks.
  • lcd.backlight(); — menyalakan lampu latar (backlight) LCD, supaya tulisan terlihat jelas.
  • lcd.setCursor(0, 0); — memindahkan posisi kursor (titik mulai menulis) ke kolom ke-0, baris ke-0 (yaitu pojok kiri atas layar). Perlu diingat, penomoran di pemrograman biasanya dimulai dari 0, bukan 1.
  • lcd.print(" ALAT PENGUKUR "); — menampilkan tulisan tersebut di posisi kursor yang sudah ditentukan.
  • delay(2000); — menghentikan program sejenak selama 2000 milidetik (= 2 detik), supaya tulisan pembuka sempat terbaca oleh pengguna sebelum berganti.
  • lcd.clear(); — membersihkan seluruh layar LCD, supaya siap menampilkan data suhu dan kelembapan berikutnya.
🔁 Bagian loop() — Diulang Terus-Menerus

Fungsi loop() akan dijalankan berulang-ulang tanpa henti selama Arduino menyala, persis setelah setup() selesai dijalankan sekali:

  • float kelembapan = sensorSuhu.readHumidity(); — membaca nilai kelembapan dari sensor, lalu menyimpannya ke dalam sebuah variabel (wadah penyimpan nilai) bernama kelembapan. Kata float berarti nilai yang disimpan berupa angka desimal (misalnya 60.5), bukan hanya bilangan bulat.
  • float suhuC = sensorSuhu.readTemperature(); — sama seperti di atas, tapi untuk membaca nilai suhu dalam satuan Celcius.
  • if (isnan(kelembapan) || isnan(suhuC)) { ... } — ini adalah pengecekan kesalahan (error handling). isnan() singkatan dari “is not a number”, dipakai untuk mengecek apakah pembacaan sensor gagal (misalnya karena kabel putus atau sensor rusak). Tanda || berarti “atau” — jadi kondisi ini bernilai benar jika kelembapan gagal terbaca ATAU suhu gagal terbaca. Kalau salah satu gagal, LCD akan menampilkan “SENSOR ERROR!” dan perintah return; akan menghentikan sisa kode di bawahnya untuk sementara, lalu program akan mengulang dari awal loop() lagi.
  • lcd.setCursor(0, 0); lcd.print("Suhu: "); lcd.print(suhuC); lcd.print(" C "); — menampilkan tulisan “Suhu: “, diikuti angka suhu yang baru dibaca, lalu satuan ” C” di baris pertama (atas) LCD.
  • lcd.setCursor(0, 1); lcd.print("Lembap: "); lcd.print(kelembapan); lcd.print(" % "); — sama seperti di atas, tapi menampilkan kelembapan di baris kedua (bawah) LCD, dengan satuan “%”.
  • delay(2000); — menunggu 2 detik sebelum loop() mengulang dari awal lagi dan membaca data sensor terbaru. Jeda ini penting karena sensor DHT22 tidak bisa dibaca terlalu cepat/sering (butuh waktu jeda antar pembacaan agar hasilnya akurat).

Langkah 7: Menjalankan Simulasi di Wokwi

  1. Buka project Arduino UNO di Wokwi.
  2. Pastikan komponen yang dipakai sudah benar: DHT22, LCD 16×2 I2C, breadboard, dan Arduino UNO.
  3. Pastikan library LiquidCrystal I2C dan DHT sensor library sudah muncul di Library Manager.
  4. Tempel kode dari Langkah 5 ke editor sketch.ino di Wokwi.
  5. Klik tombol Play (segitiga hijau) untuk menjalankan simulasi.

Langkah 8: Hasil yang Diharapkan

Saat simulasi baru dimulai, LCD akan menampilkan teks pembuka “ALAT PENGUKUR SUHU RUANGAN” selama 2 detik. Setelah itu, layar akan menampilkan data sensor sebagai berikut:

Baris LCD Isi Tampilan Artinya
Baris atas Suhu: (nilai) C Menampilkan suhu ruangan yang terbaca dari sensor.
Baris bawah Lembap: (nilai) % Menampilkan persentase kelembapan udara dari sensor.

Data ini akan otomatis diperbarui setiap 2 detik selama simulasi berjalan.

Langkah 9: Menguji dengan Mengubah Nilai Sensor

Salah satu keunggulan simulasi Wokwi adalah kita bisa mengubah nilai sensor secara manual untuk menguji programnya:

  1. Klik gambar komponen DHT22 pada area simulasi.
  2. Geser slider/nilai temperature untuk mengubah suhu yang “dibaca” sensor.
  3. Geser slider/nilai humidity untuk mengubah kelembapan yang “dibaca” sensor.
  4. Perhatikan angka pada LCD ikut berubah mengikuti nilai yang kamu atur — ini membuktikan bahwa program benar-benar membaca data secara real-time dari sensor, bukan angka yang ditulis tetap (hard-code) di dalam program.

Langkah 10: Mengatasi Masalah Umum (Troubleshooting)

Masalah Kemungkinan Penyebab dan Solusi
LCD kosong (tidak menampilkan apa pun) Cek kembali koneksi VCC, GND, SDA ke A4, dan SCL ke A5. Pastikan juga library LCD I2C sudah terpasang.
Teks tidak berubah-ubah Pastikan simulasi sedang berjalan (tombol Play aktif) dan sensor DHT22 tidak dalam kondisi error. Cek juga apakah delay terlalu singkat sehingga pembacaan jadi tidak stabil.
Muncul tulisan “SENSOR ERROR!” Cek pin data DHT22 sudah benar ke pin 7, VCC ke 5V, dan GND ke ground. Kesalahan wiring bisa membuat hasil pembacaan menjadi tidak valid (NaN).
Compile error (program gagal diproses) Pastikan library DHT sensor library dan LiquidCrystal I2C sudah terpasang lengkap di Library Manager.
Nilai yang tampil tidak sesuai harapan Klik komponen DHT22 di Wokwi, lalu ubah slider temperature atau humidity untuk menguji apakah perubahan data benar-benar terbaca oleh program.

Langkah 11: Ide Pengembangan Lebih Lanjut

Setelah berhasil membuat versi dasar ini, kamu bisa coba mengembangkan proyek ini lebih jauh, misalnya:

  • Menambahkan buzzer atau LED peringatan yang menyala/berbunyi saat suhu melewati batas tertentu (misalnya di atas 30°C).
  • Menyimpan data suhu dan kelembapan ke kartu memori (SD card) atau database, supaya bisa dianalisis riwayatnya.
  • Mengirim data ke dashboard IoT (Internet of Things) menggunakan board ESP32 dan koneksi internet, supaya bisa dipantau dari HP.
  • Membuat kipas otomatis yang menyala berdasarkan suhu ruangan.
  • Jika ingin dibuat menjadi alat fisik sungguhan, gunakan casing dan adaptor daya yang sesuai.
⚠️ Catatan Keamanan (klik untuk baca)

Jika suatu saat kamu membuat versi fisik (bukan sekadar simulasi) dari alat ini: gunakan catu daya (power supply) yang stabil, buat sambungan kabel yang rapi dan tidak mudah lepas, serta jangan langsung mengontrol beban listrik besar (seperti kipas AC atau alat rumah tangga bertegangan tinggi) langsung dari pin Arduino tanpa komponen pengaman tambahan seperti relay, karena bisa merusak Arduino atau membahayakan penggunanya.

Rangkuman

  • Proyek ini menggabungkan input (sensor DHT22), proses (Arduino UNO), dan output (LCD I2C) — pola dasar yang akan sering kamu temui di banyak proyek elektronika lainnya.
  • Library memudahkan kita memakai komponen rumit (seperti LCD I2C dan sensor DHT) tanpa harus menulis kode dari nol.
  • Fungsi setup() berjalan sekali di awal untuk persiapan, sedangkan loop() berjalan berulang-ulang untuk membaca data dan memperbarui tampilan.
  • Pengecekan error seperti isnan() penting supaya program tidak menampilkan data yang salah/kosong saat sensor gagal membaca.
  • Simulasi seperti Wokwi memungkinkan kita menguji dan belajar elektronika tanpa harus punya komponen fisik terlebih dahulu.

Coba Simulasi di Wokwi

🔒 Simulasi ini dikunci. Minta passcode ke gurumu untuk membuka.