Tutorial Belanja komponen

Tutorial › Cahaya

Sensor Cahaya LDR ke Dashboard

ESP-12ED0D1D2D3D43VGD5D6D7D8RXTXG3VA0GVUS3S2S1SCS0SKG3VENRSTGVINS+−Modul LDR KY-018

Tingkat terang ruangan tampil sebagai persen di HP. Proyek ini juga mengajarkan kalibrasi: mengubah angka mentah sensor menjadi skala yang masuk akal.

LDR (light dependent resistor) makin kecil hambatannya saat terkena cahaya. Di modul KY-018, LDR dipasang dengan resistor tetap membentuk pembagi tegangan, sehingga pin S mengeluarkan tegangan yang berubah mengikuti cahaya. Arah perubahannya (terang jadi besar atau kecil) tergantung cara modul dirakit. Karena itu kode memakai dua angka kalibrasi, MENTAH_GELAP dan MENTAH_TERANG, yang kamu isi dari hasil pengamatan sendiri.

Komponen

KomponenQtyHarga
NodeMCU ESP8266 V3 (Lolin)1Rp42.000
Modul sensor cahaya LDR1Rp7.200
Kabel jumper female-female 10 cm (isi 10)isi 10, terpakai 31Rp3.500
Kabel micro USB data 30 cmopsional, kalau belum punya kabel micro USB data1Rp11.700
Total (tanpa opsional)Rp52.700
Daftar komponen proyek ini otomatis masuk ke pesan. Hapus yang sudah kamu punya sebelum dikirim.

Langkah 1: Rangkai komponen

Sambungkan kabel sesuai gambar di atas. Kalau gambar dan tabel terlihat berbeda, ikuti tabel.

DariKeKabel
Modul LDR KY-018 S→A0kuning
Modul LDR KY-018 +→3Vmerah
Modul LDR KY-018 −→Ghitam

Langkah 2: Siapkan dashboard Klenik

Tingkat Cahayaichibot/budi1234/p031/cahaya
0 – 10072%
0 detik lalu
Cahaya Sepanjang Hariichibot/budi1234/p031/cahaya
10%
0.0%12 titik100.0%
0 detik lalu

Cara cepat: unduh p031.json, ganti budi1234 dengan KODE-mu, lalu import di Klenik (menu titik tiga → Export / Import → Import → Ganti total). Langkah lengkapnya ada di Panduan Klenik.

WidgetTopicSetting
Gauge
Tingkat Cahaya
ichibot/KODE/p031/cahaya0–100 %
Chart
Cahaya Sepanjang Hari
ichibot/KODE/p031/cahaya0–100 %

Langkah 3: Upload kode

Library: PubSubClient (Nick O'Leary). Board di Arduino IDE: NodeMCU 1.0 (ESP-12E Module). Isi dulu nama WiFi dan password di bagian ISI DULU, lalu ganti budi1234 di baris topic dengan KODE-mu, lalu upload dan buka Serial Monitor (115200).

p031.inoUnduh .ino
// Proyek 031 - Sensor Cahaya LDR ke Dashboard
// Board: NodeMCU ESP8266 V3 | Dashboard: klenik.ichibot.id
#include <ESP8266WiFi.h>
#include <PubSubClient.h>

// ===== ISI DULU =====
const char* WIFI_NAMA = "nama-wifi-kamu";
const char* WIFI_PASS = "password-wifi-kamu";

// topic MQTT: ganti budi1234 dengan KODE-mu (sama dengan di dashboard Klenik)
const char* TOPIK_CAHAYA = "ichibot/budi1234/p031/cahaya";

const char* BROKER = "mqtt.ichibot.id";
WiFiClient wifi;
PubSubClient mqtt(wifi);
const int PIN_LDR = A0;
// Kalibrasi: lihat angka mentah di Serial Monitor saat LDR ditutup jari dan saat disenter HP
const int MENTAH_GELAP = 900;
const int MENTAH_TERANG = 80;
unsigned long terakhir = 0;

void langganan() {}

sambungWiFi() dan sambungMQTT(): sama di semua proyek (klik untuk lihat)void sambungWiFi() { WiFi.begin(WIFI_NAMA, WIFI_PASS); Serial.print("WiFi"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(" OK, IP " + WiFi.localIP().toString()); } void sambungMQTT() { while (!mqtt.connected()) { if (mqtt.connect(WiFi.macAddress().c_str())) { Serial.println("Terhubung ke Klenik"); langganan(); } else { Serial.println("Broker gagal, coba lagi 3 detik"); delay(3000); } } }
void setup() { Serial.begin(115200); sambungWiFi(); mqtt.setServer(BROKER, 1883); } void loop() { if (!mqtt.connected()) sambungMQTT(); mqtt.loop(); if (millis() - terakhir < 1000) return; terakhir = millis(); int mentah = analogRead(PIN_LDR); int terang = constrain(map(mentah, MENTAH_GELAP, MENTAH_TERANG, 0, 100), 0, 100); mqtt.publish(TOPIK_CAHAYA, String(terang).c_str()); Serial.printf("mentah %d -> terang %d%%\n", mentah, terang); }

Langkah 4: Pahami kodenya

  1. Langkah kalibrasi: upload, buka Serial Monitor, tutup LDR rapat dengan jari dan catat angkanya (gelap), lalu sorot dengan senter HP dan catat lagi (terang).
  2. map() bisa memetakan rentang terbalik. Kalau di modulmu gelap justru angka kecil, cukup tukar isi kedua konstanta.