ระบบควบคุมไฟด้วยเสียงVoice-Controlled Light System

ผู้เขียนบทความ :

นายอภิสิทธิ์ เทพมณี 020 วต 2/1

นายจิรวัฒน์ สุขเนาว์ 024 วต 2/1

นายณัฐวุฒิ ทองสุภา 031 วต 2/1

นายปานเทพ ธาตรีนรานนท์ 040 วต 2/1

คณะวิศวกรรมศาสตร์ : สาขาวิศวกรรมคอมพิวเตอร์

1.ประวัติความเป็นมา

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

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

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

2.วัตถุประสงค์

1เพื่อให้ผู้ใช้งานสามารถควบคุมการเปิด-ปิดไฟด้วยเสียงได้สะดวก

2เพื่อลดการพึ่งพาการใช้มือในการควบคุมอุปกรณ์ไฟฟ้า

3.ขอบเขตของโครงงาน

  1. ระบบรองรับคำสั่งเสียงพื้นฐานในการเปิด-ปิดไฟ เช่น “เปิดไฟ” และ “ปิดไฟ”
  2. ระบบสามารถใช้งานได้กับอุปกรณ์ไฟฟ้าในบ้านที่เชื่อมต่อผ่านไมโครคอนโทรลเลอร์

4.ประโยชน์ที่คิดว่าจะได้รับ

  1. เพิ่มความสะดวกในการควบคุมไฟฟ้าในบ้าน
  2. ลดการพึ่งพาการใช้มือในการเปิด-ปิดไฟ
  3. ช่วยผู้สูงอายุหรือผู้ที่มีความบกพร่องทางร่างกายในการใช้งานไฟฟ้า
  4. ประหยัดเวลาในการสั่งการอุปกรณ์ไฟฟ้า
  5. เพิ่มความทันสมัยและความสะดวกให้กับบ้าน

5.ความรู้ที่เกี่ยวข้อง

โปรเจคนี้ได้มีการใช้ library เพิ่มเติมดพื่อช่วยในการควบคุม

1.ไมโครคอนโทรลเลอร์ (อังกฤษ: microcontroller มักย่อว่า µC, uC หรือ MCU) คือ อุปกรณ์ควบคุมขนาดเล็ก ซึ่งบรรจุความสามารถที่คล้ายคลึงกับระบบคอมพิวเตอร์ โดยในไมโครคอนโทรลเลอร์ได้รวมเอาซีพียูหน่วยความจำ และพอร์ต ซึ่งเป็นส่วนประกอบหลักสำคัญของระบบคอมพิวเตอร์เข้าไว้ด้วยกัน โดยทำการบรรจุเข้าไว้ในตัวถังเดียวกัน

2.รีเลย์ (Relay) คือ สวิตช์ไฟฟ้าที่ใช้แม่เหล็กไฟฟ้าในการเปิดหรือปิดหน้าสัมผัสอย่างน้อยหนึ่งหน้าสัมผัส ซึ่งเป็นส่วนประกอบสำคัญในระบบไฟฟ้าและอิเล็กทรอนิกส์ มักใช้ในการควบคุมวงจรกำลังไฟสูงด้วยสัญญาณกำลังต่ำ

3.Sritu hobby มีบทช่วยสอนแบบทีละขั้นตอน การนำเสนอโปรเจ็กต์ และรีโมตคอนโทรล Bluetooth ที่หลากหลายเพื่อช่วยให้คุณสำรวจโลกของโปรเจ็กต์งานอดิเรกอิเล็กทรอนิกส์ บทช่วยสอนของเราครอบคลุมหัวข้อต่างๆ มากมาย รวมถึง Arduino, Raspberry Pi, Nodemcu, โปรเจกต์ RC และอื่นๆ

สรุป
ไมโครคอนโทรลเลอร์ (MCU) เป็นอุปกรณ์ควบคุมขนาดเล็กที่รวมฟังก์ชันหลักของคอมพิวเตอร์ ใช้ในการควบคุมระบบอัตโนมัติ เช่น ระบบรดน้ำ รีเลย์เป็นสวิตช์ไฟฟ้าที่ควบคุมวงจรพลังงานสูงด้วยสัญญาณกำลังต่ำ เหมาะสำหรับการควบคุมอุปกรณ์ไฟฟ้าผ่าน MCU Sritu Hobby ให้บทช่วยสอนและโปรเจ็กต์เกี่ยวกับ Arduino, Raspberry Pi และ Bluetooth ซึ่งช่วยผู้เริ่มต้นพัฒนาโปรเจ็กต์อิเล็กทรอนิกส์ได้ง่ายขึ้น

6.การดำเนินงาน

ผังการทำงาน

Code

import serial

class BluetoothRelayController:
def init(self, port, baud_rate=115200, relay_pin=None):
self.serialBT = serial.Serial(port, baud_rate)
self.relay_pin = relay_pin
print(f”Bluetooth device connected on {port}. You can pair it now!”)

def relay_on(self):
    print("Relay ON")

def relay_off(self):
    print("Relay OFF")

def read_command(self):
    if self.serialBT.in_waiting > 0:
        value = self.serialBT.readline().decode('utf-8').strip()
        print(f"Received command: {value}")
        return value
    return None

def handle_command(self, command):
    if command in ["turn on the light", "เปิดไฟ", "Turn On The Light"]:
        self.relay_on()
    elif command in ["turn off the light", "ปิดไฟ", "Turn Off The Light"]:
        self.relay_off()

def run(self):
    try:
        while True:
            command = self.read_command()
            if command:
                self.handle_command(command)
    except KeyboardInterrupt:
        print("Exiting program")
        self.serialBT.close()

if name == “main“:
controller = BluetoothRelayController(port=’COM11′)
controller.run()

7.วิธีการใช้งานโปรแกรม

1.เปิดแอพSritu hobby

2.เลือก Voice Control

3.ทำการสั่งโดยคำสั่งเสียง

แสดงผล

8.การทดสอบ

ทำการทดสอบคำสั่งเสียง 10 ครั้ง

9 เทคนิกการประยุคเพื่อเพิ่มประสิทธิภาพมากขึ้น

1.การใช้โครงสร้าง OOP (Object-Oriented Programming): การเขียนโปรแกรมแบบ OOP ใน Python จะช่วยให้โค้ดมีความยืดหยุ่นและนำกลับมาใช้ใหม่ได้ง่ายขึ้น โดยเฉพาะในโปรเจ็กต์ที่มีการควบคุมอุปกรณ์หลายอย่าง การแบ่งฟังก์ชันออกเป็นคลาสที่ชัดเจนจะทำให้การจัดการและแก้ไขโค้ดง่ายขึ้น

2.การทำงานแบบ Asynchronous: ใช้ asyncio หรือไลบรารีที่รองรับการประมวลผลแบบไม่ต้องรอ (asynchronous) เพื่อให้โปรแกรมสามารถควบคุมหลายอุปกรณ์พร้อมกันได้ โดยไม่ต้องรอให้คำสั่งหนึ่งเสร็จสิ้นก่อน ซึ่งจะเพิ่มความเร็วและประสิทธิภาพในการควบคุมรีเลย์และการตอบสนองจากไมโครคอนโทรลเลอร์

3.การใช้ Threading หรือ Multiprocessing: ในกรณีที่ต้องการควบคุมหลายรีเลย์หรืออุปกรณ์พร้อมกัน สามารถใช้ threading หรือ multiprocessing ใน Python เพื่อให้การทำงานของโค้ดเป็นแบบขนาน ซึ่งจะช่วยให้สามารถรับ-ส่งคำสั่งได้หลายอุปกรณ์ในเวลาเดียวกันโดยไม่เกิดการหน่วง

4.การใช้การบีบอัดข้อมูล: หากมีการส่งข้อมูลระหว่างไมโครคอนโทรลเลอร์และ Python ผ่าน Bluetooth หรือ Wi-Fi การบีบอัดข้อมูลก่อนการส่ง (เช่น JSON, msgpack) จะช่วยลดขนาดข้อมูลและเพิ่มความเร็วในการรับ-ส่งข้อมูล ซึ่งเหมาะสำหรับโปรเจ็กต์ IoT

5.การเพิ่มประสิทธิภาพการอ่านและเขียนพอร์ต: เมื่อใช้ pyserial ในการเชื่อมต่อกับไมโครคอนโทรลเลอร์ผ่านพอร์ตอนุกรม (serial) ควรตั้งค่าบิตเรต (baud rate) ให้เหมาะสมเพื่อให้การสื่อสารเร็วขึ้น และตรวจสอบว่ามีการใช้บัฟเฟอร์ที่มีขนาดเหมาะสมในการอ่านข้อมูล

6.การใช้ Virtual Environment: การพัฒนาโปรเจ็กต์ใน Python ควรใช้ Virtual Environment (เช่น venv) เพื่อแยก dependencies ของแต่ละโปรเจ็กต์ออกจากกัน ทำให้โปรเจ็กต์มีเสถียรภาพและสามารถอัปเดตหรือแก้ไขได้ง่าย

10. สรุปผลและข้อเสนอแนะ

สรุปผล: การประยุกต์ใช้เทคนิคการเขียนโค้ด Python สำหรับการควบคุมไมโครคอนโทรลเลอร์และรีเลย์สามารถช่วยเพิ่มประสิทธิภาพในการทำงานของโปรเจ็กต์ โดยใช้แนวทาง OOP เพื่อจัดโครงสร้างโค้ดให้เป็นระเบียบ การทำงานแบบ Asynchronous และการใช้ Threading หรือ Multiprocessing จะช่วยให้ควบคุมอุปกรณ์หลายตัวพร้อมกันได้อย่างราบรื่น อีกทั้งการบีบอัดข้อมูลและการเพิ่มประสิทธิภาพในการอ่านและเขียนพอร์ตสามารถลดการหน่วงในการสื่อสารระหว่างอุปกรณ์ได้อย่างดี การใช้ Virtual Environment ยังช่วยให้การจัดการ dependencies ของโปรเจ็กต์มีความง่ายและเสถียรมากขึ้น

ข้อเสนอแนะ:

  1. โครงสร้าง OOP: ควรออกแบบคลาสและเมธอดให้ชัดเจน แบ่งฟังก์ชันการทำงานตามหน้าที่ของอุปกรณ์ต่างๆ เพื่อให้โค้ดเข้าใจง่ายและสามารถขยายได้ในอนาคต
  2. ใช้ Asynchronous: เมื่อโปรเจ็กต์ต้องการควบคุมหลายอุปกรณ์พร้อมกัน ควรใช้ asyncio เพื่อปรับปรุงการประมวลผลแบบไม่ต้องรอ
  3. ปรับแต่งการสื่อสาร: ตรวจสอบบิตเรตและขนาดบัฟเฟอร์ของพอร์ตอนุกรมให้เหมาะสม เพื่อให้การส่งข้อมูลไปยังไมโครคอนโทรลเลอร์ทำได้เร็วขึ้น
  4. เพิ่มการทดสอบ: ทดสอบการทำงานในสภาพแวดล้อมที่หลากหลาย และทดสอบการทำงานพร้อมกันของอุปกรณ์หลายๆ ตัวเพื่อให้มั่นใจว่าระบบสามารถรับมือกับสถานการณ์ต่างๆ ได้

11. ข้อมูลอ้างอิง

1.รีเลย์

https://www.sumipol.com/knowledge/what-is-relays

2.ไมโครคอนโทรลเลอร์

https://th.wikipedia.org/wiki/ไมโครคอนโทรลเลอร์

วิดีโอการทำงานของระบบควบคุมไฟด้วยเสียง

You may also like...

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *