โปรเจค ESP32 เครื่องตรวจจับควัน เซนเซอร์ MQ-2 พร้อม Code Arduino IDE
บทนำ
การตรวจจับก๊าซและควันเป็นสิ่งสำคัญอย่างมากในชีวิตประจำวัน โดยเฉพาะในสถานการณ์ที่ต้องการความปลอดภัย เช่น การป้องกันไฟไหม้ในบ้านหรือโรงงานอุตสาหกรรม ด้วยเทคโนโลยีปัจจุบัน เราสามารถสร้างระบบตรวจจับควันและก๊าซที่ราคาไม่แพงและใช้งานง่ายได้ด้วย ESP32 และ เซนเซอร์ MQ-2 ซึ่งเป็นเซนเซอร์ที่ออกแบบมาเพื่อตรวจจับควัน ก๊าซ LPG และก๊าซไวไฟอื่น ๆ
ในบทความนี้ คุณจะได้เรียนรู้วิธีการสร้างเครื่องตรวจจับควันด้วย ESP32 และเซนเซอร์ MQ-2 พร้อมโค้ด Arduino IDE สำหรับการเริ่มต้นโปรเจค DIY ที่คุณสามารถปรับปรุงเพิ่มเติมได้
อุปกรณ์ที่ต้องใช้
- ESP32
- Sensor MQ-2
- LED สีแดง (สำหรับแสดงสถานะอันตราย)
- LED สีเขียว (สำหรับแสดงสถานะปลอดภัย)
- ตัวต้านทาน (สำหรับเชื่อมต่อ LED)
- สายไฟ Jumper
- บอร์ดเบรดบอร์ด
หากคุณยังไม่เคยใช้ไมโครคอนโทรลเลอร์ตัวนี้ แนะนำให้อ่าน ESP32 คืออะไร? จุดเด่นและการใช้งานเบื้องต้น ก่อนเริ่มลงมือ
การต่อวงจร
การเชื่อมต่ออุปกรณ์ทั้งหมดเป็นขั้นตอนที่สำคัญ เพื่อให้ระบบทำงานได้อย่างถูกต้อง ให้ต่อวงจรตามนี้:
- MQ-2 เซนเซอร์
- เชื่อมขา VCC ของ MQ-2 เข้ากับไฟเลี้ยง 3.0V
- เชื่อมขา GND ของ MQ-2 เข้ากับขา GND
- เชื่อมขา AOUT ของ MQ-2 เข้ากับขา GPIO 34 ของ ESP32 (ในโค้ดกำหนดเป็น
MQ2_PIN)
- LED สีแดง (RED LED)
- เชื่อมขา บวก (Anode) ของ LED เข้ากับขา GPIO 12 ของ ESP32 (ในโค้ดกำหนดเป็น
LEDRED_PIN) - เชื่อมขา ลบ (Cathode) ของ LED เข้ากับตัวต้านทาน แล้วต่อเข้ากับขา GND
- เชื่อมขา บวก (Anode) ของ LED เข้ากับขา GPIO 12 ของ ESP32 (ในโค้ดกำหนดเป็น
- LED สีเขียว (GREEN LED)
- เชื่อมขา บวก (Anode) ของ LED เข้ากับขา GPIO 14 ของ ESP32 (ในโค้ดกำหนดเป็น
LEDGREEN_PIN) - เชื่อมขา ลบ (Cathode) ของ LED เข้ากับตัวต้านทาน แล้วต่อเข้ากับขา GND
- เชื่อมขา บวก (Anode) ของ LED เข้ากับขา GPIO 14 ของ ESP32 (ในโค้ดกำหนดเป็น
หากต้องการดูรายละเอียดตำแหน่งขาของบอร์ด Devkit V1 สามารถอ่านได้ที่ ESP32 Pinout Devkit V1
การเขียนโค้ด Arduino IDE
ด้านล่างนี้เป็นโค้ดที่คุณสามารถใช้เพื่อเริ่มต้นโปรเจคของคุณ:
พร้อมจะเขียนโปรแกรมลงบอร์ด Arduino ESP32 แล้วหรือยัง? เริ่มได้เลยจาก Arduino IDE Guide — สอนละเอียด เข้าใจง่าย
/*
Project : ESP32 + MQ-2 Basic Alarm
Link : https://www.devadiy.com
Repo : https://github.com/DevaDIY/esp-mq2-basic
Note : ใช้ ADC1 เพื่อลดปัญหาชนกับ Wi-Fi
*/
#include <Arduino.h>
// ขาเชื่อมต่อ (แนะนำ ADC1)
#define MQ2_PIN 34 // ADC1_CH6 (GPIO34) - อ่านค่าได้อย่างเดียว
#define LEDRED_PIN 12
#define LEDGREEN_PIN 14
// การตั้งค่า ADC
// หากเอาต์พุต MQ-2 = 0–3.3V ให้ใช้ 11dB (อ่านได้ถึง ~3.3V)
#define USE_ADC_11DB
// ค่ากำหนดแจ้งเตือน (ใช้ hysteresis)
#define GAS_TH_HI 2000 // เกินค่านี้ = อันตราย (ประมาณ)
#define GAS_TH_LO 1800 // ต่ำกว่านี้ = กลับสภาวะปกติ
// การกรองค่า (Moving Average)
#define AVG_SAMPLES 10
bool alarmState = false;
uint16_t readMQ2Avg() {
uint32_t sum = 0;
for (int i = 0; i < AVG_SAMPLES; i++) {
sum += analogRead(MQ2_PIN);
delay(2);
}
return (uint16_t)(sum / AVG_SAMPLES);
}
void setup() {
Serial.begin(115200);
delay(200);
#ifdef USE_ADC_11DB
analogSetAttenuation(ADC_11db);
#else
analogSetAttenuation(ADC_6db); // เผื่อใช้บอร์ดที่มีสเกลต่างกัน
#endif
// ไม่ต้องตั้งความละเอียดก็ได้ (ESP32 ค่าเริ่มต้น 12 บิต 0..4095)
// ถ้าจะตั้ง: analogReadResolution(12);
pinMode(LEDRED_PIN, OUTPUT);
pinMode(LEDGREEN_PIN, OUTPUT);
digitalWrite(LEDRED_PIN, LOW);
digitalWrite(LEDGREEN_PIN, HIGH);
Serial.println("เริ่มต้นใช้งาน MQ-2 Sensor (ESP32 + ADC1)!");
}
void loop() {
uint16_t gasRaw = readMQ2Avg();
// แสดงผลดิบ (0..4095)
Serial.print("Gas Raw: ");
Serial.println(gasRaw);
// ตัดสินใจด้วย hysteresis
if (!alarmState && gasRaw > GAS_TH_HI) {
alarmState = true;
Serial.println("!! ALERT: ก๊าซ/ควันเกินระดับปลอดภัย (TH_HI) !!");
} else if (alarmState && gasRaw < GAS_TH_LO) {
alarmState = false;
Serial.println("-- SAFE: ค่ากลับสู่ช่วงปลอดภัย (TH_LO) --");
}
// แสดงผล LED
digitalWrite(LEDRED_PIN, alarmState ? HIGH : LOW);
digitalWrite(LEDGREEN_PIN, alarmState ? LOW : HIGH);
delay(200);
}
ดาวน์โหลดโค้ด
กรุณา เข้าสู่ระบบ เพื่อดาวน์โหลด
การทำงานของโค้ด
- ในฟังก์ชัน
setup():- ตั้งค่าความละเอียด ADC ของ ESP32 เป็น 12-bit (0-4095)
- กำหนดการตั้งค่าขา I/O สำหรับ MQ-2 และ LED
- ในฟังก์ชัน
loop():- อ่านค่าจากเซนเซอร์ MQ-2 ผ่านฟังก์ชัน
readMQ2Avg() - ตรวจสอบค่าที่ได้เปรียบเทียบกับ
GAS_TH_HIที่กำหนด (2000) - หากค่ามากกว่า
GAS_TH_HI:- เปิด LED สีแดง (แจ้งเตือนว่ามีควันหรือก๊าซเกิน)
- หากค่าต่ำกว่า
GAS_TH_LO:- เปิด LED สีเขียว (สถานะปลอดภัย)
- อ่านค่าจากเซนเซอร์ MQ-2 ผ่านฟังก์ชัน
เพิ่งเริ่มใช้ ESP32 หรือยังไม่แน่ใจว่าสามารถอ่านค่าจากขาอนาล็อกอย่างไร? ลองเข้าไปดูที่ ESP32 Analog Read เลยครับ! ง่ายกว่าที่คิดนะ
การทดสอบและปรับค่า GAS_TH_HI
ค่าGAS_TH_HI ที่กำหนดในโค้ดคือ 2000 ซึ่งเป็นค่ากลางสำหรับการตรวจจับ หากต้องการปรับค่าความไวในการตรวจจับ คุณสามารถปรับค่าดังนี้:- เพิ่มค่าสูงขึ้น เพื่อลดความไวในการตรวจจับ
- ลดค่าลง เพื่อเพิ่มความไวในการตรวจจับ
คำแนะนำสำหรับการใช้งาน
- ตรวจสอบแหล่งจ่ายไฟให้เพียงพอสำหรับ เซนเซอร์ MQ-2
- ใช้งานในพื้นที่ที่ต้องการตรวจจับควันหรือก๊าซไวไฟ เช่น ห้องครัว หรือพื้นที่เสี่ยงไฟไหม้
- หากต้องการนำไปใช้ในงานจริง ควรมีการสอบเทียบเซนเซอร์เพื่อให้ได้ค่าที่แม่นยำ
สำหรับใครที่ต้องการสร้างเว็บเซิร์ฟเวอร์บน ESP32 อย่างรวดเร็ว แนะนำให้อ่าน ESP32 ESPAsyncWebServer Guide เพื่อเรียนรู้วิธีใช้งาน Async WebServer กันครับ
สรุป
โปรเจค ESP32 กับเซนเซอร์ MQ-2 เป็นตัวอย่างของการนำเทคโนโลยี IoT มาประยุกต์ใช้ในงานด้านความปลอดภัย คุณสามารถนำไปพัฒนาต่อ เช่น เพิ่มการแจ้งเตือนผ่าน Wi-Fi หรือแอปพลิเคชันมือถือ เพื่อให้การใช้งานมีประสิทธิภาพมากขึ้น และเหมาะสมกับสถานการณ์ของคุณ
หวังว่าโปรเจคนี้จะช่วยให้คุณเข้าใจการใช้งาน ESP32 กับเซนเซอร์ตรวจจับควันและก๊าซได้ดีขึ้น ลองทำตามและสนุกกับการพัฒนาโปรเจค DIY ของคุณ! 😊






