Minggu, 04 Oktober 2026

SIMULASI DATA LOGGER SUHU DAN KELEMBAPAN MENGGUNAKAN ARDUINO UNO, SENSOR DHT22, MODUL SD CARD (SPI), DAN LCD I2C PADA WOKWI

 

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

  1. Bagaimana merangkai sensor DHT22, LCD I2C, dan modul SD Card pada Arduino Uno di simulator Wokwi?
  2. Bagaimana penggunaan library DHT.h, LiquidCrystal_I2C.h, SPI.h, dan SD.h untuk membaca, menampilkan, dan menyimpan data suhu dan kelembapan?
  3. Bagaimana hasil pengujian sistem data logger yang dibuat?

1.3 Tujuan

  1. Merancang rangkaian data logger suhu dan kelembapan pada Wokwi.
  2. Menerapkan library peripheral (DHT, LiquidCrystal_I2C, SPI, dan SD) pada program Arduino.
  3. 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

  1. Inisialisasi serial, sensor DHT22, dan LCD.
  2. Inisialisasi modul SD Card melalui SD.begin(CS_PIN). Jika gagal, program menampilkan pesan kesalahan dan berhenti.
  3. Membuat berkas log.csv beserta baris judul kolom.
  4. Pada loop, membaca suhu dan kelembapan, lalu memeriksa hasilnya dengan isnan().
  5. Jika valid, data ditampilkan pada Serial Monitor dan LCD, lalu ditambahkan sebagai satu baris pada log.csv.
  6. 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

  1. 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.
  2. Library DHT.h, LiquidCrystal_I2C.h, SPI.h, dan SD.h menyederhanakan pembacaan sensor, penampilan data, dan penyimpanan berkas sehingga program menjadi ringkas.
  3. 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

  1. Menambahkan modul RTC (misalnya DS1307/DS3231) agar setiap data memiliki stempel waktu yang sebenarnya.
  2. Menambahkan ambang batas dan indikator (LED atau buzzer) untuk memberi peringatan saat suhu atau kelembapan melebihi batas.
  3. 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