ในเอกสารโปรเจคนี้ น้องจะได้อ่านเกี่ยวกับการทำรีโมทอินฟราเรด DIY และใช้มันควบคุม LED โปรเจคนี้เป็นพื้นฐานชั้นดีสำหรับการเรียนรู้ระบบสื่อสารไร้สายระยะใกล้ โดยใช้บอร์ด Arduino สองตัว (Arduino Uno และ Arduino Nano) เป็นตัวรับและตัวส่งแยกกัน ก่อนเริ่มงาน อย่าลืมติดตั้งไลบรารี IRremote โดย Ken Shirriff ผ่าน Arduino IDE ของน้องก่อนนะ

วิเคราะห์ฮาร์ดแวร์
หัวใจของโปรเจคนี้อยู่ที่การทำงานร่วมกันระหว่าง ตัวส่งสัญญาณอินฟราเรด (IR Transmitter) และ ตัวรับสัญญาณอินฟราเรด (IR Receiver):
- โมดูลตัวส่ง IR: แปลงสัญญาณไฟฟ้าจาก Arduino ให้เป็นคลื่นแสงอินฟราเรด มักใช้ความถี่พาหะ 38kHz เพื่อป้องกันการรบกวนจากแสงธรรมชาติ
- โมดูลตัวรับ IR: มีเซนเซอร์รับแสงอินฟราเรดพร้อมวงจรกรองเพื่อแยกข้อมูลที่ส่งมาจากสัญญาณรบกวนของแสงรอบข้าง จากนั้นส่งสัญญาณดิจิทัลกลับไปยังบอร์ด Arduino
- ปุ่มกด (Push Buttons): ใช้รับอินพุตจากผู้ใช้ ในโปรเจคนี้เราใช้โหมด
INPUT_PULLUPของ Arduino ซึ่งใช้ตัวต้านทานดึงขึ้น (pull-up resistor) ภายใน ทำให้วงจรสะอาดตาและลดความจำเป็นต้องใช้ตัวต้านทานภายนอก 10kΩ
การต่อสาย
โมดูลตัวส่ง IR
- (+) - 3.3V
- (-) - กราวด์ (GND)
- S - D3
ปุ่มกด
- กราวด์ (GND)
- 01 - D4
- 02 - D5
- 03 - D6
- 04 - D7
- 05 - D8
พี่ไม่ได้ต่อปุ่มกดเข้ากับตัวต้านทาน 10kΩ นะ น้องสามารถศึกษาเพิ่มเติมเกี่ยวกับเรื่องนี้ได้
โมดูลตัวรับ IR
- (+) - ขานี้ไม่มีการเชื่อมต่อกับ LED IR
- (-) - กราวด์ (GND)
- S - D11
LEDs
- ขั้วลบ (Cathode) - กราวด์ (GND)
- สีแดง - D7
- สีเขียว - D6
- สีเหลือง - D5
- สีน้ำเงิน - D4
การเขียนโค้ดและตรรกะ
กระบวนการพัฒนาโปรแกรมแบ่งออกเป็นสองเฟสหลัก: การถอดรหัสสัญญาณ และการส่งคำสั่ง
ก่อนอื่น จัดการประกอบชิ้นส่วนให้เรียบร้อยก่อนนะน้อง
ขั้นตอนที่ 1: ถอดรหัสสัญญาณ IR
ไปที่ Examples เปิดไลบรารี IRremote แล้วเลือก IRrecvDemo เพื่อถอดรหัสสัญญาณ IR ที่ส่งมาจากรีโมท IR และหาประเภทโปรโตคอลการส่งสัญญาณ IR ของมัน อัพโหลดโค้ดนี้ไปยัง Arduino Nano ที่ต่อกับตัวรับ IR จากนั้นเปิด Serial Monitor เอารีโมท IR ออกมา จ่อ LED IR ไว้ตรงหน้าตัวรับ IR ให้ดีเพื่อหลีกเลี่ยงสัญญาณรบกวน แล้วกดปุ่มต่างๆ บนรีโมทเพื่อดูข้อมูลที่ส่งมาจากสัญญาณ IR (Hex Code) และโปรโตคอล (เช่น NEC, Sony, RC5)
การถอดรหัสสัญญาณ IR และการค้นพบโปรโตคอลการส่งสัญญาณ จะช่วยให้เราเตรียมสเก็ตช์สำหรับรีโมท IR DIY ของเราได้
ขั้นตอนที่ 2: ทดสอบตัวส่งสัญญาณ IR
ก่อนจะไปต่อ ต้องเช็คก่อนว่าเราเดินสายต่อกับโมดูลส่งสัญญาณ IR ถูกต้องมั้ย ไปที่ Examples ใน Arduino IDE แล้วเปิดไลบรารี่ IRremote เลือกตัวอย่าง IRsendDemo ขึ้นมา วางกล้องมือถือไว้เหนือ LED IR แล้วอัปโหลดโค้ดลง Arduino Uno ของเรา ถ้าต่อถูกต้อง จะเห็น LED IR กะพริบ เคล็ดลับวิศวะ: แสงอินฟราเรดตามองไม่เห็น แต่กล้องมือถือเห็นนะจ๊ะ เปิดโปรแกรมแล้วจ่อกล้องไปที่ LED IR ถ้ามันทำงานปกติ จะเห็นแสงสีม่วงหรือขาวกะพริบๆ บนหน้าจอมือถือ
ขั้นตอนที่ 3: ลงมือสร้างรีโมต DIY กันเลย
จากที่เราวิเคราะห์รีโมตต้นแบบ (เช่น รีโมตพัดลม Midea) ในตัวอย่างนี้ พบว่ามันใช้โปรโตคอล NEC ดังนั้นในโค้ดของเรา เลือกใช้ฟังก์ชัน irsend.sendNEC(0xXXXXXX, 32); ไปเลย
ตรรกะโปรแกรมฝั่งส่ง:
- ตั้งพิน D4-D8 เป็นโหมด
INPUT_PULLUP - ตรวจสอบสถานะปุ่มด้วย
digitalRead()ถ้าสถานะเป็นLOW(แปลว่าปุ่มถูกกด) - เรียกใช้ฟังก์ชัน
irsend.sendNEC()เพื่อส่งค่ารหัสเฉพาะของปุ่มนั้นๆ ออกไปผ่านพิน D3
ตรรกะโปรแกรมฝั่งรับ:
- รอรับสัญญาณจากพิน D11
- เมื่อได้รับสัญญาณแล้ว ให้นำค่าที่ได้รับมาเปรียบเทียบกับเงื่อนไข (ใช้ Switch Case หรือ If-Else ก็ได้)
- ถ้ารหัสตรงกับที่กำหนดไว้ ก็ส่งคำสั่ง
digitalWrite()ไปที่พิน LED (D4-D7) เพื่อเปิดหรือปิดไฟ
รีโมตพัดลม Midea ของพี่ใช้โปรโตคอลส่งสัญญาณ IR แบบ NEC พี่เลยใช้ฟังก์ชัน irsend.sendNEC ในสเก็ตช์ อยากรู้ลึกกว่านี้เรื่องการเขียนโค้ดสำหรับโมดูลส่งและรับ IR ลองไปหาอ่านเพิ่มเติมดูได้
ผลงานสุดท้าย
เมื่อประกอบทุกอย่างเสร็จ เราก็จะได้ระบบรีโมตคอนโทรลแบบกำหนดเอง ที่เราสามารถตั้งได้ว่าปุ่มไหนจะควบคุมอุปกรณ์ตัวไหนในบ้านเรา
ถ้ามีคำถามหรือข้อเสนอแนะเกี่ยวกับโปรเจกต์นี้ จัดคอมเมนต์มาได้เลย