SIMULASI DATA LOGGER SUHU DAN
KELEMBAPAN MENGGUNAKAN ARDUINO UNO, SENSOR DHT22, MODUL SD CARD (SPI), DAN LCD
I2C PADA WOKWI
Disusun oleh:
Muhammad Adrian Vibrianto 24051204124
Mohammad Rizqi Nova Triatmaja 24051204131
Adhim Musafak 24051204191
M. Faisal Alfiansyah 24051204205
BAB I
PENDAHULUAN
1.1
Latar Belakang
Perkembangan mikrokontroler saat
ini tidak lagi menuntut programmer menulis kode tingkat rendah untuk setiap
komponen. Melalui ekosistem open source seperti GitHub dan Library Manager pada
Arduino IDE, berbagai peripheral, misalnya sensor, layar, dan penyimpanan,
dapat digunakan hanya dengan menyertakan library yang sesuai. Sebagai contoh,
sensor DHT22 menggunakan komunikasi satu kabel (1-wire) yang memerlukan deteksi
lebar sinyal secara akurat. Dengan library, proses tersebut sudah dibungkus
dalam fungsi sederhana seperti readTemperature() dan readHumidity().
Pada Modul 3 dibahas penggunaan
library peripheral untuk sensor DHT22, layar LCD I2C, serta modul SD Card yang
berkomunikasi melalui protokol SPI menggunakan library SPI.h dan SD.h. Ketiga
peripheral tersebut dapat digabungkan menjadi sebuah data logger, yaitu sistem
yang membaca data sensor secara berkala, menampilkannya secara langsung,
sekaligus menyimpannya ke media penyimpanan untuk dianalisis di kemudian hari.
Agar praktik dapat dilakukan tanpa
perangkat fisik, digunakan simulator Wokwi. Simulator ini memungkinkan
perancangan rangkaian dan pengujian program mikrokontroler secara daring. Oleh
karena itu, laporan ini membahas simulasi data logger suhu dan kelembapan pada
Wokwi yang mengombinasikan sensor DHT22, LCD I2C, dan modul SD Card.
1.2
Rumusan Masalah
- Bagaimana merangkai sensor DHT22, LCD I2C,
dan modul SD Card pada Arduino Uno di simulator Wokwi?
- Bagaimana penggunaan library DHT.h,
LiquidCrystal_I2C.h, SPI.h, dan SD.h untuk membaca, menampilkan, dan
menyimpan data suhu dan kelembapan?
- Bagaimana hasil pengujian sistem data logger
yang dibuat?
1.3
Tujuan
- Merancang rangkaian data logger suhu dan
kelembapan pada Wokwi.
- Menerapkan library peripheral (DHT,
LiquidCrystal_I2C, SPI, dan SD) pada program Arduino.
- Menguji dan menganalisis keluaran sistem
melalui Serial Monitor, LCD, dan berkas log pada SD Card.
1.4
Manfaat
Praktikum ini memberikan pemahaman
bahwa pengembangan sistem berbasis mikrokontroler dapat dipercepat dengan
memanfaatkan library open source. Selain itu, praktikan memperoleh pengalaman
menggabungkan dua protokol komunikasi berbeda, yaitu I2C (LCD) dan SPI (SD
Card), serta satu protokol 1-wire (DHT22), dalam satu sistem. Hasilnya dapat
menjadi dasar untuk pengembangan sistem pemantauan lingkungan yang lebih
lengkap.
BAB II
LANDASAN TEORI
2.1
Arduino Uno
Arduino Uno merupakan papan
mikrokontroler berbasis ATmega328P. Papan ini memiliki pin digital, pin analog,
serta dukungan komunikasi serial UART, I2C, dan SPI. Pada Arduino Uno, jalur
I2C menggunakan pin A4 (SDA) dan A5 (SCL), sedangkan jalur SPI menggunakan pin
13 (SCK), 12 (MISO), 11 (MOSI), dan 10 (SS/CS) (Arduino, 2024).
2.2
Library Peripheral
Library adalah kumpulan kode siap
pakai yang membungkus detail komunikasi dengan sebuah peripheral menjadi
fungsi-fungsi sederhana. Library dapat dipasang melalui Library Manager pada
Arduino IDE atau diunduh langsung dari repositori GitHub. Apabila programmer
mengalami kesulitan, contoh penggunaan (examples) pada repositori library dapat
dijadikan acuan (Kurniawan, 2025).
2.3
Sensor DHT22
DHT22 (AM2302) adalah sensor suhu
dan kelembapan digital dengan keluaran data serial pada satu kabel. Bit data 0
dan 1 dibedakan berdasarkan lebar sinyal sehingga diperlukan pengaturan waktu
yang akurat. Karena itu, penggunaan library seperti DHT sensor library dari
Adafruit sangat membantu (Adafruit, 2024). Sensor ini memiliki laju pembacaan
sekitar satu kali setiap dua detik sehingga pembacaan berikutnya perlu diberi
jeda minimal dua detik.
2.4
LCD 16x2 I2C
LCD 16x2 dapat menampilkan 16
karakter pada 2 baris. Modul I2C (biasanya berbasis PCF8574) mengurangi jumlah
kabel menjadi empat, yaitu VCC, GND, SDA, dan SCL. Alamat I2C yang umum
digunakan adalah 0x27. Library LiquidCrystal_I2C menyediakan fungsi init(),
backlight(), clear(), setCursor(), dan print().
2.5
Modul SD Card, SPI, dan Library SD.h
SPI (Serial Peripheral Interface)
adalah komunikasi serial sinkron dengan empat jalur utama: SCK (clock), MOSI
(data dari master ke slave), MISO (data dari slave ke master), dan CS (chip
select). Modul SD Card menggunakan SPI untuk berkomunikasi dengan mikrokontroler.
Library SD.h menyediakan fungsi SD.begin() untuk inisialisasi kartu, SD.open()
untuk membuka berkas, serta print() dan println() untuk menulis data, sedangkan
library SPI.h menangani jalur komunikasinya (Arduino, 2024).
2.6
Simulator Wokwi
Wokwi adalah simulator daring untuk
Arduino, ESP32, dan mikrokontroler lain. Pengguna dapat menyusun rangkaian
secara visual pada berkas diagram.json, menulis kode pada sketch.ino, dan
mendeklarasikan library pada libraries.txt. Wokwi juga menyediakan komponen
simulasi seperti DHT22, LCD I2C, dan microSD card (Wokwi, 2024).
2.7
Data Logger dan Format CSV
Data logger adalah sistem yang
mencatat data secara berkala. Format CSV (comma-separated values) sering
dipilih karena berbentuk teks sederhana, dapat dibuka dengan spreadsheet, dan
mudah diolah menjadi grafik.
BAB III
PEMBAHASAN
3.1
Alat dan Bahan
- Komputer/laptop dengan koneksi internet dan
peramban web.
- Simulator Wokwi (https://wokwi.com).
- Komponen virtual: Arduino Uno, sensor DHT22,
LCD 16x2 I2C, dan modul microSD Card.
- Library: DHT sensor library (Adafruit),
LiquidCrystal I2C, serta SPI dan SD (bawaan Arduino).
3.2
Perancangan Rangkaian
Sensor DHT22 dihubungkan ke pin
digital D2. LCD I2C menggunakan jalur I2C pada pin A4 dan A5 dengan alamat
0x27. Modul SD Card menggunakan jalur SPI hardware Arduino Uno, yaitu D13
(SCK), D12 (MISO), D11 (MOSI), dan D10 (CS). Rincian sambungan ditunjukkan pada
Tabel 3.1.
Tabel 3.1 Sambungan pin rangkaian
|
Komponen |
Pin Komponen |
Pin Arduino Uno |
Keterangan |
|
DHT22 |
VCC |
5V |
Daya |
|
DHT22 |
SDA (data) |
D2 |
Data 1-wire |
|
DHT22 |
GND |
GND |
Ground |
|
LCD I2C |
VCC |
5V |
Daya |
|
LCD I2C |
GND |
GND |
Ground |
|
LCD I2C |
SDA |
A4 |
I2C data |
|
LCD I2C |
SCL |
A5 |
I2C clock |
|
microSD Card |
VCC |
5V |
Daya |
|
microSD Card |
GND |
GND |
Ground |
|
microSD Card |
SCK |
D13 |
SPI clock |
|
microSD Card |
DO (MISO) |
D12 |
SPI MISO |
|
microSD Card |
DI (MOSI) |
D11 |
SPI MOSI |
|
microSD Card |
CS |
D10 |
Chip select |
Gambar 3.1 Rangkaian data logger pada Wokwi
3.3
Konfigurasi Library
Pada tab libraries.txt di Wokwi
ditambahkan daftar library berikut. Library SPI dan SD sudah termasuk dalam
paket Arduino sehingga tidak perlu ditambahkan secara khusus.
DHT
sensor library
LiquidCrystal
I2C
3.4
Alur Program
- Inisialisasi serial, sensor DHT22, dan LCD.
- Inisialisasi modul SD Card melalui
SD.begin(CS_PIN). Jika gagal, program menampilkan pesan kesalahan dan
berhenti.
- Membuat berkas log.csv beserta baris judul
kolom.
- Pada loop, membaca suhu dan kelembapan, lalu
memeriksa hasilnya dengan isnan().
- Jika valid, data ditampilkan pada Serial
Monitor dan LCD, lalu ditambahkan sebagai satu baris pada log.csv.
- Menunggu 2 detik sesuai laju pembacaan
DHT22, kemudian mengulang dari langkah 4.
3.5
Kode Program
#include
<Wire.h>
#include
<LiquidCrystal_I2C.h>
#include
<DHT.h>
#include
<SPI.h>
#include
<SD.h>
#define
DHT_PIN 2
#define
CS_PIN 10
DHT
dht(DHT_PIN, DHT22);
LiquidCrystal_I2C
lcd(0x27, 16, 2);
unsigned
long nomor = 0;
void
setup() {
Serial.begin(9600);
dht.begin();
lcd.init();
lcd.backlight();
lcd.setCursor(0,
0);
lcd.print("Inisialisasi
SD");
if
(!SD.begin(CS_PIN)) {
Serial.println("SD
Card Mount Failed!");
lcd.clear();
lcd.print("SD
Card Gagal!");
while
(true) {
delay(1000);
}
}
Serial.println("SD
Card Mounted");
File
f = SD.open("log.csv", FILE_WRITE);
if
(f) {
f.println("No,Suhu(C),Kelembapan(%)");
f.close();
}
delay(1000);
}
void
loop() {
float
suhu = dht.readTemperature();
float
kelembapan = dht.readHumidity();
if
(isnan(suhu) || isnan(kelembapan)) {
Serial.println("Sensor
Rusak");
lcd.clear();
lcd.print("Sensor
Rusak");
}
else {
nomor++;
Serial.print("Suhu:
");
Serial.print(suhu);
Serial.print("
C\t");
Serial.print("Kelembapan:
");
Serial.print(kelembapan);
Serial.println("
%");
lcd.clear();
lcd.setCursor(0,
0);
lcd.print("Suhu:
");
lcd.print(suhu);
lcd.print("
C");
lcd.setCursor(0,
1);
lcd.print("Kelembapan:
");
lcd.print(kelembapan,
0);
File
f = SD.open("log.csv", FILE_WRITE);
if
(f) {
f.print(nomor);
f.print(",");
f.print(suhu);
f.print(",");
f.println(kelembapan);
f.close();
Serial.print("Data
ke-");
Serial.print(nomor);
Serial.println("
tersimpan");
}
else {
Serial.println("Gagal
membuka log.csv");
}
}
delay(2000);
}
3.6
Penjelasan Kode
Bagian header memuat library Wire.h
dan LiquidCrystal_I2C.h untuk LCD, DHT.h untuk sensor, serta SPI.h dan SD.h
untuk penyimpanan. Objek dht dibuat dengan parameter pin dan tipe sensor DHT22,
sedangkan objek lcd dibuat dengan alamat 0x27 dan ukuran 16 kolom dan 2 baris.
Konstanta CS_PIN diset ke 10 karena pin tersebut merupakan pin chip select pada
SPI hardware Arduino Uno.
Pada setup(), Serial.begin(9600)
mengaktifkan Serial Monitor, sedangkan dht.begin(), lcd.init(), dan
lcd.backlight() memulai sensor dan LCD. Fungsi SD.begin(CS_PIN) melakukan
inisialisasi kartu; apabila gagal, sistem berhenti pada perulangan tak hingga agar
kesalahan mudah diketahui. Berkas log.csv dibuka dengan mode FILE_WRITE, yaitu
mode yang menambahkan data pada akhir berkas, kemudian diberi baris judul
kolom.
Pada loop(), fungsi
readTemperature() dan readHumidity() mengembalikan nilai bertipe float. Fungsi
isnan() digunakan untuk mendeteksi kegagalan pembacaan. Data yang valid dikirim
ke Serial Monitor dan LCD, lalu ditulis ke SD Card dengan format CSV. Berkas
selalu ditutup dengan f.close() setelah penulisan agar data benar-benar
tersimpan. Perintah delay(2000) memberi jeda dua detik sesuai batas laju
pembacaan DHT22.
3.7
Pengujian dan Hasil
Pengujian dilakukan dengan
menjalankan simulasi pada Wokwi, mengamati Serial Monitor dan LCD, serta
mengubah nilai suhu dan kelembapan melalui komponen DHT22 (klik komponen, lalu
geser slider). Skenario pengujian ditunjukkan pada Tabel 3.2.
Tabel 3.2 Skenario dan hasil pengujian
|
No |
Skenario |
Hasil |
|
1 |
Simulasi dijalankan (SD Card tersedia) |
Serial Monitor: “SD Card Mounted” dan header CSV
dibuat |
|
2 |
Suhu 24 °C, kelembapan 40 % |
Serial Monitor menampilkan Suhu:
24.00 C dan Kelembapan: 40.00 %. |
|
3 |
Slider suhu DHT22 diubah 15 °C dan 7,9 °C |
Suhu diubah menjadi 15 °C lalu
7,9 °C. Serial Monitor menampilkan 15.00 C lalu 7.90 C. |
|
4 |
Slider kelembapan diubah 56,5 % |
Kelembapan diubah menjadi 56,5 %.
Serial Monitor menampilkan 56.50 %. |
|
5 |
Data tercatat ke berkas |
Setiap pembacaan diikuti pesan
Data ke-N tersimpan (sampai data ke-8). |
Gambar 3.2 Keluaran pada LCD dan Serial Monitor
Pada LCD, baris pertama menampilkan
suhu dan baris kedua menampilkan kelembapan. Ketika slider suhu atau kelembapan
diubah, tampilan berubah pada siklus pembacaan berikutnya (maksimal dua detik
kemudian).
Gambar 3.3 Pengujian perubahan nilai
3.8
Analisis
Hasil simulasi menunjukkan bahwa
tiga peripheral dengan protokol berbeda dapat bekerja bersamaan pada satu
mikrokontroler: DHT22 dengan 1-wire, LCD dengan I2C, dan SD Card dengan SPI.
Penggunaan library membuat kode menjadi ringkas karena detail pengaturan waktu
sinyal DHT22, pengalamatan I2C, dan protokol SPI ditangani oleh library. Hal
ini sejalan dengan tujuan Modul 3 bahwa koding mikrokontroler menjadi lebih
mudah pada era open source.
Pemeriksaan isnan() penting untuk
mencegah data tidak valid tersimpan ke berkas. Selain itu, berkas harus ditutup
setelah setiap penulisan agar data tidak hilang apabila daya terputus. Perlu
dicatat bahwa penulisan ke SD Card memerlukan waktu sehingga total periode
siklus sedikit lebih besar dari 2 detik. Pada Wokwi, kartu SD bersifat virtual
sehingga kebenaran penyimpanan diverifikasi melalui pesan pada Serial Monitor;
pada perangkat fisik berkas log.csv dapat dibuka langsung di komputer.
BAB IV
PENUTUP
4.1
Kesimpulan
- Rangkaian data logger berhasil dirancang
pada Wokwi dengan menghubungkan sensor DHT22 ke D2, LCD I2C ke A4/A5, dan
modul SD Card ke jalur SPI D10–D13 pada Arduino Uno.
- Library DHT.h, LiquidCrystal_I2C.h, SPI.h,
dan SD.h menyederhanakan pembacaan sensor, penampilan data, dan
penyimpanan berkas sehingga program menjadi ringkas.
- Sistem mampu membaca suhu dan kelembapan
setiap 2 detik, menampilkannya pada LCD dan Serial Monitor, serta
mencatatnya dalam format CSV pada SD Card.
4.2
Saran
- Menambahkan modul RTC (misalnya
DS1307/DS3231) agar setiap data memiliki stempel waktu yang sebenarnya.
- Menambahkan ambang batas dan indikator (LED
atau buzzer) untuk memberi peringatan saat suhu atau kelembapan melebihi
batas.
- Mengembangkan sistem menggunakan ESP32 agar
data dapat ditampilkan melalui web server lokal seperti pada contoh Modul
3.
DAFTAR PUSTAKA
Adafruit. (2024). DHT sensor library [Repositori
GitHub]. https://github.com/adafruit/DHT-sensor-library (diakses 28 September
2026).
Arduino. (2024). SD library dan SPI library, Arduino
Documentation. https://www.arduino.cc/reference/en/libraries/sd/ (diakses 28
September 2026).
Arduino. (2024). Arduino Uno Rev3, Arduino
Documentation. https://docs.arduino.cc/hardware/uno-rev3/ (diakses 28 September
2026).
Aosong Electronics. (n.d.). AM2302 (DHT22) Digital
Temperature and Humidity Sensor Datasheet.
Kurniawan, N. Y. (2025). Modul 3: Library Peripheral
Input Output – Mudahnya Koding Mikrokontroler di Era Open Source [Materi
kuliah].
Wokwi. (2024). Wokwi Docs: Arduino Uno, DHT22, LCD1602
I2C, and microSD Card. https://docs.wokwi.com (diakses 28 September 2026).
Tidak ada komentar:
Posting Komentar