Ruang IoT · IoT

Praktikum Lampu Otomatis ESP32 dengan LDR dan Histeresis

Tutorial membaca LDR dengan ADC ESP32 dan mengendalikan lampu otomatis menggunakan dua threshold histeresis agar output stabil.

Penulis
Ruang IoT Admin
Dipublikasikan
12 Agustus 2026
Waktu baca
2 menit

Artikel ini disusun sebagai panduan teknis Ruang IoT. Gunakan daftar isi untuk berpindah antarbagian dan ikuti langkah secara berurutan ketika artikel memuat praktik atau konfigurasi.

Mulai membaca
Ilustrasi tutorial: Praktikum Lampu Otomatis ESP32 dengan LDR dan Histeresis
Ilustrasi praktikum Ruang IoT.

Praktikum ini membuat lampu otomatis berdasarkan intensitas cahaya menggunakan LDR dan ESP32. Alih-alih hanya memakai satu ambang, sistem menggunakan histeresis: lampu menyala ketika kondisi cukup gelap dan baru padam ketika cahaya sudah melewati batas yang lebih tinggi. Teknik ini mencegah output berkedip cepat saat nilai sensor berada tepat di sekitar threshold.

Tujuan praktikum

  • Membaca sensor analog melalui ADC.
  • Mengamati hubungan rangkaian pembagi tegangan dan nilai ADC.
  • Menerapkan dua threshold untuk histeresis.
  • Membedakan logika kontrol lokal dan telemetry IoT.

Rangkaian LDR

Buat pembagi tegangan menggunakan LDR dan resistor 10 kΩ. Titik tengah masuk ke pin ADC, misalnya GPIO 34 pada ESP32 klasik. Arah perubahan ADC tergantung posisi LDR dan resistor dalam pembagi, sehingga langkah pertama adalah mengamati data mentah pada kondisi terang dan gelap.

BagianKoneksi
Titik ADCGPIO 34
Output lampu/LEDGPIO 25
Resistor tetap10 kΩ sebagai titik awal
Catu sensor3.3V dan GND

Program histeresis

const int LDR_PIN = 34;
const int LAMP_PIN = 25;

// Contoh asumsi: ADC makin besar saat kondisi makin gelap.
// Verifikasi arah ini pada rangkaian Anda.
const int DARK_ON = 2600;
const int BRIGHT_OFF = 1900;

bool lampOn = false;

void setup() {
  Serial.begin(115200);
  pinMode(LAMP_PIN, OUTPUT);
  digitalWrite(LAMP_PIN, LOW);
}

void loop() {
  int lightRaw = analogRead(LDR_PIN);

  if (!lampOn && lightRaw >= DARK_ON) {
    lampOn = true;
  } else if (lampOn && lightRaw <= BRIGHT_OFF) {
    lampOn = false;
  }

  digitalWrite(LAMP_PIN, lampOn ? HIGH : LOW);
  Serial.printf("ldr=%d lamp=%s\n", lightRaw, lampOn ? "ON" : "OFF");
  delay(250);
}

Kalibrasi threshold

  1. Rekam nilai ADC di ruang terang.
  2. Tutup LDR secara bertahap dan rekam nilai pada kondisi yang Anda anggap “gelap”.
  3. Tentukan threshold ON di sekitar titik gelap yang diinginkan.
  4. Tentukan threshold OFF dengan jarak yang cukup dari threshold ON.
  5. Uji transisi lambat untuk memastikan lampu tidak berkedip.

Menjadikannya node IoT

Kirim ldr_raw dan lamp_state sebagai telemetry. Anda juga dapat menyimpan nilai threshold sebagai konfigurasi perangkat agar dapat diubah melalui antarmuka administrasi, tetapi perubahan remote sebaiknya divalidasi agar tidak menerima nilai di luar rentang ADC.

Pengembangan lanjutan

Tambahkan moving average untuk meredam noise, jadwal waktu sebagai syarat tambahan, atau mode manual yang mempunyai timeout sehingga sistem kembali ke mode otomatis. Untuk beban listrik nyata, gunakan modul dan proteksi yang sesuai; praktikum dasar lebih aman menggunakan LED atau beban DC rendah.

Referensi resmi dan bacaan lanjut

Gunakan dokumentasi resmi berikut untuk memeriksa API, kompatibilitas board, dan perubahan versi library:

TUTORIAL SELESAI

Sudah memahami alurnya?

Praktikkan konsep yang baru dipelajari melalui project, perangkat ESP32, telemetry, dashboard, atau Virtual Lab di Ruang IoT.

Buka Ruang IoT