บทช่วยสอนนี้จะแสดงวิธีใช้ Arduino และเซ็นเซอร์เปลวไฟเพื่อตรวจจับไฟไหม้และเปิดใช้งานระบบแจ้งเตือน
ลองนึกภาพว่ามีระบบที่สามารถตรวจจับเพลิงไหม้ได้ตั้งแต่ระยะเริ่มต้น ซึ่งอาจช่วยชีวิตและทรัพย์สินได้ นี่คือสิ่งที่คุณสามารถทำได้ด้วย Arduino และเซ็นเซอร์ตรวจจับเปลวไฟ คู่มือนี้จะให้คำแนะนำโดยละเอียดเกี่ยวกับการใช้งานเซ็นเซอร์ตรวจจับเปลวไฟร่วมกับ Arduino พร้อมคำอธิบายการใช้งานจริง คำแนะนำทีละขั้นตอน และโค้ด Arduino ที่เข้าใจง่าย
เซ็นเซอร์เปลวไฟ HW-072 ราคาไม่แพงและเป็นที่นิยมสามารถติดตั้งบนแผงทดลองได้
เซ็นเซอร์เปลวไฟคืออุปกรณ์ที่ตรวจจับแสงอินฟราเรดที่เกิดจากไฟ มักใช้ในระบบความปลอดภัยเพื่อตรวจจับเปลวไฟหรือเพลิงไหม้ เซ็นเซอร์เหล่านี้มีราคาไม่แพงและมีประสิทธิภาพอย่างเหลือเชื่อ จึงเหมาะอย่างยิ่งสำหรับโครงการต่างๆ เช่น:
ด้วยบอร์ด Arduino และเซ็นเซอร์เปลวไฟ คุณสามารถสร้างโปรเจ็กต์ที่ตรวจจับเปลวไฟและแจ้งเตือน เช่น การเปิดเสียงเตือน การส่งการแจ้งเตือน หรือการควบคุมอุปกรณ์อื่นๆ เช่น เครื่องพ่นน้ำหรือพัดลม
ก่อนจะเข้าสู่กระบวนการทีละขั้นตอน ให้รวบรวมส่วนประกอบต่อไปนี้:
หนึ่งในเซ็นเซอร์เปลวไฟที่ได้รับความนิยมมากที่สุดในโครงการ Arduino คือ โมดูลเซ็นเซอร์เปลวไฟ HW-072เป็นเซ็นเซอร์ขนาดกะทัดรัดและราคาไม่แพง เหมาะสำหรับระบบตรวจจับไฟไหม้แบบ DIY การทดลองทางการศึกษา และการประยุกต์ใช้กับหุ่นยนต์ หากคุณซื้อเซ็นเซอร์เปลวไฟทางออนไลน์หรือเป็นส่วนหนึ่งของชุดเริ่มต้น มีโอกาสสูงที่จะเป็นรุ่น HW-072
คุณสามารถมองเห็นส่วนหลักของเซ็นเซอร์เปลวไฟ HW-072 ได้อย่างชัดเจน: ชิปเปรียบเทียบ LM393, โพเทนชิออมิเตอร์เกณฑ์ และโฟโตไดโอด IR
ต่อไปนี้คือคุณสมบัติหลักที่ทำให้ HW-072 เป็นตัวเลือกอันดับต้นๆ ของผู้ผลิต:
นี่คือข้อมูลอ้างอิงด่วนสำหรับการเชื่อมต่อ HW-072 เข้ากับ Arduino ของคุณ:
สามารถเชื่อมต่อพินของเซ็นเซอร์เปลวไฟ HW-072 เข้ากับบอร์ด Arduino ได้อย่างง่ายดายโดยใช้สายจัมเปอร์ตัวเมีย-ตัวผู้ หรือเพียงแค่เสียบเข้ากับแผงทดลองโดยตรง
เซ็นเซอร์เปลวไฟส่วนใหญ่ที่ใช้ในโครงการ Arduino สร้างขึ้นโดยใช้ ชิปเปรียบเทียบ LM393วงจรรวมนี้มีบทบาทสำคัญในการตีความสัญญาณจากโฟโตไดโอดของเซ็นเซอร์เปลวไฟ (โดยปกติคือตัวรับสัญญาณ IR) และให้เอาต์พุตดิจิทัลที่เสถียรไปยัง Arduino ของคุณ
LM393 ทำอะไรได้บ้าง?
LM393 คือ เครื่องเปรียบเทียบแรงดันไฟฟ้าโดยจะเปรียบเทียบแรงดันไฟฟ้าที่มาจากโฟโตไดโอดอินฟราเรด (ซึ่งจะเปลี่ยนแปลงเมื่อมีเปลวไฟ) กับแรงดันไฟฟ้าอ้างอิงที่ตั้งไว้ล่วงหน้าโดยโพเทนชิออมิเตอร์บนโมดูลเซ็นเซอร์อย่างต่อเนื่อง
กลไกการสลับตามเกณฑ์ที่เชื่อถือได้นี้ทำให้เซนเซอร์เปลวไฟที่ใช้ LM393 เหมาะอย่างยิ่งสำหรับระบบตรวจจับไฟไหม้แบบ DIY ที่ใช้ Arduino โดยเฉพาะอย่างยิ่งเมื่อใช้ พินเอาต์พุตดิจิทัล (DO)
1. ทำความเข้าใจเกี่ยวกับพินเซ็นเซอร์เปลวไฟ
โมดูลเซ็นเซอร์เปลวไฟโดยทั่วไปจะมีสามพิน:
2. การเดินสายวงจร
ปฏิบัติตามแผนผังสายไฟด้านล่าง:
3. ตรวจสอบการเชื่อมต่อของคุณ
ตรวจสอบการเชื่อมต่อทั้งหมดอีกครั้งก่อนดำเนินการเข้ารหัส
นี่คือตัวอย่างวงจรแผงทดลองที่ใช้เซ็นเซอร์เปลวไฟ โปรดทราบว่าวงจรนี้ใช้เซ็นเซอร์เปลวไฟรุ่นอื่น โปรดตรวจสอบให้แน่ใจว่าได้ต่อสายทุกอย่างอย่างถูกต้อง
ผมติดตั้งเซ็นเซอร์เปลวไฟ HW-072 เข้ากับแผงทดลองโดยตรง ควรตรวจสอบ: VCC-5V, DO-pin ดิจิทัล และ GND-GND เสมอ
หากต้องการความเข้าใจเกี่ยวกับ Piezo Buzzer ที่ดีขึ้น โปรดอ่านบทความนี้: การสำรวจการรวม Piezo Buzzer เข้ากับ Arduino: คู่มือฉบับสมบูรณ์
ด้านล่างนี้เป็นตัวอย่างโค้ดที่ใช้ตรวจจับเปลวไฟและส่งสัญญาณเตือนโดยใช้ LED และเสียงบัซเซอร์
const int flamePin = 8; // Pin connected to flame sensor's DO pin
const int ledPin = 13; // LED pin
const int buzzerPin = 9; // Buzzer pin
void setup() {
pinMode(flamePin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600); // Initialize serial communication
}
void loop() {
int flameDetected = digitalRead(flamePin); // Read flame sensor output
if (flameDetected == LOW) { // LOW indicates flame detected
Serial.println("Flame detected!");
digitalWrite(ledPin, HIGH); // Turn on LED
digitalWrite(buzzerPin, HIGH); // Activate buzzer
} else {
Serial.println("No flame detected.");
digitalWrite(ledPin, LOW); // Turn off LED
digitalWrite(buzzerPin, LOW); // Deactivate buzzer
}
delay(100); // Delay for stability
}
1. กำหนดการเชื่อมต่อพิน
2. ฟังก์ชั่นการตั้งค่า
pinMode()
ตั้งค่าโหมดพินสำหรับเซ็นเซอร์ LED และเสียงบัซเซอร์Serial.begin(9600)
เริ่มต้นการสื่อสารแบบอนุกรมเพื่อแก้ไขข้อบกพร่อง3. ฟังก์ชันลูป
digitalRead()
ใช้LOW
) ไฟ LED และเสียงสัญญาณเตือนจะทำงานHIGH
) ทั้งสองจะถูกปิดการใช้งาน4. เอาท์พุตแบบอนุกรม
1. เปิดตัวตรวจสอบแบบอนุกรม
อัปโหลดโค้ดและเปิด Serial Monitor ใน Arduino IDE ตรวจสอบการตอบสนองของเซ็นเซอร์โดยนำไปวางในเปลวไฟ (เช่น ไฟแช็กหรือเทียน)
2. ปรับเทียบเซ็นเซอร์
เซ็นเซอร์เปลวไฟบางรุ่นมาพร้อมกับโพเทนชิออมิเตอร์สำหรับปรับความไว ทดลองตั้งค่าต่างๆ เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด
3. ความปลอดภัยต้องมาก่อน
ควรใช้ความระมัดระวังในการจัดการแหล่งกำเนิดไฟระหว่างการทดสอบ ควรมีถังดับเพลิงไว้ใกล้ตัว
ลองปรับเปลี่ยนโครงการนี้โดยจำลอง สัญญาณเตือนแบบรถดับเพลิงแทนที่จะใช้เสียงบี๊บธรรมดา เราจะสร้าง เสียงไซเรนสองโทน (สลับระหว่างสองโทนที่ต่างกันซ้ำๆ กันเป็นจังหวะคงที่) ซึ่งเลียนแบบสัญญาณเตือนฉุกเฉินจริง ทำให้น่าสนใจยิ่งขึ้น
นี่คือโค้ดที่แก้ไขโดยใช tone() ฟังก์ชันเพื่อจำลองเสียงไซเรนแจ้งเตือนเหตุเพลิงไหม้ คล้ายกับรถดับเพลิง:
const int flamePin = 8; // Pin connected to flame sensor's DO pin
const int ledPin = 13; // LED pin
const int buzzerPin = 9; // Buzzer pin
void setup() {
pinMode(flamePin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600); // Initialize serial communication
}
void loop() {
int flameDetected = digitalRead(flamePin); // Read flame sensor output
if (flameDetected == LOW) { // LOW indicates flame detected
Serial.println("Flame detected!");
digitalWrite(ledPin, HIGH); // Turn on LED
fireAlarm(); // Simulate fire alarm siren
} else {
Serial.println("No flame detected.");
digitalWrite(ledPin, LOW); // Turn off LED
noTone(buzzerPin); // Stop buzzer sound
}
delay(100); // Delay for stability
}
// Function to simulate fire alarm siren
void fireAlarm() {
int highTone = 1000; // High pitch frequency (Hz)
int lowTone = 600; // Low pitch frequency (Hz)
int duration = 400; // Duration of each tone (milliseconds)
// Play alternating high and low tones
for (int i = 0; i < 5; i++) { // Repeat the siren pattern 5 times
tone(buzzerPin, highTone);
delay(duration);
tone(buzzerPin, lowTone);
delay(duration);
}
noTone(buzzerPin); // Stop the buzzer after the loop
}
1. เพิ่ม fireAlarm()ฟังก์ชั่น
2. ภายใน loop() ฟังก์ชั่น
3. เอฟเฟกต์ไซเรนที่ปรับแต่งได้
นี่คือโค้ดอีกเวอร์ชันหนึ่งที่ใช้ พินอะนาล็อก เพื่ออ่านเอาต์พุตของเซ็นเซอร์เปลวไฟ การใช้พินอะนาล็อกช่วยให้เราสามารถวัดความเข้มของเปลวไฟที่ตรวจจับได้โดยการอ่านระดับแรงดันไฟฟ้าที่แตกต่างกัน
อัปเดตโค้ด Arduino (ใช้พินอนาล็อก)
const int flamePin = A0; // Analog pin connected to flame sensor's AO pin
const int ledPin = 13; // LED pin
const int buzzerPin = 9; // Buzzer pin
// Flame detection threshold (adjust based on your sensor and environment)
const int threshold = 300;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600); // Initialize serial communication
}
void loop() {
int flameIntensity = analogRead(flamePin); // Read analog value from flame sensor
Serial.print("Flame Sensor Value: ");
Serial.println(flameIntensity);
if (flameIntensity < threshold) { // Flame detected
Serial.println("Flame detected!");
digitalWrite(ledPin, HIGH); // Turn on LED
fireAlarm(); // Simulate fire alarm siren
} else {
Serial.println("No flame detected.");
digitalWrite(ledPin, LOW); // Turn off LED
noTone(buzzerPin); // Stop buzzer sound
}
delay(100); // Delay for stability
}
// Function to simulate fire alarm siren
void fireAlarm() {
for (int freq = 500; freq <= 1000; freq += 10) { // Ascending frequency
tone(buzzerPin, freq);
delay(10);
}
for (int freq = 1000; freq >= 500; freq -= 10) { // Descending frequency
tone(buzzerPin, freq);
delay(10);
}
}
1. โดยใช้ analogRead()
analogRead()
จะอ่านค่าระหว่าง 0 ถึง 1023ซึ่งแสดงถึงความเข้มข้นของเปลวไฟ2. เกณฑ์สำหรับการตรวจจับเปลวไฟ
3. การตรวจสอบความเข้มของเปลวไฟ
4. สัญญาณเตือนและพฤติกรรม LED
fireAlarm()
ฟังก์ชันนี้noTone()
ด้วยเวอร์ชันของโค้ดนี้มีฟังก์ชันการทำงานที่ได้รับการปรับปรุงโดยใช้ประโยชน์จากเอาต์พุตแอนะล็อกของเซ็นเซอร์เปลวไฟ ทำให้เหมาะอย่างยิ่งสำหรับโครงการที่ต้องการการตรวจจับเปลวไฟที่แม่นยำยิ่งขึ้น
เมื่อออกแบบโครงการของคุณ สิ่งสำคัญคือต้องเข้าใจ ข้อจำกัดทางกายภาพ ของเซ็นเซอร์เปลวไฟในแง่ของ ระยะทาง และ มุม
ระยะการตรวจจับ
ทิศทางการตรวจจับ (มุมมอง)
การทำความเข้าใจว่า ชิป LM393 ประมวลผลสัญญาณอินฟราเรดอย่างไร และการรู้ ระยะและทิศทางการตรวจจับที่มีประสิทธิภาพจะช่วยให้คุณออกแบบ ระบบตรวจจับไฟไหม้ที่เชื่อถือได้มากขึ้นตัวอย่างเช่น:
ต่อไปนี้เป็นเคล็ดลับบางประการที่จะช่วยให้คุณได้รับประโยชน์สูงสุดจากโมดูลเซ็นเซอร์เปลวไฟ HW-072:
โมดูล เซ็นเซอร์เปลวไฟ HW-072 เป็นเซ็นเซอร์ที่ทรงพลังแต่ใช้งานง่ายสำหรับผู้เริ่มต้น ช่วยให้ตรวจจับเปลวไฟได้อย่างง่ายดายด้วย Arduino ด้วยตัว เปรียบเทียบ LM393ใน ตัว เอาต์พุตอะนาล็อกและดิจิทัลคู่และ ความไวที่ปรับได้จึงมอบทั้งความเรียบง่ายและความยืดหยุ่นสำหรับโครงการตรวจจับเพลิงไหม้หรือระบบอัตโนมัติด้านความปลอดภัยทุกประเภท
การทำตามคำแนะนำนี้จะช่วยให้คุณเรียนรู้วิธีใช้เซ็นเซอร์เปลวไฟกับ Arduino การเชื่อมต่ออุปกรณ์ อัปโหลดโค้ด และทดสอบระบบอย่างมีประสิทธิภาพ โปรเจกต์นี้เป็นจุดเริ่มต้นที่ดีสำหรับผู้เริ่มต้นใช้งาน Arduino และมอบทักษะอันทรงคุณค่าสำหรับการสร้างแอปพลิเคชันที่เน้นความปลอดภัย