โปรเจกต์ Smoke Detector ที่ใช้ Arduino
โปรเจกต์ที่ใช้ Arduino นี้คือ Smoke Detector และ Fire Alarm ที่สร้างขึ้นโดยใช้ MQ6 gas sensor และควบคุม exhaust fan เพื่อป้องกันการขาดอากาศหายใจ
โปรเจกต์ที่ใช้ Arduino นี้คือ Smoke Detector และ Fire Alarm ที่สร้างขึ้นโดยใช้ MQ6 gas sensor และควบคุม exhaust fan เพื่อป้องกันการขาดอากาศหายใจ
▶ กดเพื่อดูวิดีโอสาธิตโปรเจกต์
อัคคีภัยไม่ใช่เรื่องไกลตัว เพื่อหลีกเลี่ยงความเสียหายจากอุบัติเหตุไฟไหม้ จึงมีการติดตั้งเครื่องตรวจจับควันในสถานที่ที่ต้องการความปลอดภัยสูง เครื่องตรวจจับควันเหล่านี้จะตรวจจับควันเมื่อเกิดเหตุไฟไหม้และส่งสัญญาณเตือนภัยล่วงหน้า ด้วยวิธีนี้ก่อนที่ไฟจะลุกลามไปยังส่วนอื่นๆ ของอาคาร ผู้คนจะสามารถอพยพและดำเนินมาตรการโต้ตอบได้ทันที ในโปรเจกต์นี้เราจึงได้ออกแบบเครื่องตรวจจับควันขึ้นมาเช่นกัน
เครื่องตรวจจับควันในโปรเจกต์นี้ไม่เพียงแต่ส่งสัญญาณเตือนเท่านั้น แต่ยังเปิดการทำงานของพัดลมระบายอากาศเพื่อให้สามารถกำจัดควันออกไปได้ในทันที ในการสาธิตนี้เราได้ใช้ DC motor ทำงานแทนพัดลมระบายอากาศจริง ความเข้มข้นของควันจะถูกตรวจจับโดย Sensor MQ-6 และแสดงผลบนจอ LCD เมื่อความเข้มข้นของควันถึงระดับอันตรายซึ่งอาจบ่งบอกถึงการเกิดไฟไหม้ LED แสดงสถานะจะทำงาน
โปรเจกต์นี้สร้างขึ้นบน Arduino Pro Mini และใช้ Gas Sensor MQ-06 เพื่อตรวจจับควัน Gas Sensor MQ6 จะตรวจจับความเข้มข้นของก๊าซในหน่วย ppm และส่งค่าออกมาเป็น Analog ซึ่งสามารถแปลงเป็นค่า Digital ได้โดยใช้ Analog to Digital Convertor ที่มีอยู่ในตัว Arduino ค่า Digital ที่ได้จะมีความยาว 10-bit และมีค่าตั้งแต่ 0 ถึง 1023 โปรเจกต์นี้ช่วยให้ผู้ใช้สามารถกำหนดระดับอันตรายสำหรับการรั่วไหลได้โดยอ้างอิงจากค่า Digital เดียวกันนี้ เมื่อค่าที่ผู้ใช้ตั้งไว้ตรงกับค่าที่ Sensor ตรวจพบ ก็จะส่งสัญญาณเตือนภัย Sensor MQ6 สามารถปรับจูน (Calibrate) ได้โดยการเชื่อมต่อ Load Resistance ที่มีค่าคงที่เข้ากับ Sensor
Sketch ของ Arduino จะจัดการอ่านข้อมูล Sensor จาก Gas Sensor MQ-06, เปรียบเทียบค่า Sensor, แสดงผลข้อมูล Sensor บน LCD แบบตัวอักษร, ส่งสัญญาณเตือนผ่าน LED และสั่งให้ DC motor ทำงานเมื่อมีควันหนาแน่น DC motor ที่ใช้เป็นพัดลมระบายอากาศจะถูกควบคุมโดย IC ขับ Motor L293D
วงจรนี้สร้างขึ้นบน Arduino Pro Mini โดยมีการเชื่อมต่อ Gas Sensor MQ-06, จอแสดงผล LCD, Buzzer และ IC ขับ Motor L293D เข้ากับ Board Arduino วงจรถูกเชื่อมต่อในลักษณะดังนี้ -
MQ6 Gas Sensor - MQ6 คือ Module ของ Gas Sensor ตัว Module มี 4 Pins สำหรับการเชื่อมต่อ โดยสอง Pins คือ VCC และ Ground, หนึ่ง Pin คือ Analog output และอีกหนึ่ง Pin คือ Digital pin ผ่านตัวเปรียบเทียบ (LM358) Pin Analog output ของ Module ใช้สำหรับตรวจจับระดับความเข้มข้นของควันหรือการรั่วไหลของก๊าซ และเชื่อมต่อกับ Pin Analog input A0 ของ Board Arduino ตัว Sensor จะวัดความเข้มข้นของก๊าซที่รั่วไหลในหน่วย ppm ตามสูตรต่อไปนี้ -
Concen = 1036.5*R^-2.392 โดยที่
Concen คือความเข้มข้นของ LPG ในหน่วย ppm
R คืออัตราส่วนของ Rs ซึ่งเป็นแรงต้านทานของ Sensor ต่อ R0 ซึ่งเป็นแรงต้านทานที่ 1000ppm ณ อุณหภูมิ 20 องศาเซลเซียส และความชื้น 65%
ค่าแรงต้านทานของ Sensor (Rs) คำนวณได้จากสูตร -
Rs = (1024/ADC_DATA-1)*RL โดยที่
Rs คือค่าแรงต้านทานของ Sensor
ADC_DATA คือค่า Digital ที่อ่านได้ตั้งแต่ 0 ถึง 1023
RL คือ Load resistance ตั้งแต่ 10K ถึง 40K ohms
ดังนั้น สำหรับค่า Load resistance ที่คงที่ ค่า ADC ที่อ่านได้จะเป็นสัดส่วนกับความเข้มข้นของก๊าซในหน่วย ppm
ใน Datasheet ได้ระบุอัตราส่วนของความเข้มข้นต่อแรงต้านทานของ Sensor ไว้ กราฟถูกจัดทำขึ้นภายใต้สภาวะปกติที่อุณหภูมิ 20 องศาเซลเซียสและความชื้น 65% ดังนั้น Rs=R0 สำหรับเส้นโค้งนี้ ด้วยวิธีนี้ความเข้มข้นของก๊าซในหน่วย ppm จะเท่ากับค่า ADC ที่อ่านได้ ค่า ADC จะอยู่ระหว่าง 0 ถึง 1023 เราใช้ Pin Analog output ของ Sensor เพื่อรับค่า Pins VCC และ Ground จะเชื่อมต่อกับ VCC และ Ground รวม ในขณะที่ Pin Analog output จะเชื่อมต่อกับ Pin A0 ของ Board Arduino
16X2 LCD: จอแสดงผล LCD 16X2 ใช้สำหรับแสดงค่าความเข้มข้นของก๊าซ โดยเชื่อมต่อกับ Board Arduino โดยต่อ Data Pins เข้ากับ Pins 4 ถึง 7 ของ Board Arduino ส่วน Pins RS และ E ของ LCD จะเชื่อมต่อกับ Pins 2 และ 3 ของ Arduino UNO ตามลำดับ Pin RW ของ LCD จะเชื่อมต่อกับ Ground
LED - LED ถูกเชื่อมต่อเพื่อส่งสัญญาณเตือนภัย โดยเชื่อมต่อโดยตรงที่ Pin 12 ของ Board Arduino ขา Anode ของ LED จะต่อกับ Pin ของ Controller และขา Cathode ต่อกับ Ground สำหรับการส่งสัญญาณเตือน LED จะถูกสั่งให้ ON โดยการส่ง Logic HIGH ไปที่ Pin ของ Controller ที่เกี่ยวข้อง
L293D DC Motor Driver IC - L293D คือ IC สำหรับควบคุม Motor มี 16 Pins พร้อมการกำหนด Pin ดังนี้:
แม้ว่า IC L293D จะสามารถควบคุม DC motor ได้สองตัว แต่ในโปรเจกต์นี้ใช้ DC motor เพียงตัวเดียวเพื่อทำหน้าที่เป็นพัดลมระบายอากาศ DC motor จะถูกเชื่อมต่อระหว่าง Pins 14 และ 11 ของ IC ขับ Motor
IC L293D จะควบคุม DC Motors ตาม Truth tables ดังนี้:
Pins 4, 5, 13 และ 12 ของ L293D จะถูกต่อลง Ground ในขณะที่ Pins 1, 16 และ 9 จะเชื่อมต่อกับ 5V DC และ Pin 8 เชื่อมต่อกับ 12V DC ส่วน Pins 15 และ 10 ของ IC ขับ Motor จะเชื่อมต่อกับ Pins 10 และ 11 ของ Board Arduino ผ่าน Optocouplers เพื่อป้องกัน Board Arduino จากกระแสย้อนกลับ (Back current) จาก IC ขับ Motor
Power Supply - ในวงจรนี้ Arduino และ IC อื่นๆ ต้องการไฟ DC ที่ควบคุมแรงดัน 5V สำหรับการทำงาน ในขณะที่ IC ขับ Motor ก็ต้องการไฟ 12V DC ด้วย เราใช้แบตเตอรี่ 18V เป็นแหล่งพลังงานหลัก แหล่งจ่ายไฟจากแบตเตอรี่จะถูกควบคุมแรงดันเป็น 5V และ 12V โดยใช้ IC 7805 และ 7812 Pin 1 ของ IC ควบคุมแรงดันทั้งสองจะต่อกับขั้วบวกของแบตเตอรี่ และ Pin 2 ของ IC ทั้งสองจะต่อลง Ground แรงดันเอาต์พุตจะถูกดึงมาจาก Pin 3 ของ IC ควบคุมแรงดันแต่ละตัว นอกจากนี้ยังมี LED พร้อมกับ Pull-up resistor ขนาด 10K Ω ต่อเชื่อมระหว่าง Ground รวมและ Pin เอาต์พุต เพื่อเป็นสัญญาณไฟแสดงสถานะการจ่ายไฟ
การทำงานของวงจรเครื่องตรวจจับควันด้วย Arduino
เมื่อเปิดอุปกรณ์ Arduino จะเริ่มต้นการทำงานของ Module Sensor และจอแสดงผล LCD จากนั้นจะเริ่มอ่านข้อมูลจาก Sensor MQ-06 ข้อมูลจะถูกอ่านจาก Pin Analog output ของ Sensor ข้อมูลที่อ่านได้จะอยู่ในรูปของแรงดัน Analog ซึ่งจะถูกเปลี่ยนเป็น Digital โดยใช้ช่อง ADC ภายในตัวเครื่อง ช่อง ADC บน Board Arduino มีความละเอียด 10-bit ดังนั้นค่า Digital ที่อ่านได้จะแตกต่างกันไปตั้งแต่ 0 ถึง 1023 จากการ Calibrate ค่า ADC ที่อ่านได้จะเป็นสัดส่วนโดยตรงกับความเข้มข้นของควันในหน่วย PPM ค่าที่อ่านได้จะถูกเก็บไว้ใน Variable และแสดงผลบนหน้าจอ LCD
ค่าที่อ่านได้จะถูกนำไปเปรียบเทียบกับค่า Threshold ที่ปรับจูนไว้ซึ่งแสดงถึงระดับอันตรายของการตรวจพบควัน หากความเข้มข้นของควันในหน่วย PPM เกินค่า Threshold ทาง Board Arduino จะเปิดสัญญาณเตือนในรูปแบบของ LED โดยส่งสัญญาณ HIGH ไปยัง Pin ของ Controller ที่เกี่ยวข้อง และเปิดการทำงานของ DC motor ที่ใช้เป็นพัดลมระบายอากาศ มิฉะนั้น ตราบใดที่ความเข้มข้นของควันในหน่วย PPM ยังไม่เกินขีดจำกัดอันตราย LED จะถูกสั่งให้ OFF โดยการส่งค่า LOW ไปยัง Pin ของ Controller ที่เกี่ยวข้อง และ Motor จะถูกสั่งให้อยู่ในสภาวะหยุดทำงานโดยการส่งค่า LOW ไปยัง Pins ที่ควบคุมสัญญาณ Input ของ Motor
คุณสามารถตรวจสอบ Code ของโปรเจกต์เพื่อเรียนรู้วิธีที่ Board Arduino แบบพกพาอ่านข้อมูลจาก Sensor MQ-06, จัดเก็บข้อมูล Sensor, แสดงผลบนหน้าจอ LCD, เปรียบเทียบกับค่า Threshold และสั่งเปิดใช้งาน Motor รวมถึง LED แสดงสถานะเมื่อตรวจพบระดับความเข้มข้นของควันที่เป็นอันตราย
มีการนำเข้า liquidCrystal.h เพื่อจัดการกับ LCD และสร้าง Object ของ LCD พร้อมกำหนด Pins ของ Controller ให้กับมัน มีการประกาศ Variables สำหรับระบุการเชื่อมต่อวงจรของ LED, Pin Analog output ของ Gas Sensor และ IC ขับ Motor พร้อมกำหนด Pins ของ Controller
#include
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
int led = 12;
int Gassensor = A0;
int motor11 = 10;
int motor12 = 11;
ฟังก์ชัน setup() จะถูกเรียกใช้ซึ่งจะทำงานเพียงครั้งเดียว โดยในฟังก์ชันนี้ Pins ที่เชื่อมต่อกับ Input ของตัวขับ Motor และ LED จะถูกตั้งค่าเป็น Digital Output โดยใช้ฟังก์ชัน pinMode() และอัตรา Baud สำหรับการสื่อสาร Serial กับ LCD จะถูกตั้งไว้ที่ 9600 Baud ต่อวินาที โดยใช้ Method begin() บน Serial object จากนั้น LCD object จะถูกกำหนดค่าเริ่มต้นเป็นโหมดตัวอักษร 16X2 และแสดงข้อความเริ่มต้นบางอย่างบนหน้าจอ
void setup()
{
pinMode(motor11, OUTPUT);
pinMode(motor12, OUTPUT);
pinMode(led, OUTPUT);
Serial.begin(9600);
lcd.begin(16, 2);
lcd.print("ENGINEERS GARAGE");
lcd.setCursor(0, 1);
}
ฟังก์ชัน loop() จะถูกเรียกใช้ซึ่งจะวนซ้ำไปเรื่อยๆ ไม่รู้จบ ในฟังก์ชัน loop() ค่า Sensor จะถูกอ่านโดยใช้ฟังก์ชัน analogRead() และเก็บไว้ใน Variable ค่านี้จะถูกพิมพ์บนหน้าจอ LCD และเปรียบเทียบกับระดับความเข้มข้น 200 PPM หากน้อยกว่า 200 Motor จะถูกปิดและ LED แสดงสถานะจะปิดด้วยเช่นกัน พร้อมแสดงข้อความว่าไม่พบตรวจควันบน LCD หากความเข้มข้นของควันมากกว่า 400 PPM Motor จะถูกสั่งให้หมุนตามเข็มนาฬิกาและ LED แสดงสถานะจะถูกเปิดใช้งาน พร้อมแสดงข้อความว่าตรวจพบควันบน LCD
Arduino Code ที่สมบูรณ์สำหรับโปรเจกต์เครื่องตรวจจับควัน สามารถดูได้ในส่วนของ Source Code
.
สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้
ประเมิน Project
เอาฟอร์มยาวออกจากท้ายหน้า Project แล้ว เหลือเป็นปุ่มให้กดไปกรอกหน้าเดียว ตัวใหญ่ เว้นบรรทัดเยอะ อ่านง่ายกว่า
รีวิวจากคนใช้งานจริง
ถ้าเคยสั่งงาน เคยอ่านหน้านี้แล้วได้ประโยชน์ หรือมีข้อเสนอแนะ ฝากรีวิวไว้ได้เลย
ยังไม่มีรีวิวบนหน้านี้ ถ้าเคยใช้งานหรือมีข้อเสนอแนะ เขียนเป็นคนแรกได้เลย