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
- Merancang
sistem monitoring suhu dan kelembapan berbasis Arduino Uno dengan sensor
DHT22.
- Mengimplementasikan
komunikasi I2C antara Arduino Uno dan LCD 16x2.
- Menerapkan
logika ambang batas (threshold) pada program untuk mengaktifkan buzzer
sebagai sistem peringatan.
- 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:
- Temperatur,
menunjukkan tingkat panas atau dinginnya suatu lingkungan dengan satuan
derajat Celsius (°C).
- 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:
- Menerima
data suhu dan kelembapan dari sensor DHT22, Mengolah data hasil pembacaan
sensor,
- 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:
- Mengukur
temperatur udara (°C),
- Mengukur
kelembapan udara (%RH),
- Mengirimkan
hasil pengukuran ke Arduino UNO.
- 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:
- Menampilkan
nilai temperatur,
- Menampilkan
nilai kelembapan,
- 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:
- Arduino
UNO dengan sensor DHT22,
- 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:
- Membuat
rangkaian Arduino UNO,
- Melakukan
konfigurasi sensor dan LCD,
- Menjalankan
program Arduino,
- 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:
- 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.
- 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).
- 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.
- 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:
- 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.
- 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.
- 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.
- 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.
- 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