การสูบบุหรี่เป็นอันตรายต่อสุขภาพอย่างร้ายแรง แม้ในพื้นที่ที่จัดไว้ให้เฉพาะ แต่ควันบุหรี่มือสอง (Passive Smoke) ก็ยังคงส่งผลเสียต่อผู้คนรอบข้างที่ไม่ได้สูบด้วยเช่นกัน ด้วยเหตุนี้ ผมจึงได้พัฒนา เครื่องตรวจจับควันสำหรับพื้นที่ปลอดบุหรี่ (Smoke Detector for No-Smoking Zones) ขึ้นมา โดยอุปกรณ์นี้สามารถนำไปติดตั้งเป็นคู่หรือเป็นจุดต่างๆ ในโรงแรม, โรงพยาบาล หรือห้างสรรพสินค้า เพื่อเฝ้าระวังและรักษาสุขอนามัยในพื้นที่สาธารณะได้อย่างมีประสิทธิภาพ
หลักการทำงานของระบบ (System Logic)
การทำงานของวงจรนี้ถูกออกแบบมาให้มีความตรงไปตรงมาแต่ทรงพลัง เมื่อเซนเซอร์ MQ-2 ตรวจพบความเข้มข้นของก๊าซหรือควันในอากาศ และแปลงเป็นค่าสัญญาณดิจิทัล/อะนาล็อกส่งไปยัง Arduino หากค่าที่อ่านได้สูงเกินกว่าเกณฑ์ที่กำหนด (Threshold) ในที่นี้คือ 150 ไมโครคอนโทรลเลอร์จะสั่งการทันที 2 อย่างคือ:
- ส่งสัญญาณเสียง: ผ่าน Buzzer เพื่อเตือนให้ผู้ที่สูบบุหรี่และคนรอบข้างทราบว่ามีการละเมิดกฎ
- แสดงสัญลักษณ์เตือน: บนหน้าจอ 8x8 Matrix Display โดยจะปรากฏเป็นรูปกากบาท (X) เพื่อเป็นการแจ้งเตือนทางสายตาที่ชัดเจน
เจาะลึกอุปกรณ์ที่ใช้ในโปรเจค (Components Deep Dive)
ก่อนจะเริ่มประกอบวงจร เรามาทำความเข้าใจคุณสมบัติทางวิศวกรรมของอุปกรณ์แต่ละชิ้นกันก่อนครับ:
1. MQ-2 Gas Sensor (เซนเซอร์ตรวจจับก๊าซและควัน)
MQ-2 เป็นเซนเซอร์ประเภทสารกึ่งตัวนำ (Semiconductor) ที่มีความไวต่อก๊าซไวไฟและควันสูง ภายในประกอบด้วยวัสดุตรวจจับคือ Tin Dioxide (SnO2) ซึ่งมีความต้านทานเปลี่ยนไปตามความเข้มข้นของก๊าซในอากาศ
- การทำงาน: เมื่อมีควันมากระทบ สารเคลือบจะทำปฏิกิริยาทำให้ความต้านทานลดลง และปล่อยแรงดันไฟฟ้าออกมาทางขา AO (Analog Output)
- ขาการใช้งาน: มี 4 พิน ได้แก่ VCC (5V), GND, AO (ส่งค่าความเข้มข้นเป็นตัวเลข 0-1023) และ DO (ส่งค่า Digital 0 หรือ 1 เมื่อถึงจุดที่ตั้งไว้ด้วย Potentiometer บนตัวมัน)

2. Matrix Dot Display (MAX7219)
หน้าจอแสดงผลแบบจุดขนาด 8x8 รวมทั้งหมด 64 LEDs หากเราต่อตรงๆ จะต้องใช้สายไฟจำนวนมหาศาล แต่ด้วยชิป MAX7219 ซึ่งเป็น Serial Input Driver ทำให้เราควบคุมไฟทั้ง 64 ดวงได้โดยใช้สายสัญญาณเพียง 3 เส้น (DIN, CS, CLK) ผ่านกระบวนการที่เรียกว่า Multiplexing

ความพิเศษของโมดูลนี้คือความสามารถในการปรับความสว่างผ่านซอฟต์แวร์ และการเชื่อมต่อแบบพ่วงกัน (Daisy Chain) ได้หลายจอในอนาคต

3. Buzzer (ลำโพงสัญญาณเตือน)
อุปกรณ์ส่งสัญญาณเสียงขนาดเล็ก ในโปรเจคนี้เราใช้ Buzzer เพื่อสร้างเสียงแจ้งเตือนทันทีที่ระบบตรวจพบความผิดปกติ มีขั้วบวก (+) และลบ (-) ชัดเจน โดยจะรับสัญญาณไฟจากขา Digital ของ Arduino

4. Arduino UNO R3
สมองกลหลักของโปรเจค ใช้ชิปไมโครคอนโทรลเลอร์ ATmega328P ทำหน้าที่ประมวลผลลอจิกทั้งหมด โดยจะรับค่า Analog จาก MQ-2 มาเปรียบเทียบกับค่าใน Code และส่งคำสั่งไปควบคุมหน้าจอและ Buzzer

การประกอบวงจร (Circuit Assembly)
การเชื่อมต่ออุปกรณ์ต่างๆ เข้าด้วยกันสามารถทำได้ตามผังวงจรด้านล่างนี้ โดยเน้นการต่อขา Data ของ Matrix Display เข้ากับขา Digital ของ Arduino และขา AO ของเซนเซอร์เข้ากับขา Analog (A0)

Circuit Diagram สำหรับการอ้างอิง:

การพัฒนาซอฟต์แวร์ (Coding & Logic)
โครงสร้างโค้ดของ Arduino จะแบ่งเป็นสองส่วนหลักคือ void setup() (กำหนดค่าเริ่มต้น) และ void loop() (ทำงานวนซ้ำ)
วิเคราะห์ลอจิกภายใน Code:
- อ่านค่า: ระบบจะใช้ฟังก์ชัน
analogRead(A0)เพื่อดึงค่าความหนาแน่นของควันจาก MQ-2 - เงื่อนไข (Condition):
- ถ้าค่า > 150: สั่งให้ Buzzer ส่งสัญญาณระดับ HIGH และเขียนข้อมูล Bit เพื่อแสดงรูปกากบาทบน MAX7219
- ถ้าค่า <= 150: สั่งให้ Buzzer เป็น LOW และเคลียร์หน้าจอ หรือแสดงสถานะปกติ
- Library ที่จำเป็น: เพื่อให้การควบคุม Matrix ง่ายขึ้น เราจำเป็นต้องติดตั้งไลบรารี MaxMatrix หรือ LedControl
วิธีการติดตั้ง Library: ไปที่เมนู Tools ใน Arduino IDE เลือก Manage Libraries... แล้วค้นหาชื่อไลบรารีที่ต้องการ



ผลลัพธ์และการทดสอบ (Results)
หลังจากอัปโหลดโค้ดเรียบร้อยแล้ว ให้เปิด Serial Monitor เพื่อดูค่าที่ส่งมาจากเซนเซอร์ในสภาวะปกติ:
- สภาวะปกติ: ค่าที่อ่านได้ควรจะต่ำกว่า 150 (ขึ้นอยู่กับสภาพแวดล้อม สามารถปรับจูนค่านี้ได้ในโค้ด)
- เมื่อมีควัน: เมื่อลองนำแหล่งกำเนิดควันเข้าใกล้เซนเซอร์ ค่าจะพุ่งสูงเกิน 150 ทันที ลำโพง Buzzer จะแผดเสียงเตือน และหน้าจอ Matrix จะปรากฏเครื่องหมายกากบาทสีแดงสว่างขึ้นมา เป็นอันเสร็จสมบูรณ์สำหรับการสร้างระบบเตือนภัยอัจฉริยะนี้!