ผู้เขียนบทความ :
นายอภิสิทธิ์ เทพมณี 020 วต 2/1
นายจิรวัฒน์ สุขเนาว์ 024 วต 2/1
นายณัฐวุฒิ ทองสุภา 031 วต 2/1
นายปานเทพ ธาตรีนรานนท์ 040 วต 2/1
คณะวิศวกรรมศาสตร์ : สาขาวิศวกรรมคอมพิวเตอร์
1.ประวัติความเป็นมา
ปัจจุบัน การควบคุมอุปกรณ์ไฟฟ้าภายในบ้านเป็นสิ่งสำคัญที่ช่วยเพิ่มความสะดวกสบายให้กับชีวิตประจำวันของมนุษย์ โดยเฉพาะในยุคปัจจุบันที่เทคโนโลยีมีบทบาทสำคัญในการอำนวยความสะดวก การควบคุมไฟด้วยเสียงเป็นอีกหนึ่งเทคโนโลยีที่ถูกพัฒนาขึ้นเพื่อช่วยให้การใช้งานไฟฟ้าเป็นเรื่องง่ายยิ่งขึ้น โดยไม่จำเป็นต้องใช้สวิตช์หรืออุปกรณ์ควบคุมแบบดั้งเดิม
ระบบควบคุมไฟด้วยเสียงทำให้ผู้ใช้งานสามารถสั่งเปิด-ปิดไฟได้เพียงแค่พูดคำสั่ง เช่น “เปิดไฟ” หรือ “ปิดไฟ” ซึ่งเหมาะสมกับผู้ที่ต้องการความสะดวกสบายหรือมีข้อจำกัดในการใช้งานมือ อย่างไรก็ตาม ปัญหาของระบบนี้อาจอยู่ที่ความไม่คุ้นเคยหรือการออกเสียงที่แตกต่างกันในแต่ละบุคคล ทำให้ระบบอาจไม่สามารถทำงานได้สมบูรณ์
ด้วยเหตุนี้ ผู้จัดทำจึงมีการพัฒนาระบบการรู้จำเสียงเพื่อให้การควบคุมอุปกรณ์ไฟฟ้าในบ้านเป็นไปได้อย่างราบรื่นและสะดวกสบายมากที่สุด
2.วัตถุประสงค์
1เพื่อให้ผู้ใช้งานสามารถควบคุมการเปิด-ปิดไฟด้วยเสียงได้สะดวก
2เพื่อลดการพึ่งพาการใช้มือในการควบคุมอุปกรณ์ไฟฟ้า
3.ขอบเขตของโครงงาน
- ระบบรองรับคำสั่งเสียงพื้นฐานในการเปิด-ปิดไฟ เช่น “เปิดไฟ” และ “ปิดไฟ”
- ระบบสามารถใช้งานได้กับอุปกรณ์ไฟฟ้าในบ้านที่เชื่อมต่อผ่านไมโครคอนโทรลเลอร์
4.ประโยชน์ที่คิดว่าจะได้รับ
- เพิ่มความสะดวกในการควบคุมไฟฟ้าในบ้าน
- ลดการพึ่งพาการใช้มือในการเปิด-ปิดไฟ
- ช่วยผู้สูงอายุหรือผู้ที่มีความบกพร่องทางร่างกายในการใช้งานไฟฟ้า
- ประหยัดเวลาในการสั่งการอุปกรณ์ไฟฟ้า
- เพิ่มความทันสมัยและความสะดวกให้กับบ้าน
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 ของโปรเจ็กต์มีความง่ายและเสถียรมากขึ้น
ข้อเสนอแนะ:
- โครงสร้าง OOP: ควรออกแบบคลาสและเมธอดให้ชัดเจน แบ่งฟังก์ชันการทำงานตามหน้าที่ของอุปกรณ์ต่างๆ เพื่อให้โค้ดเข้าใจง่ายและสามารถขยายได้ในอนาคต
- ใช้ Asynchronous: เมื่อโปรเจ็กต์ต้องการควบคุมหลายอุปกรณ์พร้อมกัน ควรใช้
asyncio
เพื่อปรับปรุงการประมวลผลแบบไม่ต้องรอ - ปรับแต่งการสื่อสาร: ตรวจสอบบิตเรตและขนาดบัฟเฟอร์ของพอร์ตอนุกรมให้เหมาะสม เพื่อให้การส่งข้อมูลไปยังไมโครคอนโทรลเลอร์ทำได้เร็วขึ้น
- เพิ่มการทดสอบ: ทดสอบการทำงานในสภาพแวดล้อมที่หลากหลาย และทดสอบการทำงานพร้อมกันของอุปกรณ์หลายๆ ตัวเพื่อให้มั่นใจว่าระบบสามารถรับมือกับสถานการณ์ต่างๆ ได้
11. ข้อมูลอ้างอิง
1.รีเลย์
https://www.sumipol.com/knowledge/what-is-relays
2.ไมโครคอนโทรลเลอร์
https://th.wikipedia.org/wiki/ไมโครคอนโทรลเลอร์