Komunikasi Serial & Sensor Digital

Membaca data suhu dan kelembaban dengan sensor DHT11 serta menampilkannya ke Serial Monitor.

90 Menit
Modul 1 & 2: Review & Eksplorasi Sensor Tingkat Lanjut
Pertemuan 2

TPTujuan Pembelajaran

  1. Peserta didik dapat membaca data suhu dan kelembaban menggunakan sensor DHT11
  2. Peserta didik dapat menggunakan library eksternal (DHT.h) dengan benar
  3. Peserta didik dapat menampilkan data sensor secara terformat di Serial Monitor
  4. Peserta didik dapat membuat data logger sederhana menggunakan millis()

Sensor DHT11: Membaca Suhu dan Kelembaban

Dalam sistem Smart Agriculture, parameter lingkungan paling dasar yang harus kita pantau adalah suhu dan kelembaban udara. Untuk ini, kita akan menggunakan sensor DHT11.

Berbeda dengan potensiometer yang nilainya bisa langsung dibaca dengan analogRead(), DHT11 mengirimkan datanya secara digital menggunakan protokol komunikasi khusus (mirip sandi morse digital). Membaca datanya secara manual sangat rumit. Disinilah kita butuh Library.

Library Eksternal: Kekuatan Ekosistem Arduino

Library adalah kumpulan kode yang sudah ditulis oleh programmer lain untuk mempermudah pekerjaan kita. Alih-alih menulis ratusan baris kode untuk menerjemahkan sinyal DHT11, kita cukup menggunakan library.

Setelah terinstall, kita bisa memasukkan library tersebut ke dalam kode kita menggunakan perintah #include <DHT.h> di baris paling atas.

Membaca Data DHT11

Berikut adalah struktur kode dasar untuk membaca sensor DHT11. Kita akan mendeklarasikan pin, tipe DHT, dan menggunakan fungsi bawaan library untuk membaca nilainya.

Data Logger Sederhana & Alert Threshold

Selain membaca data, kita akan membuat sistem kita lebih pintar. Kita akan memformat tampilan datanya seperti tabel log (Data Logger) dan menambahkan fitur Alert (alarm) jika suhu melampaui batas tertentu (threshold).

DHT11_Logger_Alert.ino
cpp
#include <DHT.h>

#define DHT_PIN  2
#define DHT_TYPE DHT11

DHT dht(DHT_PIN, DHT_TYPE);

const int BUZZER_PIN = 8;
const float SUHU_MAX = 35.0;

void setup() {
  Serial.begin(9600);
  dht.begin();
  pinMode(BUZZER_PIN, OUTPUT);
  Serial.println("=== Monitor Suhu & Kelembaban ===");
  Serial.println("Waktu(ms) | Suhu(°C) | Kelembaban(%) | Status");
  Serial.println("----------------------------------------------");
}

void loop() {
  delay(2000); // DHT11 butuh minimal 2 detik antar pembacaan
  
  float suhu = dht.readTemperature();
  float kelembaban = dht.readHumidity();
  
  // Error handling: jika pembacaan gagal
  if (isnan(suhu) || isnan(kelembaban)) {
    Serial.println("ERROR: Sensor tidak terbaca!");
    return; // Ulangi dari awal loop
  }
  
  String status = (suhu > SUHU_MAX) ? "PANAS!" : "Normal";
  
  // Mencetak format Data Logger ke Serial Monitor
  Serial.print(millis());
  Serial.print(" ms | ");
  Serial.print(suhu);
  Serial.print("°C | ");
  Serial.print(kelembaban);
  Serial.print("% | ");
  Serial.println(status);
  
  // Alert jika suhu melebihi threshold
  if (suhu > SUHU_MAX) {
    tone(BUZZER_PIN, 1000, 500);
  }
}
Serial Monitor Output
=== Monitor Suhu & Kelembaban === Waktu(ms) | Suhu(°C) | Kelembaban(%) | Status ---------------------------------------------- 2000 ms | 31.50°C | 65.00% | Normal 4001 ms | 32.00°C | 66.00% | Normal ... 10005 ms | 35.50°C | 60.00% | PANAS!

Troubleshooting

Masalah:Serial Monitor menampilkan 'ERROR: Sensor tidak terbaca!'

Solusi:Cek kabel DATA DHT11, pastikan tersambung ke pin 2. Pastikan VCC dan GND tidak terbalik.


Masalah:Suhu tertulis 'nan°C'

Solusi:'nan' artinya Not a Number. Biasanya karena delay di loop kurang dari 2000ms. DHT11 butuh waktu 2 detik antar pembacaan.

Cek Pemahaman

Fungsi apa yang disediakan oleh library DHT.h untuk membaca suhu?

Mudah

Mengapa kita perlu fungsi isnan() dalam membaca data DHT11?

Sedang

Latihan: Monitoring Ruang Kelas

Praktik: Custom Alert System

Modifikasi kode di atas dengan ketentuan berikut:

  • Tambahkan 3 LED (Merah, Kuning, Hijau).
  • Jika suhu < 28°C: LED Hijau menyala.
  • Jika suhu 28°C - 33°C: LED Kuning menyala.
  • Jika suhu > 33°C: LED Merah menyala & Buzzer berbunyi (Alert!).
  • Tampilkan status warna di kolom status Serial Monitor.
Kesimpulan Pertemuan 2
  • DHT11 adalah sensor digital yang butuh protokol khusus, sehingga kita menggunakan library eksternal.
  • Fungsi dht.readTemperature() dan dht.readHumidity() mengambil data dari sensor.
  • Kita perlu memvalidasi data menggunakan isnan() untuk menghindari error.
  • Kita bisa memanfaatkan data sensor untuk memicu aksi lain (seperti membunyikan alarm) berdasarkan threshold tertentu.

RRefleksi

Luangkan 2–3 menit untuk menjawab pertanyaan di bawah secara jujur.

Kejutan & Penemuan

Apa yang paling mengejutkan atau menarik hari ini?

Apa keuntungan menggunakan library dibandingkan menulis kode dari nol?

Masih Membingungkan

Apa yang masih membingungkan atau ingin kamu pahami lebih dalam?

Bagian mana dari kode data logger yang paling rumit menurutmu?

Rencana Selanjutnya

Apa yang ingin kamu coba atau pelajari minggu depan?

Apa ide yang kamu miliki untuk memanfaatkan sensor DHT11 di rumahmu?

Refleksi tidak dinilai — ini adalah ruang jujurmu untuk berpikir.