LDR Light Sensor — ตรวจจับแสงสำหรับเปิดไฟอัตโนมัติ

LDR (Light Dependent Resistor) — เซ็นเซอร์วัดแสง

LDR คือตัวต้านทานที่ค่าความต้านทานเปลี่ยนแปลงตามปริมาณแสง — ยิ่งมีแสงมาก ค่าความต้านทานยิ่งน้อย ยิ่งมืด ค่าความต้านทานยิ่งมาก

วงจร Voltage Divider

    5V
     |
    [10k Resistor]
     |
     +--- Arduino A0
     |
    [LDR]
     |
    GND

เมื่อมีแสง → LDR ต้านทานต่ำ → ค่า Analog สูง
เมื่อมืด → LDR ต้านทานสูง → ค่า Analog ต่ำ

Source Code — เปิดไฟอัตโนมัติ

const int LDR_PIN = A0;
const int RELAY_LIGHT = 7;

int lightThreshold = 400;  // ค่ากลางๆ เช้า/ค่ำ

void setup() {
  pinMode(RELAY_LIGHT, OUTPUT);
  digitalWrite(RELAY_LIGHT, HIGH); // ปิดไฟตอนเริ่ม
  Serial.begin(9600);
}

void loop() {
  int light = analogRead(LDR_PIN);
  Serial.print("Light Level: "); Serial.println(light);

  if (light < lightThreshold) {
    // มืด → เปิดไฟ
    digitalWrite(RELAY_LIGHT, LOW);
    Serial.println("🌙 มืดแล้ว — เปิดไฟ");
  } else {
    // สว่าง → ปิดไฟ
    digitalWrite(RELAY_LIGHT, HIGH);
    Serial.println("☀️ สว่างแล้ว — ปิดไฟ");
  }

  delay(5000); // ตรวจสอบทุก 5 วินาที
}

ปรับปรุงด้วย Hysteresis (กันกระพริบ)

ปัญหาของ LDR คือค่าอาจแกว่งใกล้ Threshold ทำให้ไฟกระพริบ ต้องเพิ่ม Hysteresis:

int lightOn = 300;   // เปิดไฟเมื่อต่ำกว่า 300
int lightOff = 500;  // ปิดไฟเมื่อสูงกว่า 500
bool lightOn = false;

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

  if (!lightOn && light < lightOn) {
    digitalWrite(RELAY_LIGHT, LOW);
    lightOn = true;
  } else if (lightOn && light > lightOff) {
    digitalWrite(RELAY_LIGHT, HIGH);
    lightOn = false;
  }
  delay(1000);
}

ปรับปรุงด้วยค่าเฉลี่ย (Averaging)

อ่านค่า 10 ครั้งแล้วเฉลี่ย เพื่อลดสัญญาณรบกวน:

int readLight() {
  long sum = 0;
  for (int i = 0; i < 10; i++) {
    sum += analogRead(LDR_PIN);
    delay(10);
  }
  return sum / 10;
}
Tip: ติดตั้ง LDR หันไปทางหน้าต่างหรือแหล่งแสงธรรมชาติ ไม่ให้ถูกเงาของตัวตู้ควบคุมบัง

💰 ราคาประมาณการ

อุปกรณ์ราคา
Soil Moisture YL-69~20-40 บาท
Capacitive Moisture v1.2~50-90 บาท
LDR + 10k Resistor~5-10 บาท
DHT22~80-120 บาท
PIR HC-SR501~30-60 บาท
Rain Sensor YL-83~25-45 บาท
Flow Sensor YF-S201~60-100 บาท

🔋 ทางเลือกใช้แบตเตอรี่

เซ็นเซอร์ทั้งหมดใช้ไฟ 5V ซึ่ง Arduino จ่ายให้ได้โดยตรง ถ้าใช้แบตเตอรี่ 12V + Buck Converter → 5V เซ็นเซอร์จะทำงานปกติ

สำหรับระบบนอกบ้านที่ไม่มีปลั๊กไฟ ใช้ Solar Cell 10W + แบต 12V 7Ah (~1,000-1,500 บาท) จ่ายไฟทั้งระบบได้ 24 ชม.

⚠️ หมายเหตุ: เนื้อหานี้ค้นคว้าและเรียบเรียงโดย Hermes AI — ข้อมูลทางเทคนิคควรตรวจสอบก่อนนำไปใช้งานจริง

⚠️ เนื้อหาถูกสร้างโดย AI (Hermes AI) — ข้อมูลทางเทคนิคอาจต้องตรวจสอบก่อนนำไปใช้งานจริง