Home IoT Hub Series · 10
[10편] 가스 냄새가 나기 전에 먼저 경고받자 - MQ-5 주방 가스 감지 노드
![[10편] 가스 냄새가 나기 전에 먼저 경고받자 - MQ-5 주방 가스 감지 노드 대표 이미지](/iot-lab/assets/gas-leak-mq5-hero.png)
이 글은 2편: 두뇌 만들기에서 구축한 중앙 NodeMCU 서버에 연결되는 우리집 IoT 허브 구성 문서입니다. MQ-5 센서가 가스 농도 상승을 감지하면 두뇌 서버의 경고 슬롯을 갱신하고 부저 판단으로 이어집니다. 수집된 데이터는 로컬 무선망
IoT_Hub_Net을 통해 중앙 서버의 7번 가스 누출 경고 슬롯(/set?no7=값)을 갱신하며, 20채널 스마트홈 통합 컨트롤러의 판단 근거로 사용됩니다.MQ-5는 LPG, LNG, 도시가스 등을 감지하는 반도체식 가스 센서다. 농도가 높아지면 아날로그 출력이 올라간다. 7번 슬롯(Gas Leak)은 경고 대상이다. 값이 1이 되면 두뇌 부저가 울립니다.
준비물과 가격
| 부품 | 수량 | 개당 가격 |
|---|---|---|
| Wemos D1 Mini | 1개 | 2,000원 |
| MQ-5 가스 센서 모듈 | 1개 | 1,500원 |
| 점퍼 와이어 3개 | — | — |
| 합계 | 3,500원 |
핀 연결
| 센서/모듈 | 보드 연결 |
|---|---|
| VCC | 5V (VU 핀) |
| GND | GND |
| AOUT | A0 (아날로그) |
VU 핀(USB 5V)을 쓴다.선행 작업
추가 라이브러리는 필요하지 않습니다. analogRead(A0)만 사용하면 됩니다.
전체 코드
MQ-5는 초기 예열이 30초~1분 필요하다. 농도 임계값은 설치 환경에 따라 다르니, 깨끗한 공기에서 시리얼 모니터로 기준값을 확인한 뒤 THRESHOLD를 설정한다. 일반적으로 공기 중에서는 100~200, 가스가 새면 400 이상으로 치솟는다.
#include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> const char* ssid = "IoT_Hub_Net"; const char* password = "iothub1234"; const char* hubURL = "http://192.168.1.1"; #define GAS_PIN A0 #define SLOT_NO 7 #define THRESHOLD 400 // 이 값 이상이면 누출 의심 #define INTERVAL 5000 void setup() { Serial.begin(115200); pinMode(GAS_PIN, INPUT); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.print("Connecting to IoT_Hub_Net"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nConnected!"); Serial.println("MQ-5 warming up (60s)..."); delay(60000); // 예열 Serial.println("Ready."); } void loop() { int raw = analogRead(GAS_PIN); int leak = (raw > THRESHOLD) ? 1 : 0; Serial.print("MQ-5: "); Serial.print(raw); Serial.print(" -> "); Serial.println(leak ? "LEAK!" : "OK"); WiFiClient client; HTTPClient http; String url = String(hubURL) + "/set?no" + String(SLOT_NO) + "=" + String(leak); http.begin(client, url); http.GET(); http.end(); Serial.println("HTTP -> " + url); delay(INTERVAL); }
업로드 및 확인
업로드 후 시리얼 모니터를 보며 1분간 예열되는 동안 raw 값이 안정되는 걸 확인한다. 평소 값의 2배 정도를 THRESHOLD로 설정. 라이터 가스를 살짝 분사해 센서 근처에 대면 값이 급상승해서 LEAK!으로 바뀐다. 두뇌 부저가 울리는지 확인.
시리얼 모니터
업로드가 끝나면 Arduino IDE의 툴 → 시리얼 모니터를 열고 보드레이트를 115200으로 맞춥니다. 다음은 정상 동작을 확인하기 위한 시리얼 모니터 출력 예시입니다. 이 로그는 실제 캡처가 아니라, MQ-5 예열 상태와 7번 슬롯 경고 전송을 확인하기 위한 시리얼 모니터 출력 예시입니다.
[BOOT] Home IoT Node #10 - MQ-5 gas warning [WARMUP] MQ-5 heater active, baseline=184 [SENSOR] gas_raw=221 threshold=420 [FILTER] alcohol_vapor_guard=PASS [HTTP] GET /set?no7=0 [HUB] 200 OK - slot no7=NORMAL [LOOP] next gas sample in 5000 ms
Connected또는connected가 보이면 Wi-Fi 연결 단계는 통과한 것입니다.HTTP 200또는200 OK가 보이면 두뇌 서버에 값이 전달된 것입니다.- 값이 갱신되지 않으면 먼저 URL의 슬롯 번호와 센서 배선을 함께 확인합니다.
⚠ 주의
MQ-5는 실제 가스 누출 경보기용 장비가 아닙니다. 참고용 모니터링으로만 사용하고, 실제 가스 경보기는 별도로 설치해야 합니다.
다음 글 예고
화재 감지. 화염 센서로 8번 슬롯. 이것도 경고 대상이다.
MQ-5 가스누출 센서, 어디에 어떻게 쓸까
MQ-5는 LPG·LNG(도시가스)·부탄 같은 가연성 가스를 감지해 위험 농도에서 부저를 울려주는 조기경보 보조장치입니다. 우리집 IoT 허브의 다른 노드와 함께 두면 '삑' 소리뿐 아니라 스마트폰 알림까지 확장할 수 있습니다.
안 될 때 체크포인트
이 노드는 코드만 보면 짧아 보일 수 있지만, 실제 집에 붙이면 센서 위치·전원·무선망·노이즈 때문에 값이 쉽게 흔들립니다. 아래 항목은 두뇌 서버에 잘못된 판단 근거가 들어가지 않도록 현장에서 먼저 점검할 내용입니다.
| 증상 | 가능한 원인 | 현장 해결 방법 |
|---|---|---|
| 설치 직후 경고가 계속 뜸 | MQ 센서 내부 히터가 안정화되지 않은 초기 예열 상태 | 처음 24~48시간은 burn-in 기간으로 두고 경고 전송을 끄거나 로그만 남깁니다. |
| 요리 중 맛술·알코올에도 반응함 | MQ-5는 LPG/LNG 외에도 알코올성 증기에 민감함 | 가스레인지 바로 옆보다 천장 근처·측면으로 1.5m 이상 떨어뜨리고, 짧은 스파이크는 무시합니다. |
| 값이 천천히 내려오지 않음 | 센서 챔버에 가스나 수증기가 남아 회복 시간이 김 | 경고 해제는 즉시가 아니라 일정 시간 연속 정상값일 때만 처리합니다. |
| ESP8266이 불안정하게 재부팅됨 | MQ-5 히터 전류가 커서 약한 USB 전원이 흔들림 | 센서는 충분한 5V 전원에서 구동하고 ESP8266과 GND를 공통으로 묶되 전원 여유를 확보합니다. |
활용 방안
- 주방 가스누출 조기경보: 가스레인지 밸브를 깜빡 잠그지 않았거나 미세 누출이 생겼을 때 사람이 냄새로 알아채기 전에 부저가 먼저 반응합니다.
- 보일러실·다용도실: 사람이 자주 드나들지 않는 공간일수록 무인 감시가 유용합니다.
- 1인가구·고령자 안전: 혼자 사는 집이나 후각이 둔해진 어르신 댁에 두면 놓치기 쉬운 누출을 잡아줍니다.
- 외출 중 알림: 허브를 통해 감지값을 서버로 보내면 집을 비운 사이 누출이 생겨도 휴대폰으로 즉시 알 수 있습니다.
추천 설치 장소
가스 종류에 따라 높이가 완전히 달라집니다. 이 점이 가장 중요합니다.
- LPG(프로판·부탄): 공기보다 무거워 바닥으로 가라앉습니다. 센서를 바닥에서 약 30cm 높이에 설치합니다.
- 도시가스(LNG·메탄): 공기보다 가벼워 위로 뜹니다. 센서를 천장에서 약 30cm 아래에 설치합니다.
- 가스기구(레인지·보일러)로부터 1~3m 거리를 유지합니다. 너무 가까우면 요리 중 잦은 오탐, 너무 멀면 반응이 느립니다.
- 환기구·창문·주방 후드 바로 앞은 피하는 것이 좋습니다. 공기 흐름에 가스가 흩어져 감지가 늦어집니다.
실전 팁과 주의점
- 예열(warm-up): 전원을 켠 뒤 최소 2~3분, 정밀 측정은 24~48시간 안정화가 필요합니다. 켜자마자의 값은 믿지 않는 것이 좋습니다.
- 감도 조정: 보드의 가변저항으로 기준점을 맞추되, 평소 요리 환경에서 오탐이 없는 선까지만 민감하게 설정합니다.
- 오탐 주의: 요리 연기·기름 증기·알코올·스프레이·주방세제 냄새에도 반응할 수 있습니다. 위치와 감도로 걸러냅니다.
- 수명·교체: 감지 소자는 소모품입니다. 정확도가 떨어지므로 약 2~3년 주기로 교체하는 것이 좋습니다.
- 보조용임을 명심: MQ-5는 취미·보조 경보기입니다. 법적 인증을 받은 가정용 가스경보기를 대체하지 못하며, 생명 안전은 인증 제품에 맡기는 것이 안전합니다.
자주 묻는 질문
Q. 우리 집은 도시가스인데 센서를 어디에 달아야 하나요? 도시가스(LNG)는 가벼워 위로 뜨므로 천장에서 약 30cm 아래에 설치합니다. 반대로 LPG를 쓰면 바닥 근처(약 30cm)에 설치합니다.
Q. 요리할 때마다 울리는데 고장인가요? 고장이 아니라 감도가 높거나 위치가 가스기구에 너무 가깝기 때문입니다. 1~3m로 옮기고 가변저항으로 감도를 낮춰 조정합니다.
Q. 이거 하나면 가스경보기 안 사도 되나요? 아니요. MQ-5는 보조 경보 용도이며 인증 가스경보기의 대체품이 아닙니다. 반드시 함께 사용합니다.
이 글은 2편의 중앙 두뇌 서버와 3~19편의 분산 엣지 노드가 함께 구성하는 20채널 홈 IoT 시스템의 일부입니다. 필요한 편으로 이동해 슬롯과 센서 흐름을 함께 확인합니다.
[1편] 우리집 IoT 허브 전체 그림[2편] 중앙 두뇌 서버 만들기 · 슬롯 1~20[3편] 집 안 온습도, 감으로 보지 말고 숫자로 보자 · 슬롯 1·2[4편] 문 닫았나 계속 신경 쓰일 때 · 슬롯 9[5편] 냉장고가 제대로 돌고 있는지 눈으로 확인하자 · 슬롯 12[6편] 창문 열어도 될까? · 슬롯 3[7편] 욕실 곰팡이 생기기 전에 습도부터 잡자 · 슬롯 19[8편] 보일러가 실제로 도는지 배관 온도로 확인하자 · 슬롯 5·17[9편] 외출했는데 가스레인지가 켜져 있지 않을까? · 슬롯 6[10편] 가스 냄새가 나기 전에 먼저 경고받자 · 슬롯 7[11편] 집을 비웠을 때 불꽃 징후를 먼저 잡자 · 슬롯 8[12편] 머리가 멍한 이유가 공기 때문인지 확인하자 · 슬롯 13·14[13편] 전기세 무지 나오네, 이번 기회에 눈으로 보자 · 슬롯 15[14편] 물 새는지, 얼마나 쓰는지 숫자로 보자 · 슬롯 16[15편] 비 오는 줄 모르고 창문 열어두지 않게 · 슬롯 18[16편] 불 껐나, 문 잠갔나 한 번에 확인하자 · 슬롯 11·10[17편] 리모컨 없이 에어컨을 IoT 허브에서 제어하자 · 슬롯 4[18편] 강아지 밥그릇이 비었는지 눈으로 보자 · 슬롯 20[19편] 사람 있을 때만 시원하게, 없을 땐 아끼자 · 슬롯 1·4[20편] 집 안 상태가 한 화면에 보이기 시작했다 · 슬롯 전체