กลับไปหน้ารวมไฟล์
diy-ir-remote-and-ir-remote-controlled-leds-3536cb.md

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

วิเคราะห์ฮาร์ดแวร์

หัวใจของโปรเจคนี้อยู่ที่การทำงานร่วมกันระหว่าง ตัวส่งสัญญาณอินฟราเรด (IR Transmitter) และ ตัวรับสัญญาณอินฟราเรด (IR Receiver):

  1. โมดูลตัวส่ง IR: แปลงสัญญาณไฟฟ้าจาก Arduino ให้เป็นคลื่นแสงอินฟราเรด มักใช้ความถี่พาหะ 38kHz เพื่อป้องกันการรบกวนจากแสงธรรมชาติ
  2. โมดูลตัวรับ IR: มีเซนเซอร์รับแสงอินฟราเรดพร้อมวงจรกรองเพื่อแยกข้อมูลที่ส่งมาจากสัญญาณรบกวนของแสงรอบข้าง จากนั้นส่งสัญญาณดิจิทัลกลับไปยังบอร์ด Arduino
  3. ปุ่มกด (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); ไปเลย

ตรรกะโปรแกรมฝั่งส่ง:

  1. ตั้งพิน D4-D8 เป็นโหมด INPUT_PULLUP
  2. ตรวจสอบสถานะปุ่มด้วย digitalRead() ถ้าสถานะเป็น LOW (แปลว่าปุ่มถูกกด)
  3. เรียกใช้ฟังก์ชัน irsend.sendNEC() เพื่อส่งค่ารหัสเฉพาะของปุ่มนั้นๆ ออกไปผ่านพิน D3

ตรรกะโปรแกรมฝั่งรับ:

  1. รอรับสัญญาณจากพิน D11
  2. เมื่อได้รับสัญญาณแล้ว ให้นำค่าที่ได้รับมาเปรียบเทียบกับเงื่อนไข (ใช้ Switch Case หรือ If-Else ก็ได้)
  3. ถ้ารหัสตรงกับที่กำหนดไว้ ก็ส่งคำสั่ง digitalWrite() ไปที่พิน LED (D4-D7) เพื่อเปิดหรือปิดไฟ

รีโมตพัดลม Midea ของพี่ใช้โปรโตคอลส่งสัญญาณ IR แบบ NEC พี่เลยใช้ฟังก์ชัน irsend.sendNEC ในสเก็ตช์ อยากรู้ลึกกว่านี้เรื่องการเขียนโค้ดสำหรับโมดูลส่งและรับ IR ลองไปหาอ่านเพิ่มเติมดูได้

ผลงานสุดท้าย

เมื่อประกอบทุกอย่างเสร็จ เราก็จะได้ระบบรีโมตคอนโทรลแบบกำหนดเอง ที่เราสามารถตั้งได้ว่าปุ่มไหนจะควบคุมอุปกรณ์ตัวไหนในบ้านเรา

ถ้ามีคำถามหรือข้อเสนอแนะเกี่ยวกับโปรเจกต์นี้ จัดคอมเมนต์มาได้เลย

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino IDE"
author: "RucksikaaR"
category: "Lights & LEDs"
components:
  - "1x Arduino Nano R3"
  - "5x Pushbutton switch 12mm"
  - "4x LED (generic)"
  - "1x Solderless Breadboard Half Size"
  - "21x Male/Male Jumper Wires"
  - "1x IR receiver (generic)"
  - "5x Resistor 220 ohm"
  - "1x IR transmitter (generic)"
  - "1x Solderless Breadboard Full Size"
  - "1x Arduino UNO"
description: "มาลุยกัน! สร้างรีโมทอินฟราเรด DIY ขึ้นมาเองเลย แล้วเอามาจัดการเปิด-ปิด LED สวยๆ ด้วยกัน งานนี้ตึงๆ วัยรุ่นต้องลอง!"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX181x+/5f3kEqE76t87ycJ+Ot2PV1R213HWopxToo9y6ChmagfiC7hmXNoiggv1kv5w4eDhM8EFQErV3ckflxtZw5y1tE3cUzk0="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/diy-ir-remote-and-ir-remote-controlled-leds-3536cb_cover.jpg"
lang: "en"
likes: 3
passwordHash: "afeccf46262beda434e39d66c5c0a4843f6cc2fc3c8531e7e54d61ce3c82c39c"
price: 1499
seoDescription: "Learn to build your own DIY IR Remote and control LEDs. A simple Arduino project for electronics enthusiasts."
tags:
  - "infrared"
  - "led"
  - "remote control"
title: "งานง่ายแต่หล่อ! สร้างรีโมท IR ด้วยตัวเอง แล้วมาควบคุมไฟ LED แบบเทพๆ"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/l8-D3R9LVNM"
views: 18964