Home IoT Hub Series · 10

[10편] 가스 냄새가 나기 전에 먼저 경고받자 - MQ-5 주방 가스 감지 노드

[10편] 가스 냄새가 나기 전에 먼저 경고받자 - MQ-5 주방 가스 감지 노드 대표 이미지
시스템 아키텍처 및 데이터 파이프라인 안내
이 글은 2편: 두뇌 만들기에서 구축한 중앙 NodeMCU 서버에 연결되는 우리집 IoT 허브 구성 문서입니다. MQ-5 센서가 가스 농도 상승을 감지하면 두뇌 서버의 경고 슬롯을 갱신하고 부저 판단으로 이어집니다. 수집된 데이터는 로컬 무선망 IoT_Hub_Net을 통해 중앙 서버의 7번 가스 누출 경고 슬롯(/set?no7=값)을 갱신하며, 20채널 스마트홈 통합 컨트롤러의 판단 근거로 사용됩니다.

MQ-5는 LPG, LNG, 도시가스 등을 감지하는 반도체식 가스 센서다. 농도가 높아지면 아날로그 출력이 올라간다. 7번 슬롯(Gas Leak)은 경고 대상이다. 값이 1이 되면 두뇌 부저가 울립니다.

준비물과 가격

부품수량개당 가격
Wemos D1 Mini1개2,000원
MQ-5 가스 센서 모듈1개1,500원
점퍼 와이어 3개
합계3,500원

핀 연결

[10편] 가스 냄새가 나기 전에 먼저 경고받자 - MQ-5 주방 가스 감지 노드 배선도
센서/모듈보드 연결
VCC5V (VU 핀)
GNDGND
AOUTA0 (아날로그)
VCC는 반드시 5V. 3.3V로는 히터가 제대로 가열되지 않아 센서 값이 불안정하다. D1 Mini의 VU 핀(USB 5V)을 쓴다.

선행 작업

추가 라이브러리는 필요하지 않습니다. analogRead(A0)만 사용하면 됩니다.

전체 코드

MQ-5는 초기 예열이 30초~1분 필요하다. 농도 임계값은 설치 환경에 따라 다르니, 깨끗한 공기에서 시리얼 모니터로 기준값을 확인한 뒤 THRESHOLD를 설정한다. 일반적으로 공기 중에서는 100~200, 가스가 새면 400 이상으로 치솟는다.

[10편] 가스 냄새가 나기 전에 먼저 경고받자 - MQ-5 주방 가스 감지 노드 - 전체 코드
#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번 슬롯. 이것도 경고 대상이다.

준비물: Wemos D1 Mini (2,000원), 화염 센서 (1,000원)

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는 보조 경보 용도이며 인증 가스경보기의 대체품이 아닙니다. 반드시 함께 사용합니다.

우리집 IoT HUB 20슬롯 시스템 맵

이 글은 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편] 집 안 상태가 한 화면에 보이기 시작했다 · 슬롯 전체