ผู้เขียนบทความ :
นายอภิสิทธิ์ เทพมณี 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(เมื่อแปลงเป็นOOP)
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()
Code ที่เป็นของ microcontroller
7.วิธีการใช้งานโปรแกรม
1.เข้าไปที่www.srituhobby.com ทำการดาวนโหลด application
2.จากนั้นให้กดเข้า application เลือก menu control
3.จากนั้นเลือกที่ menu bluetooth voice control
3.จากนั้นเลือกที่การตั้งค่ามุมบนขวา ดังภาพ
4.จากนั้นกดไปที่ connect to device
5.ระบบจะหาชื่อ bluetooth ตัว microcontroller และกดเชื่อมต่อ
6.ตั้งค่าชื่อในตัว microcontroller
7.จากนั้นกดที่ button mic
8.พูดคำสั่งตามที่ coding ไว้ใน microcontroller
9.คำสั่งจะทำการสั่งการให้ระบบเปิดปิดไฟ
การแสดงผล
ทำการเปิดไฟเมื่อสั่ง”เปิดไฟ”
ทำการปิดไฟเมื่อสั่ง”ปิดไฟ”
ระบบต้องการไฟเลี้ยงตลอดเวลา จึงต้องเสียบปลั้กไว้ แต่การสั่งใช้งานนั้นใช้เสียงเพื่อการสั่งการ ทำให้ไม่ต้องลุกจากที่นอนหรือที่นั่งในการสั่งอุปกรณ์ไฟฟ้าไม่ว่าจะเป็นหลอดไฟ หรืออุปกรณ์ต่างๆที่สามารถประยุกต์ได้อีกหลายโปรเจค
8.การทดสอบ
ทำการทดสอบคำสั่งเสียง
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/ไมโครคอนโทรลเลอร์