Arduino Light Senser Using LDR
Introduction and Project Concept: Automatic Light On-Off System with Arduino
สวัสดีครับ นักประดิษฐ์และวิศวกรทุกท่าน! วันนี้ผมจะพาทุกท่านไปสร้างระบบ "Smart Light Sensor" โดยใช้บอร์ดควบคุม Arduino แนวคิดหลักของโปรเจกต์นี้คือการออกแบบระบบที่สามารถตอบสนองต่อสภาพแวดล้อมจริงได้ โดยที่ LED จะติดสว่างโดยอัตโนมัติเมื่อตรวจพบว่าความเข้มของแสงในห้องลดลง (เข้าสู่สภาวะมืด) เราสามารถนำหลักการนี้ไปประยุกต์ใช้เพื่อสร้างระบบไฟสำรองฉุกเฉิน หรือระบบไฟหน้าบ้านอัตโนมัติเพื่อประหยัดพลังงานได้
นี่คือโปรเจกต์ที่ผสานรวมอุปกรณ์ทางกายภาพ (Hardware) และการประมวลผลด้วยซอฟต์แวร์เข้าด้วยกันอย่างลงตัว ซึ่งเหมาะสำหรับผู้เริ่มต้นให้เข้าใจได้ง่าย

Step 1: Hardware Preparation
ในการสร้างระบบนี้ เราต้องใช้อุปกรณ์อิเล็กทรอนิกส์เฉพาะบางอย่าง โดยเฉพาะสำหรับรับค่า Analog Signal

รายการอุปกรณ์หลัก:
- Arduino UNO: บอร์ด microcontroller ที่ทำหน้าที่เป็นสมองหลักในการประมวลผลค่าความเข้มแสง
- LDR (Light Dependent Resistor): เซ็นเซอร์วัดแสง หรือที่เรียกว่า "photoresistor" ซึ่งมีความต้านทานลดลงเมื่อมีแสงมาก และเพิ่มขึ้นเมื่ออยู่ในที่มืด
- 10K Ohm Resistor: ตัวต้านทานแบบคงที่ขนาด 10 กิโลโอห์ม ใช้ในการสร้างวงจร Voltage Divider เพื่อให้ Arduino สามารถอ่านการเปลี่ยนแปลงเป็นระดับแรงดันไฟฟ้าได้
- LED: อุปกรณ์แสดงผลเพื่อจำลองการเปิด-ปิดไฟ
- Mini Breadboard: สำหรับเชื่อมต่อวงจรโดยไม่ต้องบัดกรี
- Jumper Wires: สำหรับเชื่อมต่อสัญญาณระหว่างอุปกรณ์ต่างๆ
- Power Supply (9V Battery with Barrel Jack): (อุปกรณ์เสริม) สำหรับใช้งานในพื้นที่ที่ไม่มีการเชื่อมต่อกับคอมพิวเตอร์
Step 2: The Circuit Design
หัวใจสำคัญของการอ่านค่าจาก LDR คือการเชื่อมต่อแบบ Voltage Divider เนื่องจาก Arduino ไม่สามารถวัดค่าความต้านทานได้โดยตรง แต่สามารถวัด Voltage ผ่านขา Analog Input ได้

รายละเอียดการเชื่อมต่อ:
- LED: ขา Cathode (ขาลบ/ขาสั้น) เชื่อมต่อกับ GND ของ Arduino ส่วนขา Anode (ขาบวก/ขายาว) เชื่อมต่อกับ Digital Pin 13
- วงจร LDR และ Voltage Divider:
- ขาหนึ่งของ LDR เชื่อมต่อกับแหล่งจ่ายไฟ 5V
- ขาอีกข้างของ LDR เชื่อมต่อกับ Analog Pin A0 และที่จุดเดียวกันนี้ ให้ต่อ 10K Ohm resistor ลง GND
- ข้อมูลเชิงเทคนิค: เมื่อความเข้มแสงเปลี่ยนไป ความต้านทานของ LDR ก็จะเปลี่ยนตาม ทำให้แรงดันไฟฟ้าที่ตกคร่อม 10K resistor เปลี่ยนแปลงไปตาม (ตามกฎของ Ohm) ค่าแรงดันไฟฟ้านี้เองที่ Arduino จะแปลงเป็นตัวเลขระหว่าง 0 ถึง 1023
ข้อควรระวัง: ตรวจสอบการเชื่อมต่อขั้วบวกและกราวด์ให้ดี เพื่อป้องกัน Short Circuit ซึ่งอาจสร้างความเสียหายให้กับ microcontroller ได้
Step 3: The Code Logic & Calibration
เมื่อ Hardware พร้อมแล้ว ขั้นตอนต่อไปคือการเขียนโค้ดเพื่อควบคุมตรรกะการทำงาน

ตรรกะโปรแกรม:
- การรับข้อมูล: เราใช้ฟังก์ชัน
analogRead(A0)เพื่อรับค่าความเข้มแสง ซึ่งถูกแปลงเป็นสัญญาณดิจิทัลแบบ 10-bit (ค่า 0-1023) - แสดงผลผ่าน Serial Monitor: ในตอนแรก ให้อัปโหลดโค้ดและเปิด Serial Monitor (Ctrl+Shift+M) เพื่อสังเกตค่าตัวเลขภายใต้สภาพแสงที่แตกต่างกัน
- เมื่อมีแสงมาก ค่าที่แสดงบน Serial Monitor จะสูง
- เมื่อคุณบัง LDR ด้วยมือ (จำลองความมืด) ค่าตัวเลขจะลดลง
- การปรับเทียบ Threshold: นี่คือส่วนที่สำคัญที่สุด จากข้อมูลใน Serial Monitor ให้สังเกตค่าเมื่อ "เริ่มมืดลง"
- ตัวอย่าง: หากภายใต้แสงปกติ คุณอ่านค่าได้ 180 และเมื่อมืด คุณอ่านค่าได้น้อยกว่า 150 คุณควรกำหนด Threshold ไว้ที่ประมาณ 100-120 เป็นเกณฑ์สำหรับการเปิดไฟ
- การควบคุมเอาต์พุต: ใช้เงื่อนไข
if (sensorValue < threshold)หากค่าที่อ่านได้ต่ำกว่า Threshold ที่เราตั้งไว้ ให้ส่งสัญญาณHIGHไปยัง Pin 13 เพื่อเปิด LED
คำแนะนำจากวิศวกร: ความเข้มแสงจะแตกต่างกันไปในแต่ละห้อง หากคุณพบว่า LED ติดตลอดเวลาหรือไม่หรี่ลงเลย ให้ปรับตัวเลข 100 ในเงื่อนไข if ของโค้ดให้ตรงกับค่าต่ำสุดจริงที่คุณอ่านได้จากสภาพแวดล้อมนั้น เพื่อความแม่นยำสูงสุดของระบบเซ็นเซอร์ของคุณ