กลับไปหน้ารวมไฟล์
control-home-appliances-through-web-or-mobile-7ddbba.md

ไอเดียเบื้องหลังโปรเจค

มีโปรเจคเยอะแยะที่ใช้ Arduino เปิดปิดอุปกรณ์ไฟฟ้า (พร้อมวงจรที่วาดซับซ้อนมาก) แต่กลับไม่มีใครบอกเลยว่าจะควบคุมอุปกรณ์ไฟฟ้าผ่านเว็บหรือมือถือยังไง (ด้วยวงจรง่ายๆ) และถ้ามีวิธีทำ มันก็ยาวและน่าเบื่อสุดๆ เลยต้องมีใครสักคนก้าวยาวสักก้าว ผมเลยตัดสินใจก้าวยาวก่อนเพื่อลดความลำบากของคนอื่นนั่นเอง

เพื่อให้สำเร็จ ผมเลยสร้างแพลตฟอร์มเว็บกลางขึ้นมา ที่จะทำให้คุณควบคุมอุปกรณ์อะไรก็ได้ด้วยขั้นตอนง่ายๆ โดยไม่ต้องเขียนโปรแกรมอะไรนอกจากโค้ด Arduino และแค่ทำงานกับรีเลย์เท่านั้น นี่แหละคือไอเดียหลักเบื้องหลังโปรเจคเจ๋งๆ นี้ มันเป็นหนึ่งในตัวอย่าง DIY ที่ใครๆ ก็ทำตามได้ง่ายๆ และใช้งบไม่เกิน 5 ดอลลาร์ เพราะใช้แค่รีเลย์ 5V กับสายไฟ/ปลั๊กนิดหน่อย

มันทำงานยังไง?

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

การใช้งานโปรเจคนี้ คุณแค่ต้องคัดลอกและวาง โค้ด Arduino ที่อ่านค่าอินพุตจาก Serial ของ Processing และควบคุมรีเลย์เพื่อช่วยเปิด/ปิด อุปกรณ์ไฟฟ้า

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

กลไกการทำงานแบ่งออกเป็น 3 ส่วนหลัก:

  1. เว็บ/มือถืออินเทอร์เฟซ: ผู้ใช้กดปุ่มบนหน้าเว็บเพื่อเปลี่ยนสถานะ (เปิด/ปิด)
  2. Processing (สะพานเชื่อม): โปรแกรม Processing ที่รันบนคอมพิวเตอร์ ทำหน้าที่เป็น "บุรุษไปรษณีย์" ดึงข้อมูลจาก API ของเว็บไซต์ แล้วส่งสถานะนั้นไปยัง Arduino ผ่านพอร์ต Serial (พอร์ต USB)
  3. Arduino & รีเลย์: รับคำสั่งจาก Processing และสั่งการให้รีเลย์ตัดหรือเชื่อมต่อวงจรไฟฟ้าแรงสูง

รีเลย์ทำงานยังไง: หัวใจของการควบคุมไฟฟ้าแรงสูง

สำหรับมือใหม่ที่สงสัยว่า Arduino 5V จะควบคุมไฟฟ้าบ้าน 220V ได้ยังไง คำตอบคือ รีเลย์ นั่นเอง

รีเลย์คือสวิตช์แม่เหล็กไฟฟ้าที่แยกส่วนควบคุม (แรงดันต่ำ) ออกจากส่วนจ่ายไฟ (แรงดันสูง) อย่างปลอดภัย มันมีขาสำคัญๆ ดังนี้:

  • COM (ขาร่วม): จุดเชื่อมต่อกลางที่รับไฟจากแหล่งจ่ายหลัก
  • NO (ปกติเปิด): ในสถานะปกติ วงจรจะ "เปิด" (ไฟดับ) เมื่อได้รับคำสั่งจาก Arduino รีเลย์จะดึงหน้าสัมผัสมาเชื่อมกับ COM ทำให้วงจรปิดและไฟติด (เราจะใช้ขานี้เป็นหลัก)
  • NC (ปกติปิด): ในสถานะปกติ วงจรจะ "ปิด" (ไฟติดตลอด) และจะตัดไฟเมื่อได้รับคำสั่ง ทำงานตรงข้ามกับ NO

การทำงานของรีเลย์: (ถ้ารู้แล้วข้ามไปได้เลยจ้า)

จะใช้รีเลย์ควบคุมไฟ AC ยังไง? AC คือกระแสสลับ 220V (ของอินเดีย) ที่ใช้จ่ายไฟให้หลอดไฟ Arduino ควบคุมแรงดันและกระแสสูงไม่ได้ แต่รีเลย์ทำได้ นั่นคือหน้าที่ของมันเลย ดังนั้นเราจึงใช้รีเลย์เป็นสวิตช์เพื่อควบคุมอุปกรณ์ไฟฟ้ากำลังสูง NO, NC และ COM ในรีเลย์คืออะไร?

  • COM = ขาร่วม (Common Connection)
  • NC = ขาปกติปิด (Normally Closed Connection)
  • NO = ขาปกติเปิด (Normally Open Connection)

ผมอธิบาย NO, NC และ COM ไว้ละเอียดด้านล่างแล้ว ดูได้ถ้ายังงงๆ อยู่ เราจะใช้ขา NO (ปกติเปิด) เป็นหลัก

  • COM - ขาร่วม มันคือขากลาง เป็นขาที่ "ร้อน" เพราะไฟที่จะจ่ายให้โหลด (อุปกรณ์ไฟฟ้า) ต่ออยู่ที่ขานี้

  • NO (ปกติเปิด) - มันทำหน้าที่เหมือนสวิตช์ เนื่องจากมัน "เปิด" อยู่ จะไม่มีการสัมผัสระหว่าง COM กับ NO เมื่อเราทริกเกอร์โมดูลรีเลย์ (สั่งงาน) มันจะเชื่อมต่อกับ COM ผ่านแม่เหล็กไฟฟ้าภายในรีเลย์ และจ่ายไฟให้โหลดได้ ทำให้ไฟติด วงจรก็จะปิดอยู่จนกว่าเราจะสั่งให้รีเลย์กลับไปสถานะ Low (ไม่ทำงาน)

  • NC (Normally Closed - ปิดตามปกติ) - มันจะต่อกับ COM ตลอดเวลา แม้รีเลย์จะยังไม่ได้ไฟเลี้ยง พอเราทริกรีเลย์มันก็จะเปิดวงจร ทำให้การเชื่อมต่อหายไป ทำงานตรงข้ามกับ NO แบบเป๊ะๆ

การโปรแกรมและวงจร

ฝั่ง Arduino:

เราใช้ Arduino อ่านข้อมูลจากพอร์ตอนุกรมที่ส่งมาจากโปรแกรม Processing แล้วก็เขียนข้อมูลลงพอร์ตอนุกรมเพื่อสั่งเปิด/ปิด รีเลย์ หรือวงจรที่เราต่อไว้ อย่างที่เห็นในโค้ดด้านล่าง เราอ่านข้อมูลจากพอร์ตอนุกรม (ที่มาจาก Processing) แล้วเอามาเช็คว่า ถ้าได้ "1" ก็สั่งเปิดรีเลย์ ถ้าได้ "0" ก็สั่งปิดรีเลย์ หลักการทำงานของรีเลย์เดี๋ยวเราค่อยว่ากัน

วิเคราะห์ Logic จากโค้ดต้นฉบับ:

//บางส่วนของโค้ดจริง
if(Serial.available()>0){ //อ่านข้อมูลจาก Serial
     readSerial = Serial.read(); 
     delay(100); 
     if(readSerial == '1'){ //ถ้าได้ '1' ก็เปิดรีเลย์
       digitalWrite(RELAY1,HIGH); 
     } 
     if(readSerial == '0'){ //ถ้าได้ '0' ก็ปิดรีเลย์
       digitalWrite(RELAY1,LOW);; 
     } 
}

ฝั่ง Processing:

โค้ด Processing เนี่ยคือหัวใจของโปรเจคเราเลย มันทำหน้าที่สื่อสารระหว่างสองฝั่งคือ เว็บแอปพลิเคชันกับ Arduino ให้นึกภาพมันเหมือนสะพาน หรือเหมือนบุรุษไปรษณีย์สมัยก่อนที่คอยรับจดหมายจากตู้แล้วส่งไปตามที่อยู่ ในที่นี้ Processing จะเรียก API ที่เราสร้างขึ้นมา

(เว็บไซต์ที่ใช้นี้เป็นแค่ตัวอย่างนะ) โดยการเรียก API ผ่านซอฟต์แวร์ Processing เราจะได้สถานะปัจจุบันของสวิตช์มา จากนั้นเราก็อ่านค่าใน Processing แล้วส่งต่อไปยังโปรแกรม Arduino ตามที่คุยกันไว้ สุดท้าย Arduino ก็จะเขียนค่าลงบอร์ด

ฝั่งเว็บ/มือถือ: สำหรับการเข้าถึงเว็บ เราใช้แพลตฟอร์ม gadget programmers

วงจร: ตามที่แสดงในไดอะแกรม

  • ต่อขา 7 ของ Arduino ไปที่ขา IN1 ของรีเลย์
  • ต่อขา 5V ของ Arduino ไปที่ขา Vcc ของรีเลย์
  • ต่อสายไฟบ้าน (AC) ข้างหนึ่งไปที่ขา Common (COM) ของรีเลย์ (ขาตรงกลาง)
  • ต่อขาหนึ่งของหลอดไฟ (Bulb) ไปที่ขา NC ของรีเลย์
  • ต่อสายไฟที่เหลือจากหลอดไฟ และสายไฟที่เหลือจากไฟบ้าน อีกด้านหนึ่งเข้าสู่แหล่งจ่ายไฟ AC หลัก

แผนภาพวงจร เพื่อให้ระบบทำงานถูกต้อง ให้ต่อส่วนประกอบต่างๆ ดังนี้:

  • ต่อ ขา 7 ของ Arduino ไปที่ขา IN1 ของโมดูลรีเลย์
  • ต่อ 5V และ GND ของ Arduino ไปที่ VCC และ GND ของรีเลย์
  • ด้านแรงดันสูง (AC):
    • ตัดสายไฟบ้านเส้นหนึ่ง (เช่น สาย Line) แล้วต่อปลายด้านหนึ่งเข้ากับขา COM (ขาตรงกลาง) ของรีเลย์
    • ต่อปลายอีกด้านของสายนั้น ซึ่งจะไปยังหลอดไฟ เข้ากับขา NO (Normally Open) ของรีเลย์
    • ต่อสายไฟที่เหลือจากแหล่งจ่ายไฟ ตรงไปยังหลอดไฟอีกขา

ขั้นตอนรันโปรเจค

  • ก็อปปี้โค้ด Arduino ที่ให้ไว้ไปวางใน Arduino editor ซะ
  • อัพโหลดโค้ดลงบอร์ด Arduino ให้เรียบร้อย
  • ดาวน์โหลดไฟล์ zip ของ Processing แล้วเลือกไฟล์ที่ตรงกับระบบปฏิบัติการ (OS) ของน้อง
  • ตอนนี้ก็รันไฟล์ exe (สำหรับ Windows) จาก zip ของ Processing ที่ตรงกับ OS ของน้องเลย
  • เปิดเว็บเบราว์เซอร์ขึ้นมา

กดปุ่มเพื่อเปิด-ปิดไฟได้เลยจ้า

คำปิดท้าย

เย่! ถ้าทุกอย่างราบรื่น น้องจะเห็นไฟทำงานตามที่สั่งเลย สุดยอดไปเลย! ถ้าน้องทำตามขั้นตอนทั้งหมดนี้ น้องก็จะสามารถเปลี่ยนบ้านธรรมดาๆ ให้กลายเป็น Smart Home ด้วยงบน้อยและวงจรไม่ซับซ้อนได้แล้ว

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

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

apps:
  - "1x Processing Direct Exe file"
  - "1x gadgetProgrammers web api services"
author: "anshulpareek"
category: "Internet of Things, BT & Wireless"
components:
  - "1x Relay (generic)"
  - "4x Jumper wires (generic)"
  - "1x Arduino UNO"
description: "วัยรุ่นอย่างเราจะสั่งงานบ้านจากที่ไหนก็ได้ แค่มีมือถือหรือเบราว์เซอร์ก็จัดไปแล้ว ตึงๆ!"
difficulty: "Easy"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX181pKdwWDGc0fosDAvcgUkXJ8sNLHxJ6un4V5seF+jhKfb3vd1QuxXQl9Eod1B/S7uqdthNbYJXpCuNvSJbw1VwgDjef9upaiCttfdH4gEeJ3zt86ZrCB5yxOcgJaTuIPeyDnZrevuUrV4rWRJZwjtfGGCzR6VIqU8="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/control-home-appliances-through-web-or-mobile-7ddbba_cover.gif"
lang: "en"
likes: 19
passwordHash: "7c689dd8ea0b56887fa6cc66a323e4c902d6e48038b35cb98539cebc4c2f3583"
price: 1999
seoDescription: "Control Home Appliances via Web and Mobile from anywhere with this Smart Home Arduino project."
tags:
  - "lights"
  - "energy efficiency"
  - "home automation"
  - "communication"
  - "monitoring"
title: "เปิด-ปิดของในบ้านผ่านเว็บ/มือถือ งานง่ายแต่หล่อ!"
tools: []
videoLinks: []
views: 22798