Minggu, 27 September 2026

Implementasi Sistem Monitoring Suhu dan Kelembapan Berbasis Arduino Uno dengan Sensor DHT22, LCD 16x2 I2C, dan Alarm Ambang Batas


LAPORAN PRAKTIKUM

Implementasi Sistem Monitoring Suhu dan Kelembapan Berbasis Arduino Uno dengan Sensor DHT22, LCD 16x2 I2C, dan Alarm Ambang Batas



Disusun oleh:

Ubaidillah Maulidul Ula                     24051204115

Ali Syava Ramadhan                          24051204121

Georvin Octianno                               24051204185

Adie Tirta Satria                                 24051204108





BAB I

PENDAHULUAN

1.1  Latar Belakang

Pemantauan suhu dan kelembapan secara manual seringkali tidak efisien, terutama pada ruang server, laboratorium, atau gudang penyimpanan yang membutuhkan kondisi lingkungan stabil. Fluktuasi suhu yang ekstrem dapat merusak perangkat elektronik maupun bahan tertentu. Oleh karena itu, diperlukan sistem monitoring otomatis yang mampu membaca kondisi lingkungan secara real-time dan memberikan peringatan dini ketika terjadi kondisi abnormal.

Arduino Uno sebagai platform mikrokontroler yang populer dapat diintegrasikan dengan sensor digital DHT22 untuk mengukur suhu dan kelembapan. Data hasil pengukuran ditampilkan pada LCD 16x2 I2C dan disertai alarm buzzer ketika suhu melampaui ambang batas. Praktikum ini menggunakan simulator Wokwi agar pengujian dapat dilakukan secara virtual tanpa memerlukan perangkat keras fisik.

1.2  Tujuan

  1. Merancang sistem monitoring suhu dan kelembapan berbasis Arduino Uno dengan sensor DHT22.
  2. Mengimplementasikan komunikasi I2C antara Arduino Uno dan LCD 16x2.
  3. Menerapkan logika ambang batas (threshold) pada program untuk mengaktifkan buzzer sebagai sistem peringatan.
  4. Menguji kinerja sistem pada simulator Wokwi dalam berbagai skenario kondisi suhu dan kelembapan.



BAB II
TINJAUAN PUSTAKA

2.1 Dasar Teori

2.1.1 Sistem Monitoring Suhu dan Kelembapan

Sistem monitoring merupakan suatu sistem yang digunakan untuk melakukan proses pengukuran, pengumpulan, dan penyajian data dari suatu kondisi tertentu secara berkala. Pada bidang elektronika dan Internet of Things (IoT), sistem monitoring banyak digunakan untuk mengetahui perubahan kondisi lingkungan secara real-time menggunakan sensor dan mikrokontroler. 

Suhu dan kelembapan merupakan dua parameter lingkungan yang sering dipantau karena dapat memengaruhi berbagai aktivitas, seperti kenyamanan ruangan, penyimpanan barang, pertanian, dan sistem otomatisasi. Pengukuran suhu dilakukan untuk mengetahui tingkat panas atau dinginnya suatu lingkungan, sedangkan kelembapan digunakan untuk mengetahui jumlah kandungan uap air di udara.

Pada sistem monitoring ini, proses pengukuran dilakukan menggunakan sensor DHT22 yang mengirimkan data menuju mikrokontroler Arduino UNO. Data hasil pembacaan kemudian diproses dan ditampilkan melalui layar LCD 16x2 sehingga pengguna dapat mengetahui kondisi lingkungan secara langsung.

2.1.2 Mikrokontroler dan Sistem Embedded

Mikrokontroler merupakan sebuah perangkat elektronik yang memiliki fungsi sebagai pusat pengendali suatu sistem. Mikrokontroler terdiri dari unit pemrosesan, memori, serta pin input dan output yang dapat digunakan untuk berkomunikasi dengan berbagai perangkat elektronik.

Sistem embedded merupakan sistem komputer khusus yang dirancang untuk melakukan fungsi tertentu dengan menggabungkan perangkat keras dan perangkat lunak. Dalam penerapannya, mikrokontroler digunakan untuk membaca data dari sensor, melakukan proses pengolahan, serta mengendalikan perangkat keluaran.

Pada proyek ini, Arduino UNO digunakan sebagai mikrokontroler utama yang bertugas membaca data dari sensor DHT22, mengolah nilai suhu dan kelembapan, kemudian menampilkan hasil pengukuran pada LCD 16x2 I2C.

2.1.3 Sensor Digital DHT22

Sensor DHT22 merupakan sensor digital yang digunakan untuk mengukur temperatur dan kelembapan udara. Sensor ini mampu menghasilkan data dalam bentuk digital sehingga dapat langsung diproses oleh mikrokontroler.

Sensor DHT22 memiliki dua parameter utama, yaitu:

  1. Temperatur, menunjukkan tingkat panas atau dinginnya suatu lingkungan dengan satuan derajat Celsius (°C).
  2. Kelembapan relatif (Relative Humidity), menunjukkan jumlah kandungan uap air di udara dengan satuan persen (%RH).

Dalam sistem ini, DHT22 berperan sebagai perangkat input yang melakukan pembacaan kondisi lingkungan dan mengirimkan data tersebut ke Arduino UNO.

2.1.4 Komunikasi I2C

I2C (Inter-Integrated Circuit) merupakan metode komunikasi serial yang digunakan untuk menghubungkan mikrokontroler dengan perangkat elektronik lainnya menggunakan dua jalur komunikasi utama, yaitu SDA dan SCL.

Pin SDA berfungsi sebagai jalur pengiriman data, sedangkan pin SCL berfungsi sebagai jalur pengatur waktu komunikasi (clock). Penggunaan komunikasi I2C memungkinkan perangkat seperti LCD dapat terhubung dengan mikrokontroler menggunakan jumlah pin yang lebih sedikit.

Pada proyek ini, komunikasi I2C digunakan untuk menghubungkan Arduino UNO dengan LCD 16x2 agar data hasil pembacaan sensor dapat ditampilkan pada layar.

2.1.5 Simulator Wokwi

Wokwi merupakan platform simulasi elektronik yang digunakan untuk merancang dan menguji sistem berbasis mikrokontroler secara virtual. Melalui Wokwi, pengguna dapat membuat rangkaian elektronik, memasukkan kode program, serta menjalankan simulasi tanpa menggunakan perangkat fisik secara langsung.

Penggunaan simulator Wokwi pada praktikum ini bertujuan untuk menguji hubungan antara Arduino UNO, sensor DHT22, dan LCD 16x2. Simulasi ini membantu memastikan rangkaian dan program dapat berjalan dengan baik sebelum dilakukan implementasi menggunakan komponen sebenarnya.

2.2 Komponen

Pada simulasi sistem monitoring suhu dan kelembapan ini digunakan beberapa komponen utama yang memiliki fungsi berbeda dalam proses pengambilan, pengolahan, dan penyajian data.

2.2.1 Arduino UNO

Gambar 2.1 Arduino UNO

 

Arduino UNO merupakan mikrokontroler yang digunakan sebagai pusat pengendali sistem. Arduino UNO memiliki kemampuan untuk membaca data dari sensor, melakukan proses pengolahan melalui program Arduino, serta mengirimkan data menuju perangkat output. Pada simulasi ini, Arduino UNO berfungsi untuk:

  1. Menerima data suhu dan kelembapan dari sensor DHT22, Mengolah data hasil pembacaan sensor,
  2. Mengirimkan informasi ke layar LCD 16x2.

2.2.2 Sensor DHT22

Gambar 2.2 Sensor DHT22

 

DHT22 merupakan sensor digital yang digunakan untuk membaca nilai suhu dan kelembapan lingkungan. Fungsi sensor DHT22 dalam sistem:

  1. Mengukur temperatur udara (°C),
  2. Mengukur kelembapan udara (%RH),
  3. Mengirimkan hasil pengukuran ke Arduino UNO.
  4. Sensor ini dipilih karena memiliki komunikasi digital sehingga mudah dihubungkan dengan mikrokontroler.

 

2.2.3 LCD 16x2 I2C

Gambar 2.3 LCD 16x2 I2C

LCD 16x2 I2C merupakan modul layar yang digunakan sebagai media tampilan informasi. Modul ini memiliki resolusi 16 × 2 karakter dan menggunakan komunikasi I2C. Fungsi LCD dalam sistem:

  1. Menampilkan nilai temperatur,
  2. Menampilkan nilai kelembapan,
  3. Memberikan informasi hasil monitoring kepada pengguna.

2.2.4 Buzzer

Gambar 2.4 Buzzer

Buzzer merupakan komponen output yang menghasilkan suara untuk alarm sistem. Pada sistem ini, buzzer berfungsi untuk memberikan peringatan kepada pengguna ketika kondisi tidak normal. Buzzer terhubung ke pin GPIO 13 pada Arduino UNO dan dikontrol melalui fungsi tone() dan noTone().

2.2.5 Kabel Penghubung (Jumper Wire)

Gambar 2.5 Kabel Penghubung

Kabel jumper digunakan untuk menghubungkan antar komponen elektronik sehingga dapat terjadi komunikasi dan aliran tegangan. Pada simulasi ini kabel digunakan untuk menghubungkan:

  1. Arduino UNO dengan sensor DHT22,
  2. Arduino UNO dengan LCD 16x2 I2C.

2.2.6 Platform Wokwi

Wokwi digunakan sebagai media simulasi rangkaian elektronik. Platform ini memungkinkan proses perancangan, pemrograman, dan pengujian sistem dilakukan secara virtual. Dalam proyek ini, Wokwi digunakan untuk:

  1. Membuat rangkaian Arduino UNO,
  2. Melakukan konfigurasi sensor dan LCD,
  3. Menjalankan program Arduino,
  4. Melihat hasil tampilan monitoring.

 

BAB III
PEMBAHASAN

Gambaran Umum Sistem

Sistem yang dibangun merupakan purwarupa alat pemantau kondisi lingkungan yang bekerja secara otomatis dan berkelanjutan. Secara konseptual, sistem ini tersusun atas tiga blok fungsional yang saling terhubung, yaitu blok masukan, blok pemrosesan, dan blok keluaran.

Blok masukan diwakili oleh sensor DHT22 yang bertugas mengukur suhu dan kelembapan relatif udara di sekitarnya, kemudian mengirimkan hasil pengukuran dalam bentuk data digital melalui satu jalur komunikasi. Blok pemrosesan diperankan oleh mikrokontroler ATmega328P pada papan Arduino Uno yang menerima data tersebut, memvalidasi keabsahannya, memformatnya menjadi teks yang siap ditampilkan, serta membandingkan nilai suhu terhadap ambang batas yang telah ditetapkan. Blok keluaran terdiri atas dua elemen dengan peran yang berbeda: modul LCD 16×2 berantarmuka I2C sebagai penampil informasi kuantitatif secara waktu nyata, dan buzzer piezoelektrik sebagai pemberi peringatan audio ketika kondisi abnormal terdeteksi.

Alur kerja sistem berlangsung sebagai berikut. Setelah papan dinyalakan, program melakukan inisialisasi terhadap seluruh peranti dan menampilkan pesan pembuka selama 1,5 detik. Selanjutnya sistem memasuki siklus utama yang berjalan tanpa henti, yaitu membaca data sensor, memeriksa keabsahan data, menampilkan suhu pada baris pertama dan kelembapan pada baris kedua LCD, lalu mengevaluasi apakah suhu terukur telah melampaui 35,0 °C. Apabila ambang tersebut terlampaui, buzzer dibunyikan secara berulang dengan pola bip-bip; apabila tidak, buzzer dipastikan padam dan sistem menunggu satu detik sebelum melakukan pembacaan berikutnya.

3.2  Perancangan Perangkat Keras

3.2.1  Komponen yang Digunakan

Komponen yang menyusun sistem beserta peranannya masing-masing dirangkum pada Tabel 3.1.

Tabel 3.1  Daftar komponen penyusun sistem

No

Komponen

Jumlah

Fungsi dalam Sistem

1

Arduino Uno (ATmega328P)

1 buah

Pengendali utama; membaca sensor, mengolah logika ambang batas, dan mengendalikan perangkat keluaran

2

Sensor DHT22 (AM2302)

1 buah

Mengukur suhu udara dan kelembapan relatif, mengirimkan hasilnya dalam bentuk data digital

3

Modul LCD 16×2 I2C

1 buah

Menampilkan nilai suhu dan kelembapan secara waktu nyata kepada pengguna

4

Buzzer piezoelektrik

1 buah

Menghasilkan peringatan audio ketika suhu melampaui ambang batas

5

Kabel penghubung

9 jalur

Menghubungkan seluruh komponen dengan papan Arduino

3.2.2  Skematik Rangkaian

Rangkaian sistem disusun pada kanvas simulator Wokwi sebagaimana ditampilkan pada Gambar 3.1. Pengkabelan dibedakan berdasarkan warna untuk memudahkan penelusuran, yaitu kabel merah untuk jalur catu daya positif, kabel hitam untuk jalur ground, dan kabel hijau untuk jalur data maupun sinyal.

Gambar 3.1  Skematik rangkaian sistem pada simulator Wokwi

3.2.3  Konfigurasi Pin dan Pengkabelan

Pemetaan sambungan antara setiap pin komponen dengan pin pada papan Arduino Uno dirinci pada Tabel 3.2. Konfigurasi ini mengacu langsung pada bagian connections dalam berkas diagram.json.

Tabel 3.2  Konfigurasi pin dan pengkabelan sistem

No

Komponen

Pin Komponen

Pin Arduino

Fungsi Sambungan

1

Sensor DHT22

VCC

3.3V

Catu daya sensor

2

Sensor DHT22

SDA (DATA)

D2

Jalur data digital single-wire

3

Sensor DHT22

GND

GND

Referensi ground

4

LCD 16×2 I2C

VCC

5V

Catu daya modul dan lampu latar

5

LCD 16×2 I2C

GND

GND

Referensi ground

6

LCD 16×2 I2C

SDA

A4

Jalur data I2C

7

LCD 16×2 I2C

SCL

A5

Jalur detak (clock) I2C

8

Buzzer

Terminal (+)

D13

Sinyal keluaran nada dari tone()

9

Buzzer

Terminal (−)

GND

Referensi ground

Terdapat dua keputusan perancangan pada tabel di atas yang perlu memperoleh penjelasan. Pertama, sensor DHT22 dicatu dari pin 3,3 V dan bukan dari pin 5 V. Keputusan ini sah secara teknis karena lembar data DHT22 mencantumkan rentang tegangan kerja 3,3–6 V DC, sementara konsumsi arus sensor yang hanya 1–1,5 mA jauh berada di bawah kemampuan hantar pin 3,3 V Arduino Uno yang mencapai 50 mA. Tingkat logika tinggi sebesar 3,3 V yang dihasilkan sensor juga masih melampaui ambang tegangan masukan tinggi ATmega328P, sehingga data tetap terbaca dengan benar.

Kedua, buzzer dihubungkan ke pin digital 13. Pin ini secara internal terhubung dengan LED bawaan papan Arduino Uno melalui sebuah resistor. Akibatnya, setiap kali buzzer berbunyi, LED bawaan akan ikut berkedip mengikuti pola bunyi. Efek sampingan ini justru menguntungkan karena memberikan indikator visual tambahan tanpa memerlukan komponen tambahan.

3.2.4  Analisis Kebutuhan Daya

Estimasi konsumsi arus keseluruhan sistem diperlukan untuk memastikan catu daya yang digunakan memadai. Papan Arduino Uno sendiri menyerap sekitar 45 mA, sensor DHT22 menyerap 1–1,5 mA saat pengukuran, modul LCD dengan lampu latar aktif menyerap sekitar 20–25 mA, dan buzzer piezoelektrik menyerap arus yang relatif kecil karena sifat bebannya yang kapasitif. Dengan demikian, total konsumsi arus sistem berada pada kisaran 70–90 mA. Nilai ini masih jauh di bawah batas 500 mA yang dapat disediakan oleh antarmuka USB, sehingga catu daya melalui kabel USB sudah mencukupi untuk mengoperasikan seluruh sistem.

3.3  Perancangan Perangkat Lunak

3.3.1  Diagram Alir Program

Alur eksekusi program secara keseluruhan digambarkan pada Gambar 3.2. Diagram tersebut memperlihatkan dua titik percabangan, yaitu pemeriksaan keabsahan data sensor dan pemeriksaan ambang batas suhu, serta jalur pengulangan yang menjadikan proses pemantauan berlangsung terus-menerus.

Gambar 3.2  Diagram alir program sistem monitoring suhu dan kelembapan

3.3.2  Pustaka dan Deklarasi Awal

Bagian awal program memuat pemanggilan pustaka, pendefinisian konstanta, dan pembuatan objek untuk setiap peranti sebagaimana ditampilkan pada potongan program berikut.

#include <DHT.h>

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

 

#define DHTPIN 2         // Pin data DHT22

#define DHTTYPE DHT22    // Tipe sensor

#define BUZZER_PIN 13    // Pin buzzer

 

DHT dht(DHTPIN, DHTTYPE);

LiquidCrystal_I2C lcd(0x27, 16, 2);

 

Kode Program 3.1  Pemanggilan pustaka dan deklarasi awal

Penggunaan direktif #define untuk nomor pin merupakan praktik yang baik karena nilai tersebut diganti pada tahap prapemrosesan sehingga tidak memakan memori SRAM, sekaligus memudahkan perubahan konfigurasi pin di kemudian hari cukup dengan menyunting satu baris. Objek dht dibentuk dengan dua argumen berupa nomor pin dan tipe sensor, sedangkan objek lcd dibentuk dengan tiga argumen berupa alamat I2C 0x27, jumlah kolom 16, dan jumlah baris 2. Alamat 0x27 sesuai dengan alamat bawaan ekspander PCF8574T yang digunakan pada komponen LCD tersimulasi di Wokwi.

3.3.3  Fungsi setup()

Fungsi setup() dieksekusi satu kali ketika papan mulai menyala dan berisi seluruh proses inisialisasi sistem.

void setup() {

  Serial.begin(9600);

  dht.begin();          // Inisialisasi sensor DHT22

  lcd.init();           // Inisialisasi LCD I2C

  lcd.backlight();      // Nyalakan lampu latar

  pinMode(BUZZER_PIN, OUTPUT);

 

  lcd.setCursor(0, 0);

  lcd.print("Sistem Memulai..");

  delay(1500);

  lcd.clear();

}

 

Kode Program 3.2  Fungsi setup() untuk inisialisasi sistem

Urutan inisialisasi pada fungsi ini telah tepat. Komunikasi serial dibuka terlebih dahulu pada laju 9600 bps, disusul inisialisasi sensor dan LCD, lalu penetapan pin buzzer sebagai keluaran melalui pinMode(). Pemanggilan lcd.backlight() bersifat wajib karena tanpanya lampu latar tetap padam sehingga teks pada layar tidak terbaca. Penampilan pesan “Sistem Memulai..” selama 1,5 detik berfungsi sebagai umpan balik visual yang menandakan bahwa sistem telah menyala dan siap beroperasi, kemudian layar dibersihkan agar tidak menyisakan karakter dari pesan tersebut.

3.3.4  Pembacaan dan Validasi Data Sensor

Bagian pertama fungsi loop() menangani akuisisi data dan pemeriksaan keabsahannya.

float temp = dht.readTemperature();

float hum  = dht.readHumidity();

 

if (isnan(temp) || isnan(hum)) {

  lcd.setCursor(0, 0);

  lcd.print("Error Sensor!");

  return;

}

 

Kode Program 3.3  Pembacaan dan validasi data sensor

Fungsi readTemperature() dan readHumidity() mengembalikan nilai bertipe float. Apabila komunikasi dengan sensor gagal, misalnya karena kabel terputus atau checksum tidak cocok, kedua fungsi tersebut mengembalikan nilai NaN (Not a Number). Pemeriksaan menggunakan isnan() karena nilai NaN memiliki sifat khusus, yaitu tidak pernah sama dengan nilai apa pun termasuk dirinya sendiri, sehingga tidak dapat diperiksa dengan operator pembanding biasa. Pernyataan return menghentikan iterasi loop() saat itu juga dan memulai iterasi berikutnya, sehingga proses penampilan data dan evaluasi alarm dilewati ketika data yang diperoleh tidak sahih.

3.3.5  Penampilan Data pada LCD

Apabila data dinyatakan sahih, program melanjutkan proses penampilan nilai suhu pada baris pertama dan kelembapan pada baris kedua.

lcd.setCursor(0, 0);

lcd.print("Suhu   : ");

lcd.print(temp, 1);      // 1 angka di belakang koma

lcd.print((char)223);    // Simbol derajat

lcd.print("C  ");

 

lcd.setCursor(0, 1);

lcd.print("Lembap : ");

lcd.print(hum, 1);

lcd.print("%  ");

 

Kode Program 3.4  Penampilan data suhu dan kelembapan ke LCD

Argumen kedua bernilai 1 pada lcd.print(temp, 1) menetapkan jumlah angka di belakang koma menjadi satu digit, sesuai dengan resolusi sensor sebesar 0,1 °C. Nilai (char)223 memanggil simbol derajat dari peta karakter HD44780 sebagaimana dijelaskan pada Subbab 2.5.

Terdapat satu teknik penting yang diterapkan pada potongan program ini, yaitu penambahan dua spasi di akhir string "C  " dan "%  ". Program ini sengaja tidak memanggil lcd.clear() di dalam loop(), melainkan menimpa karakter lama dengan spasi. Pendekatan ini dipilih karena lcd.clear() memerlukan waktu eksekusi yang relatif lama dan menyebabkan layar berkedip pada setiap pembaruan. Dengan menambahkan spasi di akhir, sisa karakter dari pembacaan sebelumnya yang lebih panjang, misalnya ketika nilai berubah dari 35.1 menjadi 9.8, akan tertimpa sehingga tidak menyisakan karakter yang menyesatkan. Teknik ini merupakan praktik yang tepat dalam pemrograman penampil karakter.

3.3.6  Logika Alarm Ambang Batas

Bagian terakhir fungsi loop() memuat inti dari sistem peringatan, yaitu pembandingan suhu terhadap ambang batas dan pengendalian buzzer.

if (temp > 35.0) {

  tone(BUZZER_PIN, 1000);  // Bunyi nada 1000 Hz

  delay(150);            // Tahan bunyi

  noTone(BUZZER_PIN);    // Matikan

  delay(150);            // Jeda (efek bip-bip)

} else {

  noTone(BUZZER_PIN);    // Pastikan buzzer padam

  delay(1000);           // Jeda pembacaan

}

 

Kode Program 3.5  Logika alarm berbasis ambang batas suhu

Struktur percabangan if-else membagi perilaku sistem ke dalam dua keadaan yang saling eksklusif. Pada keadaan siaga (suhu melampaui 35,0 °C), buzzer dibunyikan pada frekuensi 1000 Hz selama 150 milidetik, dipadamkan, lalu diberi jeda 150 milidetik sebelum iterasi berikutnya. Pola ini menghasilkan bunyi bip-bip terputus-putus dengan periode 300 milidetik yang secara psikoakustik lebih efektif menarik perhatian dibandingkan bunyi menerus. Frekuensi 1000 Hz dipilih karena berada pada rentang sensitivitas pendengaran manusia yang optimal.

Pada keadaan normal, pemanggilan noTone() tetap dilakukan meskipun buzzer sebenarnya sudah padam. Pemanggilan yang bersifat idempoten ini merupakan praktik defensif yang menjamin buzzer tidak tertinggal dalam keadaan berbunyi apabila suhu turun tepat setelah tone() dipanggil. Jeda 1000 milidetik pada keadaan normal berfungsi mengatur laju pembaruan tampilan agar angka pada layar tidak berubah terlalu cepat sehingga tetap nyaman dibaca.

3.4  Pengujian Sistem

3.4.1  Skenario dan Prosedur Pengujian

Pengujian dilakukan pada simulator Wokwi dengan cara menjalankan simulasi, kemudian mengklik komponen DHT22 pada kanvas untuk membuka panel pengaturan dan mengubah nilai suhu serta kelembapan secara manual. Skenario pengujian disusun untuk mencakup tiga kelompok kondisi, yaitu kondisi normal di bawah ambang batas, kondisi batas di sekitar nilai 35,0 °C, dan kondisi siaga di atas ambang batas. Satu skenario tambahan disiapkan untuk menguji mekanisme penanganan galat dengan cara memutuskan sambungan jalur data sensor.

Pengamatan dilakukan terhadap tiga aspek, yaitu kesesuaian teks pada baris pertama LCD, kesesuaian teks pada baris kedua LCD, dan keadaan buzzer apakah berbunyi atau padam. Nilai bawaan yang tertera pada berkas diagram.json adalah suhu 38,4 °C dan kelembapan 43%, yang secara sengaja ditetapkan di atas ambang batas agar kondisi alarm dapat langsung teramati ketika simulasi pertama kali dijalankan.

3.4.2  Hasil Pengujian

Hasil pengamatan dari seluruh skenario pengujian disajikan pada Tabel 3.3.

Tabel 3.3  Hasil pengujian sistem pada simulator Wokwi

No

Suhu Uji (°C)

RH Uji (%)

Tampilan LCD

Buzzer

Keterangan

1

25,0

60

Suhu   : 25.0°C

Lembap : 60.0%

Padam

Kondisi normal

2

30,0

55

Suhu   : 30.0°C

Lembap : 55.0%

Padam

Kondisi normal

3

34,9

50

Suhu   : 34.9°C

Lembap : 50.0%

Padam

Batas bawah, tepat di bawah ambang

4

35,0

48

Suhu   : 35.0°C

Lembap : 48.0%

Padam

Tepat pada ambang; kondisi > 35.0 belum terpenuhi

5

35,1

45

Suhu   : 35.1°C

Lembap : 45.0%

Berbunyi

Batas atas, alarm mulai aktif

6

38,4

43

Suhu   : 38.4°C

Lembap : 43.0%

Berbunyi

Nilai bawaan pada diagram.json

7

50,0

30

Suhu   : 50.0°C

Lembap : 30.0%

Berbunyi

Kondisi suhu ekstrem

8

Jalur data diputus

–

Error Sensor!

(nilai lama bertahan)

Padam

Uji penanganan galat sensor

3.4.3  Pembahasan Hasil Pengujian

Berdasarkan Tabel 3.3, seluruh skenario memberikan hasil yang sesuai dengan rancangan. Pengujian nomor 1 hingga 3 menunjukkan bahwa pada kondisi normal, data suhu dan kelembapan berhasil ditampilkan dengan format yang benar dan buzzer tetap padam. Pengujian nomor 5 hingga 7 memperlihatkan bahwa alarm aktif secara konsisten pada setiap nilai suhu di atas ambang batas.

Pengujian nomor 4 memperoleh perhatian khusus karena menguji perilaku sistem tepat pada nilai ambang. Pada suhu 35,0 °C, buzzer tetap padam. Hasil ini sesuai dengan penggunaan operator lebih besar (>) dan bukan operator lebih besar atau sama dengan (>=) pada program, sehingga nilai 35,0 °C masih dikategorikan sebagai kondisi aman. Perbedaan perilaku antara pengujian nomor 4 dan nomor 5 yang hanya terpaut 0,1 °C membuktikan bahwa logika pembandingan bekerja dengan presisi sesuai resolusi sensor.

Pengujian nomor 8 menunjukkan bahwa mekanisme penanganan galat berfungsi. Ketika jalur data diputus, pustaka DHT mengembalikan nilai NaN dan program menampilkan pesan peringatan alih-alih menampilkan angka yang menyesatkan. Namun demikian, pengamatan pada skenario ini juga mengungkap dua perilaku yang belum ideal dan akan dibahas lebih lanjut pada Subbab 3.5.2.

3.5  Analisis dan Evaluasi Sistem

3.5.1  Kelebihan Sistem

Berdasarkan hasil perancangan dan pengujian, sistem yang dibangun memiliki sejumlah kelebihan berikut.

1.         Efisiensi penggunaan pin. Pemanfaatan antarmuka I2C untuk LCD menyisakan seluruh pin digital dalam keadaan bebas kecuali pin 2 dan pin 13. Apabila digunakan LCD mode paralel, sekurang-kurangnya enam pin digital akan terpakai sehingga menyulitkan pengembangan sistem di kemudian hari.

2.         Penanganan galat yang eksplisit. Pemeriksaan isnan() mencegah sistem menampilkan nilai yang tidak sahih. Banyak program pemula mengabaikan pemeriksaan ini sehingga layar menampilkan angka acak ketika sensor bermasalah.

3.         Tampilan yang bebas kedip. Penggunaan teknik penimpaan karakter dengan spasi alih-alih pemanggilan lcd.clear() pada setiap iterasi menghasilkan tampilan yang stabil dan nyaman dibaca.

4.         Pola peringatan yang efektif. Bunyi bip-bip terputus dengan periode 300 milidetik lebih menarik perhatian dibandingkan bunyi menerus, sekaligus menghemat konsumsi daya buzzer.

5.         Indikator visual tambahan tanpa biaya. Penempatan buzzer pada pin 13 menyebabkan LED bawaan papan turut berkedip saat alarm aktif, memberikan redundansi indikator secara cuma-cuma.

3.5.2  Keterbatasan dan Temuan Teknis

Di samping kelebihan tersebut, analisis mendalam terhadap program dan rangkaian mengungkap beberapa keterbatasan serta temuan teknis berikut.

1.         Ketiadaan resistor pull-up eksternal. Lembar data DHT22 menganjurkan pemasangan resistor pull-up sebesar 4,7 kΩ hingga 10 kΩ antara jalur data dan jalur VCC. Pada simulator Wokwi, jalur komunikasi dimodelkan secara ideal sehingga ketiadaan resistor tersebut tidak menimbulkan persoalan. Namun pada implementasi fisik, ketiadaan pull-up berpotensi menyebabkan pembacaan gagal secara acak, terutama apabila kabel yang digunakan cukup panjang.

2.         Laju pembacaan melampaui periode penginderaan sensor. Pada kondisi alarm, satu iterasi loop() hanya memerlukan sekitar 300 milidetik, sedangkan pada kondisi normal sekitar 1000 milidetik. Keduanya lebih cepat daripada periode penginderaan minimum DHT22 yang sebesar dua detik. Permintaan pembacaan yang terlalu sering ini tidak menimbulkan kegagalan karena pustaka DHT menyimpan hasil pembacaan terakhir dan mengembalikan nilai tersimpan tersebut apabila interval minimum belum terlampaui. Konsekuensinya, nilai yang tertera pada layar sesungguhnya hanya diperbarui setiap dua detik meskipun program memintanya lebih sering.

3.         Ketiadaan histeresis pada ambang batas. Sistem menggunakan satu titik ambang tunggal tanpa margin. Apabila suhu lingkungan berfluktuasi tepat di sekitar 35,0 °C, buzzer akan hidup dan padam secara berulang dalam waktu singkat (fenomena chattering). Mengingat akurasi sensor sebesar ±0,5 °C, fluktuasi sebesar ini sangat mungkin terjadi pada implementasi nyata.

4.         Penggunaan delay() yang bersifat memblokir. Selama fungsi delay() dieksekusi, mikrokontroler tidak dapat mengerjakan tugas lain sama sekali. Pada sistem sesederhana ini hal tersebut belum menjadi masalah, namun akan menjadi penghambat serius ketika sistem dikembangkan untuk menangani masukan tombol, komunikasi jaringan, atau pembacaan sensor tambahan.

5.         Penanganan galat yang belum membersihkan layar secara menyeluruh. Teks "Error Sensor!" terdiri atas 13 karakter, sedangkan baris pertama LCD memiliki 16 kolom. Akibatnya, tiga kolom terakhir masih memuat sisa tampilan sebelumnya berupa simbol derajat, huruf C, dan satu spasi, sehingga layar menampilkan "Error Sensor!°C" yang membingungkan. Selain itu, baris kedua sama sekali tidak diperbarui sehingga nilai kelembapan lama tetap tertera seolah-olah masih sahih.

6.         Ketiadaan jeda pada cabang penanganan galat. Blok penanganan galat tidak memuat pemanggilan delay() sebelum pernyataan return. Ketika sensor bermasalah, fungsi loop() akan berputar secepat mungkin dan membanjiri jalur I2C dengan permintaan penulisan teks yang sama secara terus-menerus, sehingga membebani bus tanpa memberikan manfaat apa pun.

7.         Komunikasi serial yang tidak dimanfaatkan. Fungsi Serial.begin(9600) dipanggil pada tahap inisialisasi, namun tidak terdapat satu pun pemanggilan Serial.print() di sepanjang program. Kanal serial ini sesungguhnya dapat dimanfaatkan untuk menampilkan data pada Serial Monitor sebagai sarana penelusuran kesalahan maupun perekaman data sederhana.

8.         Pertimbangan arus pada pin buzzer. Pin digital Arduino Uno hanya mampu mengalirkan arus sebesar 20 mA. Buzzer piezoelektrik yang digunakan pada simulasi bersifat kapasitif sehingga arusnya kecil dan aman. Namun apabila pada implementasi fisik digunakan buzzer elektromagnetik yang kebutuhan arusnya dapat melampaui 20 mA, diperlukan transistor penguat agar pin mikrokontroler tidak mengalami kerusakan.

 

BAB IV

PENUTUP

4.1  Kesimpulan

Berdasarkan hasil perancangan, pengujian, dan analisis yang telah dilakukan pada sistem monitoring suhu dan kelembapan, dapat ditarik beberapa kesimpulan sebagai berikut:

  1. Rancangan Sistem Monitoring: Purwarupa sistem monitoring suhu dan kelembapan berbasis Arduino Uno dengan sensor DHT22, LCD 16x2 I2C, serta alarm buzzer telah berhasil dirancang dan distimulasikan secara otomatis dan real-time.  
  2. Implementasi Komunikasi I2C: Penggunaan modul antarmuka I2C pada LCD 16x2 terbukti efektif dalam menghemat penggunaan pin GPIO pada Arduino Uno, di mana jalur komunikasi data hanya membutuhkan dua pin (SDA pada pin A4 dan SCL pada pin A5).   
  3. Penerapan Logika Ambang Batas: Logika program berbasis pembandingan suhu temp > 35.0 °C berjalan dengan presisi. Ketika suhu lingkungan melampaui 35,0 °C, buzzer secara otomatis menghasilkan pola peringatan suara terputus (bip-bip) pada frekuensi 1000 Hz, disertai indikator visual berkedip dari LED bawaan pin 13. Saat suhu berada pada atau di bawah 35,0 °C, buzzer berada dalam kondisi padam.
  4. Kinerja Pengujian pada Simulator: Pengujian sistem pada simulator Wokwi dalam 8 skenario berbeda menunjukkan bahwa sistem mampu menampilkan data suhu dan kelembapan secara akurat pada layar LCD. Selain itu, mekanisme penanganan galat menggunakan fungsi isnan() berhasil mendeteksi kegagalan pembacaan saat jalur data sensor terputus. 

4.2  Saran

Untuk pengembangan dan penyempurnaan sistem monitoring di masa mendatang, terdapat beberapa saran dan rekomendasi berdasarkan keterbatasan teknis yang ditemukan:

  1. Penerapan Fitur Histeresis: Perlu ditambahkan logika histeresis (margin ambang batas atas dan bawah) pada kode program untuk mencegah fenomena chattering (buzzer menyala-mati secara berulang dalam rentang waktu cepat) saat kondisi suhu berfluktuasi tepat di sekitar angka 35,0 °C.
  2. Optimasi Pemrograman Non-Blocking: Sebaiknya fungsi delay() diganti dengan pemrograman berbasis pewaktu millis() (non-blocking). Hal ini bertujuan agar mikrokontroler tetap dapat menjalankan perintah lain secara responsif tanpa terhenti.
  3. Penyempurnaan Penanganan Galat Tampilan: Tampilan pesan galat pada layar LCD perlu diperbaiki dengan cara membersihkan seluruh karakter terlebih dahulu (lcd.clear()) sebelum menuliskan teks "Error Sensor!" agar tidak menyisakan sisa karakter dari pembacaan sebelumnya.
  4. Penyesuaian Hardware untuk Implementasi Fisik: Apabila sistem diimplementasikan pada perangkat keras fisik (bukan simulasi), disarankan untuk menambahkan resistor pull-up eksternal (4,7 kΩ–10 kΩ) pada jalur data DHT22 serta menggunakan transistor penguat arus jika memanfaatkan buzzer elektromagnetik.
  5. Pemanfaatan Fitur IoT dan Serial Logging: Data hasil pembacaan sensor dapat dimanfaatkan lebih lanjut dengan mengaktifkan pengiriman data melalui komunikasi serial (Serial.print()), atau dihubungkan ke modul Wi-Fi (seperti ESP8266/ESP32) agar data pemantauan dapat disimpan dalam basis data dan diakses secara jarak jauh melalui aplikasi/dashboard IoT. 







Tidak ada komentar:

Posting Komentar