วิชา : 04-513-201 การโปรแกรมคอมพิวเตอร์ชั้นสูง 1/2567
อาจารย์ผู้สอน : อ.สันติ สถิตวรรธนะ
คณะผู้จัดทำ สาขาวิศวกรรมคอมพิวเตอร์ 2/2 #16
นางสาวไปรยา เจริญ 050
นายภูผา พันธุรัตน์ 053
นายศุภฤกษ์ เจริญผล 055
นายทรงศักดิ์ ศิริพันธุ์ 063
- ความเป็นมาและความสำคัญของปัญหา
ในปัจจุบันของใช้ในชีวิตประจำวันหลายชนิดมีส่วนผสมของก๊าซไวไฟ ซึ่งจำเป็นต้องใช้อย่างระมัดระวัง เนื่องจากก๊าซเหล่านี้มีความสามารถในการติดไฟสูง ตัวอย่างเช่น LPG, i-butane, propane, methane, alcohol, hydrogen และ smoke ซึ่งถูกใช้เป็นส่วนผสมในของใช้ทั่วไป เช่น น้ำหอม แอลกอฮอล์ ของเหลวที่อยู่ในไฟแช็ค ก๊าซหุงต้ม และสเปรย์กำจัดแมลง ก๊าซไวไฟเหล่านี้ถือเป็นสารที่อันตรายเพราะไม่มีสีและกลิ่น ทำให้ยากต่อการตรวจสอบเมื่อเกิดการรั่วไหล และหากมีประกายไฟอาจทำให้เกิดเพลิงไหม้ นำมาซึ่งความเสียหายทั้งต่อทรัพย์สินและชีวิต
เพื่อลดความเสี่ยงดังกล่าว คณะผู้วิจัยจึงมีแนวคิดในการพัฒนาอุปกรณ์ตรวจจับการรั่วไหลของก๊าซไวไฟ โดยอุปกรณ์นี้จะทำหน้าที่ส่งสัญญาณเตือนและแจ้งเตือนผู้ใช้ผ่านแอปพลิเคชัน LINE ในมือถือ โดยใช้เทคโนโลยี Internet of Things (IoT) พร้อมกับไมโครคอนโทรลเลอร์เป็นฐานการทำงาน ซึ่งอุปกรณ์นี้จะช่วยเพิ่มความสะดวกสบายและความปลอดภัยในชีวิตประจำวันภายในบ้านได้อย่างมีประสิทธิภาพ
2. วัตถุประสงค์
- เพื่อพัฒนาระบบความปลอดภัยและสามารถแจ้งเตือนผู้ใช้ผ่านไลน์ได้ด้วยบอร์ด Esp32
- เพื่อเพิ่มความสะดวกสบายและความปลอดภัยในการใช้งานภายในบ้าน
3. ประโยชน์ที่คาดว่าจะได้รับ
- ได้พัฒนาระบบความปลอดภัยและสามารถแจ้งเตือนผู้ใช้ผ่านไลน์ได้ด้วยบอร์ด Esp32
- เพิ่มความปลอดภัยในชีวิตประจำวัน
4.ขอบเขต
- การตรวจจับก๊าซจะครอบคลุมพื้นที่ภายในบ้านหรือสถานที่ที่ติดตั้ง โดยเน้นในบริเวณที่มีความเสี่ยงสูงต่อการรั่วไหล เช่น ห้องครัว
- อุปกรณ์จะถูกออกแบบให้ใช้งานในสภาพแวดล้อมภายในอาคารเท่านั้น ไม่เหมาะสำหรับการใช้งานในพื้นที่ภายนอกอาคาร
- การแจ้งเตือนการรั่วไหลของก๊าซจะถูกส่งผ่านแอปพลิเคชัน LINE ในมือถือของผู้ใช้ที่ได้ลงทะเบียนไว้เท่านั้น
5. ความรู้ที่เกี่ยวข้อง
1) Modemcu Esp32
คือ บอร์ดไมโครคอนโทรลเลอร์ที่ใช้ชิป ESP32 ของบริษัท Espressif Systems ซึ่งเป็นการพัฒนาต่อยอดจาก NodeMCU ที่ใช้ชิป ESP8266 โดย ESP32 เป็นชิปที่มีความสามารถมากขึ้นในหลายๆ ด้าน เช่น
- หน่วยประมวลผล: Dual-core หรือ Single-core Tensilica Xtensa LX6 ที่ทำงานด้วยความเร็วสูงสุดถึง 240 MHz
- หน่วยความจำ: RAM ขนาด 520 KB และ ROM ขนาด 448 KB พร้อมหน่วยความจำ Flash บนบอร์ดขนาดตั้งแต่ 2 MB ขึ้นไป
- การเชื่อมต่อไร้สาย: รองรับทั้ง Wi-Fi (802.11 b/g/n) และ Bluetooth 4.2 (Classic และ BLE)
- GPIO: มีขา Input/Output มากกว่า 30 ขา ซึ่งสามารถนำมาใช้งานได้หลายรูปแบบ เช่น PWM, ADC, DAC, I2C, SPI, UART
- ฟีเจอร์เพิ่มเติม: รองรับการเข้ารหัส AES, RSA, SHA, และการบีบอัดข้อมูลแบบ ZIP
2) Sensor MQ2
เป็นโมคูลตรวจวัดก็าซที่ไวต่อก๊าซไวไฟในกลุ่ม LPG. ibutane, propine, methanc ,aleohol,Hydrogen รวมไปถึงควันฟที่เกิดจากการเผาใหม้ด้วย จึงเป็นเซ็นเซอร์ที่นิยมนำมาใช้ ในการดรวจจับการรั่วของก๊าซต่างๆ เพื่อป้องกันอันตรายที่จะเกิดขึ้น จากการรั่วไหล ตัวเซ็นเซอร์ใช้ แรงดัน 5 ให้เอาท์พุต ให้สัญญาณเป็นอนาล็อก 0 ถึง 5V และดิจิตอล กรณีเลือกใช้สัญญาณดิจิตอล สามารถปรับความไวในการตรวจจับได้จากทริมพอตบนโมดูล
3) Infrared IR Flame Sensor
ใช้ตรวจจับเปลวไฟโดยใช้ เซนเซอร์อินฟาเรด ให้สัญญาณ สามารถเขียนค่าเอาต์พุตออกมาได้ทั้งแบบดิจิตอลและอนาล็อก แบบดิจิตอลเมื่อตรวจจับได้ให้สัญญาณเป็น 1 เมื่อตรวจจับไม่พบให้สัญญาณเป็น 0 และแบบสัญญาณอนาล็อก ให้ค่า 0-5V สามารถปรับความไวได้ที่โวลุมบนโมดูล
ข้อจำกัดคือ เครื่องตรวจจับเปลวไฟอินฟราเรดมักก่อให้เกิดสัญญาณเตือนภัยเท็จอยู่เสมอ เนื่องจากก๊าซร้อนและพื้นผิวอื่นๆ ที่ไม่ได้เกิดจากไฟไหม้ เช่น เตาอบ หลอดไฟให้ความร้อน เป็นต้น อาจกระตุ้นให้เครื่องตรวจจับเปลวไฟตอบสนองต่อสัญญาณเตือนได้
4) Active Buzzer Module
Buzzer จะมี 2 ชนิด คือ แบบ Active และ Passive สามารถสร้างเสียงเตือนโดยต่อกับขา VCC ของ Active Buzzer กับไฟเลี้ยง 3.3-5VDC และขา GND ในการสั่งให้ Active Buzzer มีเสียง ใช้ไฟเลี้ยง 3.3 – 5V ใช้ TR เบอร์ 9012 ในการขยายสัญญาณ โดยจะส่งเสียงร้องเมื่อมีการจ่ายไฟเข้าที่ขา I/O สามารถนำไปใช้โปรเจ็คได้อย่างหลากหลาย ทั้ง อุปกรณ์กันขโมย หรือ อุปกรณ์แจ้งเตือนต่างๆ
5) Application LINE
เป็นแอปพลิเคชันฟรีแวร์สำหรับการส่งข้อความทันทีบนอุปกรณ์อิเล็กทรอนิกส์ที่ให้บริการโดย LY Corporation ผู้ใช้ไลน์สามารถแลกเปลี่ยนข้อความ, ภาพ, วิดีโอและเสียง และให้บริการการสนทนาแบบวอยซ์โอเวอร์ไอพีและการประชุมทางวิดีโอ สามารถใช้ในการแจ้งเตือนข้อความจากห้องครัวไปสู่ผู้ใช้งาน ระบบสามารถแจ้งเป็นข้อความข้อความส่งไปยังไลน์ที่ผู้ใช้ได้ทำการ LOGIN ได้ว่าตอนนี้มีไฟกำลังเกิดขึ้นและตอนนี้กำลังมีแก๊สรั่วไหลอยู่
6. การดำเนินการ
- วงจรของระบบ
- ตัวอย่างโค้ด
import machine
import urequests
class Sensor:
def __init__(self, pin):
self.pin = machine.Pin(pin, machine.Pin.IN, machine.Pin.PULL_UP)
def read(self):
return self.pin.value() == 0 # Active LOW
class Buzzer:
def __init__(self, pin):
self.pin = machine.Pin(pin, machine.Pin.OUT)
self.off()
def on(self):
self.pin.value(1)
def off(self):
self.pin.value(0)
class LineNotify:
def __init__(self, token):
self.token = token
def send(self, message):
url = "https://notify-api.line.me/api/notify"
headers = {"Authorization": "Bearer " + self.token}
data = {"message": message}
urequests.post(url, headers=headers, data=data).close()
class FireSmokeAlarmSystem:
def __init__(self, fire_pin, smoke_pin, buzzer_pin, line_token):
self.fire_sensor = Sensor(fire_pin)
self.smoke_sensor = Sensor(smoke_pin)
self.buzzer = Buzzer(buzzer_pin)
self.line_notify = LineNotify(line_token)
def check_sensors(self):
if self.fire_sensor.read():
self.buzzer.on()
self.line_notify.send("มีไฟเกิดขึ้น!")
elif self.smoke_sensor.read():
self.buzzer.on()
self.line_notify.send("ตรวจพบควัน!")
else:
self.buzzer.off()
สรุป โค้ดนี้เป็นระบบตรวจจับไฟและควันซึ่งใช้ ESP32 เพื่อตรวจสอบสถานะของเซ็นเซอร์ไฟและควัน หากตรวจพบไฟหรือควัน ระบบจะเปิดใช้งานเสียงเตือน buzzer และส่งการแจ้งเตือนผ่าน LINE Notify จะมีการเขียนโค้ดที่แยกคลาสการใช้งานแต่ละส่วน เพื่อให้ง่ายต่อการแก้ไขของผู้เขียน และง่ายต่อการอ่าน ดังนี้
- คลาส
Sensor
- ใช้สำหรับกำหนดเซ็นเซอร์ที่เชื่อมต่อกับขา GPIO โดยรับค่า
pin
เป็นพารามิเตอร์ - ฟังก์ชัน
read()
จะอ่านสถานะของเซ็นเซอร์ โดยตรวจสอบว่าเซ็นเซอร์ถูกกระตุ้น (active) หรือไม่ หากค่าเป็น LOW (0
) หมายถึงมีการกระตุ้นเซ็นเซอร์
2. คลาส Buzzer
- ใช้ควบคุมเสียงเตือน (buzzer) โดยกำหนดพินที่เชื่อมต่อกับ buzzer
- ฟังก์ชัน
on()
และoff()
ใช้สำหรับเปิดและปิดเสียงเตือนตามสถานการณ์
3. คลาส LineNotify
- ใช้สำหรับส่งการแจ้งเตือนผ่าน LINE Notify โดยต้องระบุ token เพื่อยืนยันตัวตนของบัญชี LINE
- ฟังก์ชัน
send()
ส่งข้อความแจ้งเตือนไปยัง LINE โดยใช้ URL และ Headers ที่กำหนด
4. คลาส FireSmokeAlarmSystem
- เป็นคลาสหลักที่รวมเอาเซ็นเซอร์สำหรับไฟและควัน, เสียงเตือน, และการแจ้งเตือน LINE Notify เข้าไว้ด้วยกัน
- ฟังก์ชัน
check_sensors()
ตรวจสอบสถานะของเซ็นเซอร์ หากเซ็นเซอร์ไฟหรือควันถูกกระตุ้น จะเปิดเสียงเตือนและส่งการแจ้งเตือน LINE โดยมีข้อความแสดงว่าเกิดไฟหรือควัน แต่ถ้าไม่พบสัญญาณจากทั้งสองเซ็นเซอร์จะปิดเสียงเตือน
7. การทดลอง
การทดลอง | รายละเอียด | ผลการทดลอง |
ครั้งที่ 1 | มีควันหรือไฟเกิดขึ้น | มีการแจ้งเตือนไปยังไลน์ |
ครั้งที่ 2 | ไม่มีควันหรือไฟเกิดขึ้น | ไม่มีการแจ้งเตือนไปยังไลน์ |
อุปกรณ์ที่ทดสอบ | ทำงาน | ไม่ทำงาน |
ควันจากการเผา | ✓ | |
การตรวจสอบไฟ | ✓ | |
การตรวจสอบแก๊ส | ✓ | |
การตรวจจับแฟลชมือถือ | ✓ | |
กลิ่นปาก | ✓ |
8. สรุปผล
จากการทดลองโปรเจคตรวจสอบควันและไฟในห้องครัว ซึ่งใช้เซ็นเซอร์ตรวจจับควัน (MQ-2) และเซ็นเซอร์ตรวจจับเปลวไฟ (IR Flame Sensor) ร่วมกับบอร์ด ESP32 เพื่อควบคุมการทำงานของระบบ พบว่าระบบสามารถตรวจจับควันและเปลวไฟได้อย่างมีประสิทธิภาพ เมื่อมีควันหรือเปลวไฟเกิดขึ้น
ระบบจะทำงานโดยมีการทำการแจ้งเตือน 2 รูปแบบ คือ
1. การแจ้งด้วย Buzzer มีเสียงดังในห้องครัวที่มีการติดระบบไว้ เพื่อเตือนให้ทราบเมื่อตรวจพบความรั่วไหล
2. การแจ้งเตือนด้วย Line Notify ไปยังผู้ดูแลระบบหรือผู้ใช้งานเพื่อใหห้ทราบถึงการรั่วไหลของแก๊สหรือมีควันและไฟเกิดขึ้นภายในห้องครัว
9. ข้อมูลอ้างอิง
[1] ESP-WROOM-32 https://www.pse-world.com
[2] Infrared IR Flame Detector Sensor Module https://www.cybertice.com
[3] MQ-2 Smoke Gas Sensor https://www.cybertice.com
[4] Standard Passive Speaker Buzzer Module https://www.pse-world.com
[5] ArtronShop LineNotify library https://www.artronshop.co.th
[6] ข้อมูลเพิ่มเติม https://chatgpt.com
10. คลิปอธิบาย