Minggu, 27 September 2026

SIMULASI SISTEM PEMANTAU SUHU DAN KELEMBAPAN UDARA SECARA REAL-TIME BERBASIS ESP32, SENSOR DHT22, DAN LCD I2C

Disusun Oleh Kelompok 5:
Farel Rizky Aliansi(24051204016)
Moch Septian Yudis(24051204024)
Denny Kusuma Putra(24051204027)
Brian Fawwaz Atmajaya(24051204230)

BAB I

PENDAHALUAN

1.1 Latar Belakang

Sistem pemantauan kondisi lingkungan merupakan salah satu elemen kunci dalam pengembangan ekosistem Internet of Things (IoT). Program praktikum ini berfungsi sebagai sistem pemantau suhu dan kelembapan udara secara real-time berbasis mikrokontroler ESP32. Sensor suhu dan kelembapan digital, seperti DHT22, memberikan tingkat akurasi yang lebih tinggi dan rentang pengukuran yang lebih luas dibandingkan perangkat pembacaan analog standar. Data yang dibaca oleh sensor DHT22 lalu ditampilkan ke layar LCD 16x2 I2C serta Serial Monitor.

Sebagai bentuk representasi kondisi fisik untuk mempermudah identifikasi tanpa harus membaca angka, tingkat kelembapan udara (0 – 100%) juga divisualisasikan secara langsung melalui 5 LED indikator secara bertahap. Pembuatan laporan ini bertujuan untuk menguji kemampuan pembacaan sensor digital, penerapan komunikasi protokol I2C, serta algoritma pemetaan (mapping) persentase menjadi jumlah aktuator yang aktif secara proporsional.

1.2 Rumusan Masalah

  1. Bagaimana mengintegrasikan perangkat keras ESP32, sensor digital DHT22, layar LCD 16x2 I2C, dan rangkaian LED menjadi sebuah sistem pemantauan yang stabil?
  2. Bagaimana mengimplementasikan fungsi pembacaan data suhu dan kelembapan, serta menampilkannya melalui modul antarmuka karakter secara real-time?
  3. Bagaimana menyusun logika algoritma konversi atau pemetaan (mapping) data kelembapan persentase (0-100%) untuk divisualisasikan ke dalam matriks 5 buah LED?

1.3 Tujuan Laporan

  1. Merealisasikan rangkaian sirkuit perangkat keras dengan pengalamatan pin GPIO secara efisien pada mikrokontroler ESP32.
  2. Mengembangkan dan menguji kode program kontrol pembacaan sensor DHT22 beserta komunikasi I2C pada perangkat layar LCD 16x2.
  3. Memahami dan mengimplementasikan operasi matematis pemetaan dan pembatasan nilai (map dan constrain) untuk menggerakkan indikator visual secara dinamis.

1.4 Manfaat Penulisan

Penulisan laporan ini diharapkan dapat memberikan pemahaman komprehensif mengenai interaksi antar antarmuka perangkat keras digital (protokol tunggal One-Wire untuk transmisi data DHT22 dan Two-Wire I2C untuk sinkronisasi LCD) dengan mikrokontroler berarsitektur 32-bit. Secara teknis, praktikum ini mengasah kemampuan mahasiswa dalam menerapkan logika pemrograman yang mengonversi besaran fisis lingkungan mentah menjadi informasi visual yang interaktif (teks alfanumerik dan indikator bar graph lampu). Prototipe ini memiliki potensi implementasi nyata yang sangat luas, mulai dari perangkat smart greenhouse, monitoring stabilitas suhu rak server, hingga pemantauan ruang logistik farmasi.

BAB II

TINJAUAN PUSTAKA

2.1 Dasar Teori

A. Mikrokontroler ESP32: Sebuah mikrokontroler Sistem dalam Cip (SoC) canggih berbiaya rendah dengan memori yang mumpuni serta kecepatan prosesor (clock speed) tinggi. Memiliki arsitektur pin GPIO yang serbaguna untuk berbagai protokol (SPI, I2C, UART).

B. Sensor DHT22 (AM2302): Modul sensor digital terkalibrasi tinggi untuk mengukur kelembapan (kapasitif) dan suhu (termistor tipe-NTC). Sensor ini mengubah parameter fisis menjadi deretan pulsa digital bit-per-bit, sehingga tidak memerlukan modul ADC (Analog-to-Digital Converter) eksternal. Waktu tunggu antar-bacaan minimum adalah 2 detik.

C. Komunikasi Inter-Integrated Circuit (I2C): Protokol komunikasi serial multi-master/multi-slave yang hemat kabel. Sistem ini menggunakan arsitektur sinkron dengan hanya membutuhkan dua jalur: SDA (Serial Data Line) untuk transfer data, dan SCL (Serial Clock Line) untuk sinkronisasi detak pengiriman antar perangkat.

2.2 Komponen

No.Nama Perangkat / KomponenFungsi Utama Dalam Sistem
1.1 Unit Board ESP32Sebagai otak pemroses utama (CPU) untuk mengatur lalu lintas data sensor, memproses komputasi algoritma mapping, dan memerintahkan aktuator bekerja
2.Sensor DHT22Berfungsi sebagai perangkat input untuk mengukur besaran suhu (rentang -40 hingga 80 °C) dan kelembapan udara (rentang 0-100% RH) secara mandiri.
3.LCD 16x2 + Modul I2CSebagai perangkat keluaran (output display) alfanumerik. Modul pengembang I2C (chip PCF8574) di belakang LCD mereduksi kebutuhan pengkabelan dari 6 jalur menjadi hanya 2 jalur komunikasi.
4.5 Buah LED & ResistorBerfungsi sebagai indikator level visual (bar graph) yang merepresentasikan eskalasi nilai kelembapan (Resistor digunakan sebagai pembatas arus agar LED tidak terbakar).
5.Kabel Jumper & BreadboardSebagai jembatan sirkuit listrik (konduktor) untuk mendistribusikan jalur data (SDA/SCL) dan catu daya (VCC/GND).

BAB III

PEMBAHASAN

3.1 Penjelasan Simulasi

Simulasi pada sistem ini tidak sekadar membaca sensor, tetapi mengonversi, memvalidasi, dan menerjemahkannya ke bentuk antarmuka lain (LCD dan LED) secara simultan. Berikut adalah analisis rinci dari kode instruksinya:

Hasil simulasi

A. Library & Deklarasi Variabel (Inisialisasi Sistem)

#include <Wire.h> & <LiquidCrystal_I2C.h>: Mengatur komunikasi I2C agar LCD bisa dikontrol hanya menggunakan 2 kabel data (SDA dan SCL). Protokol I2C (biasanya berada di pin D21 untuk SDA dan D22 untuk SCL pada ESP32) sangat efisien dalam mereduksi kepadatan kabel.

#include <DHT.h>: Menyediakan fungsi bawaan untuk membaca data dari sensor DHT. Pustaka ini menangani timing sinyal digital mikrodetik yang dikirimkan oleh pin data sensor secara otomatis.

DHT dht(15, DHT22): Menentukan bahwa sensor DHT22 terhubung ke pin GPIO 15. Pin ini terhubung ke mikrokontroler menggunakan resistansi internal/eksternal pull-up untuk menjaga stabilitas sinyal data.

LiquidCrystal_I2C lcd(0x27, 16, 2): Menginisialisasi modul LCD I2C pada alamat 0x27 dengan ukuran 16 kolom dan 2 baris. Alamat heksadesimal 0x27 adalah alamat memori identitas standar bawaan pabrik untuk chip IC I2C PCF8574 (bisa bervariasi ke 0x3F pada model chip tertentu).

ledPins[] = {18, 19, 4, 16, 17}: Menyimpan urutan pin GPIO untuk kelima LED indikator. Mendeklarasikannya ke dalam bentuk struktur Array akan mempermudah pemrograman dalam penyusunan perulangan.

B. Fungsi setup() (Konfigurasi Satu-Kali

Blok ini hanya dieksekusi satu kali saat ESP32 pertama kali dinyalakan:

Serial.begin(115200): Mengaktifkan komunikasi serial ke komputer pada kecepatan 115200 baud. Angka 115200 bit per detik (baud rate) direkomendasikan pada board arsitektur ESP32 agar sinkronisasi serial debugging berjalan cepat dan tidak terpotong.

dht.begin() & lcd.init(): Mengaktifkan sensor DHT22 dan menyiapkan layar LCD beserta lampu latarnya (lcd.backlight()).

Perulangan pinMode: Mengatur seluruh pin pada array ledPins[] agar berfungsi sebagai OUTPUT. Penggunaan perulangan loop for ini sangat menghemat memori baris program karena 5 pin dikonfigurasi tanpa harus menulis instruksi berulang secara manual.

Tampilan Pembuka: Menampilkan teks pembuka "Sistem Monitoring DHT22 + 5 LED..." di LCD selama 2 detik sebelum layar dibersihkan. Durasi ini krusial untuk memberikan waktu bagi mikrokontroler di dalam modul DHT22 itu sendiri agar stabil menerima tegangan listrik sebelum pembacaan pertamanya ditarik.

C. Fungsi loop() (Siklus Berkelanjutan)

Blok ini berjalan terus-menerus secara berulang:

Pembacaan Data: dht.readHumidity() membaca persentase kelembapan dan dht.readTemperature() membaca nilai suhu dalam Celsius. Data dikonversi ke dalam variabel tipe float karena pembacaan cuaca berupa angka pecahan desimal, bukan bilangan bulat kaku.

Pengecekan Eror: Fungsi isnan() mengecek apakah pembacaan sensor gagal. Jika data tidak valid, LCD langsung menampilkan "Sensor Error!" dan siklus loop() dihentikan sementara lewat perintah return. Kegagalan Not a Number (NaN) bisa terjadi apabila tegangan tiba-tiba tidak stabil atau durasi pembacaan terlalu cepat.

Output LCD & Serial: Suhu ditampilkan pada baris atas LCD lengkap dengan simbol derajat via (char)223, sedangkan kelembapan ditampilkan pada baris bawah. Data yang sama juga dikirim ke Serial Monitor. (char)223 adalah cara programmer memanggil font mapping derajat pada memori ROM bawaan LCD (ASCII Extended). Fungsi print(suhu, 1) mengatur format bilangan yang dikirimkan ke layar menjadi satu angka di belakang koma.

delay(2000): Memberikan jeda pembacaan 2 detik agar sesuai dengan kestabilan respon sensor DHT22. Berbeda dengan modul analog yang bisa diakses seketika, DHT22 memiliki recovery time (waktu pemulihan data sensorik) minimum sekitar 2 detik.

D. Logika Visualisasi LED (Algoritma Bar-Graph)

map((int)kelembapan, 0, 100, 0, 5): Mengonversi nilai kelembapan dari rentang 0 – 100% menjadi skala 0 – 5 LED. Fungsi map() ini menggunakan interpolasi linear matematis. Sebagai ilustrasi, jika kelembapan udara berada di angka 60%, sistem secara proporsional akan mengonversinya menjadi angka 3 (yang berarti jatah 3 lampu LED akan aktif).

constrain(..., 0, 5): Memastikan nilai batas hasil konversi tidak pernah berkurang dari 0 atau melebihi 5. Ini adalah teknik fail-safe pengaman logika. Seandainya terjadi anomali kelistrikan di mana sensor secara tidak masuk akal mengirimkan nilai kelembapan "110%", nilai konversinya akan dipotong secara statis (clipped) agar tidak melewati batas 5 (mencegah eror memori pin array).

Perulangan digitalWrite: Mengecek setiap LED dari indeks 0 sampai 4. Jika indeks LED lebih kecil dari jumlahLEDNyala, maka pin diberi sinyal HIGH (nyala). Jika tidak, pin diberi sinyal LOW (mati). Baris ini menggunakan bentuk if-else satu baris yang disebut Ternary Operator (kondisi)? (benar): (salah). Sistem memeriksa satu-per-satu dari lampu LED 1 hingga 5, untuk mencocokkannya dengan besaran kelembapan cuaca.

3.2 Program

Berikut adalah kode program lengkap yang digunakan dalam proyek implementasi sistem IoT ini:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 15
#define DHTTYPE DHT22
// Inisialisasi object untuk DHT dan LCD I2C
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Array untuk menyimpan pin GPIO dari 5 buah indikator LED
const int ledPins[] = {18, 19, 4, 16, 17};
const int totalLeds = 5;
void setup() {
  Serial.begin(115200); // Kecepatan debugging ESP32
  dht.begin();
  lcd.init();
  lcd.backlight();
  // Konfigurasi pin array sebagai output
  for (int i = 0; i < totalLeds; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
  // Jeda inisialisasi stabilitas sensor
  lcd.setCursor(0, 0);
  lcd.print("Sistem Monitoring");
  lcd.setCursor(0, 1);
  lcd.print("DHT22 + 5 LED...");
  delay(2000);
  lcd.clear();
}
void loop() {
  // Pengambilan tipe data pecahan dari library sensor
  float kelembapan = dht.readHumidity();
  float suhu = dht.readTemperature();
  // Validasi error jika sensor dicabut atau rusak (NaN)
  if (isnan(kelembapan) || isnan(suhu)) {
    Serial.println("Gagal membaca sensor DHT22!");
    lcd.setCursor(0, 0);
    lcd.print("Sensor Error!   ");
    return;
  }
  // Pengiriman log ke port serial monitor PC
  Serial.print("Suhu: ");
  Serial.print(suhu);
  Serial.print(" C | Kelembapan: ");
  Serial.print(kelembapan);
  Serial.println(" %");
  // Output antarmuka pada baris atas LCD (Suhu)
  lcd.setCursor(0, 0);
  lcd.print("Suhu: ");
  lcd.print(suhu, 1);
  lcd.print((char)223); // Memanggil ASCII ROM untuk simbol derajat (°)
  lcd.print("C   ");
  // Output antarmuka pada baris bawah LCD (Kelembapan)
  lcd.setCursor(0, 1);
  lcd.print("Lembap: ");
  lcd.print(kelembapan, 1);
  lcd.print("%   ");
  // Proses interpolasi mapping dan batasan keamanan batas (clipping)
  int jumlahLEDNyala = map((int)kelembapan, 0, 100, 0, totalLeds);
  jumlahLEDNyala = constrain(jumlahLEDNyala, 0, totalLeds);
  // Eksekusi penyalaan lampu via Ternary Operator (Bar graph representation)
  for (int i = 0; i < totalLeds; i++) {
    digitalWrite(ledPins[i], (i < jumlahLEDNyala) ? HIGH : LOW);
  }
  // Waktu siklus tunda yang diwajibkan oleh arsitektur sensor DHT22
  delay(2000);
}

BAB IV

PENUTUP

4.1 Kesimpulan

Berdasarkan implementasi kode dan skema perangkat keras, simulasi pemantauan lingkungan telah berjalan sesuai parameter yang diharapkan. Mikrokontroler berbasis arsitektur ESP32 berhasil mengeksekusi instruksi pembacaan dan parsing (pemisahan parameter suhu dan kelembapan) pada sensor digital DHT22 secara presisi. Transmisi nilai ke modul LCD 16x2 melalui komunikasi dua jalur bus data I2C bekerja tanpa hambatan siklus atau penumpukan karakter statis.

Di sisi lain, integrasi instruksi komputasi matematika linear menggunakan fungsi bawaan mikrokontroler (map() dan constrain()) terbukti sangat krusial. Algoritma ini memungkinkan sistem untuk menciptakan instrumen visualisasi dinamis berupa susunan indikator menyala secara proporsional. Dengan ini, besaran nilai taktil persentase kelembapan udara dapat dipetakan secara nyata menjadi nyala lampu (dari level 0 hingga 5 LED indikator), menciptakan pemantauan pandangan sekilas yang intuitif.

4.2 Saran

Untuk optimalisasi dan pengembangan sistem pemantauan di masa mendatang, terdapat beberapa saran yang dapat dipertimbangkan:

Meningkatkan ke Arsitektur IoT (Internet of Things): ESP32 pada dasarnya diciptakan sebagai chip konektivitas. Amat direkomendasikan agar sistem ini dirangkai menggunakan modul pustaka <WiFi.h> sehingga pemantauan suhu ruangan dan persentase kelembapan lingkungan dapat direkam (logging) di pangkalan data internet (seperti server web, MQTT, atau aplikasi pengawasan gawai Android).

Pemanfaatan Pengatur Waktu Asinkron (Asynchronous Multitasking): Fungsi jeda statis (blocking delay) delay(2000) menghentikan eksekusi perulangan baris kode (membekukan kontroler selama dua detik penuh). Jika sistem kelak digabung dengan sensor lain atau sistem Push Button, program tersebut sebaiknya diganti dengan pengkondisian millis(). Ini akan membentuk eksekusi kontrol asinkron agar perintah lain bisa berjalan paralel saat sensor DHT memulihkan dayanya.

BAB V

DAFTAR PUSTAKA

Espressif Systems. (2023). ESP32 Series Datasheet and Specifications. Espressif Systems.

Susanto, A., dkk. (2024). "Implementasi Sistem Pemantauan Cuaca Lingkungan Berbasis Mikrokontroler dan Modul Tampilan Digital". Jurnal Rekayasa Elektro dan IoT, 12(1).

Majumdar, R. (2021). Sensor Technology and Internet of Things Architecture. Springer.

BAB VI

LAMPIRAN

Link Video:

Tidak ada komentar:

Posting Komentar