การทำระบบตรวจเช็คไฟดับ โดยอาศัยการอ่านสถานะจาก Adapter โดยตรง

ใช้ voltage divider เพื่อลด 5V ของ Adapter ให้เป็น ~3.3V ที่ ESP อ่านได้ (และไม่ทำให้ GPIO ถูก overvoltage)

คำนวณแบบ digit-by-digit เพื่อชัดเจน:
เราต้องการ Vout = 3.3V จาก Vin = 5.0V
สูตร Vout = Vin * R2 / (R1 + R2)
ให้ R1 = ตัวต้านจาก 5V ไปจุดอ่าน, R2 = ตัวต้านจากจุดอ่านไป GND

ต้องการ R2/(R1+R2) = 3.3/5 = 0.66

เลือก R1 = 10kΩ → หา R2:
R2 = 0.66 * (R1 + R2) → R2 = 0.66R1 + 0.66R2 → R2 - 0.66R2 = 0.66R1
→ 0.34R2 = 0.66R1 → R2 = (0.66/0.34) * R1 ≈ 1.941176 * R1
ถ้า R1 = 10k → R2 ≈ 19.41k → ใกล้เคียง 20kΩ (ใช้ค่ามาตรฐาน)

ตรวจอีกที: Vout = 5 * (20k / (10k+20k)) = 5 * (20/30) = 5 * 0.666666... = 3.333... V → พอใช้ได้ดี

การต่อสาย (voltage divider)

Adapter 5V:

  +5V --- R1 (10kΩ) ---+--- to GPIO D1 (ESP8266)

                       |

                       +--- R2 (20kΩ) --- GND (เชื่อมกับ GND ESP)

                      

GND ของ Adapter ต้องเชื่อมกับ GND ของ ESP (common ground)

โค้ด

const int sensePin = D1;

void setup(){

  Serial.begin(115200);

  pinMode(sensePin, INPUT);

}


void loop(){

  int v = digitalRead(sensePin); // HIGH means adapter present (3.3V)

  if(v == HIGH) Serial.println("Adapter มีไฟ");

  else Serial.println("Adapter ไม่มีไฟ");

  delay(500);

}

ข้อดี:  ตอบสนองเร็ว, กระแสต่ำ, เสถียร

ข้อจำกัด: ถ้า Adapter ถูกใช้เป็นแหล่งจ่ายไฟหลักกับอุปกรณ์อื่น อาจต้องออกแบบให้ปลอดภัยมากขึ้น (เพิ่มกรอง/optocoupler) 

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

วิธีใช้งาน Ubuntu Server && Debian Server

ติดตั้ง pip3 ใน linux และวิธีใช้งาน

สร้าง Service ให้ Run สคริปต์ Python ใน Debian