DIY - 2018/가스경보기

가스 경보기

알렉스윤 2018. 12. 26. 02:28

얼마전 강원도 펜션에 가스 유출로 인한 큰 사고가 있었다. 귀중한 생명이 목숨을 잃는 안타까운 사고였다.

동계에는 캠핑시 난로를 피우게 되는데 항상 조심해야 한다.

난 동계 캠핑 경험이 풍부하지 않아서 자기전에 등유 난로를 끄던지, 밤새 뒤척이며 노심초사 불침번을 섰던 경험이 있다.

정말로 피곤했던 기억이다. 다행이 지금은 따뜻한 전기장판을 구비해서 동계 캠핑을 준비하긴 했는데...

그래도 난로도 피울것에 대비해서 가스경보기를 만들어 보려고 한다.

내일이면 출발이라 시간이 빠듯하다. 


우선 가스 센서에는 여러 종류가 있다. 이번 강원도 펜션 사고에서는 일산화탄소 중독이 가장 심각했다.

그래서 일산화탄소 경보기를 만들고 싶었는데 현재 MQ-2만 보유하고 있다.

나중에 기회를 봐서 몇개 사두어야겠다.

Alternative MQ Gas sensors:

Sensor Name

Gas to measure

MQ-2

Methane, Butane, LPG, Smoke

MQ-3

Alcohol, Ethanol, Smoke

MQ-4

Methane, CNG Gas

MQ-5

Natural gas, LPG

MQ-6

LPG, butane

MQ-7

Carbon Monoxide

MQ-8

Hydrogen Gas

MQ-9

Carbon Monoxide, flammable gasses

MQ131

Ozone

MQ135

Air Quality

MQ136

Hydrogen Sulphide gas

MQ137

Ammonia

MQ138

Benzene, Toluene, Alcohol, Propane, Formaldehyde gas, Hydrogen

MQ214

Methane, Natural Gas

MQ216

Natural gas, Coal Gas

MQ303A

Alcohol, Ethanol, smoke

MQ306A

LPG, butane

MQ307A

Carbon Monoxide

MQ309A

Carbon Monoxide, flammable gas

 출처:https://components101.com/mq2-gas-sensor


[MQ-2]


PIN이 4개 있다.

왼쪽부터 Analog out, Digital out, GND, VCC(5V)



이번 프로젝트에 Arduino NANO를 선택했다. 딱히 특별한 이유는 없고... 집에 여분으로 2개 가지고 있었다.

하나는 Smartlog mini를 추가로 만들어서 드립용으로 사용할 예정인지라... ^^



준비물은 일단 간단하다. PIN이 4개라 선을 4개 준비했는데.... Analog out만 사용했다.



일단 아래와 같이 1초 간격으로 평균을 내서 잘 동작하는지 확인했다.

라이터 가스를 잘 감지하고, 종이 태운 가스도 잘 감지한다.





// Value range 

// 정상적인 값 1 미만, 0.4 ~ 0.8 수준

// 감지 범위 1단계: 1.0 ~ 1.5

// 감지 범위 2단계: 1.6 ~ 2.0

// 감지 범위 3단계: 2.1 이상


unsigned long startMillis; //some global variables available anywhere in the program

unsigned long currentMillis;

const unsigned long period = 1000; //the value is a number of milliseconds

int counts1min; // 평균을 내기 위한 카운트

float sum1min; // 값을 합산 후 카운트로 나누기


void setup() {

  Serial.begin(9600);

  startMillis = millis(); //initial start time

  counts1min = sum1min = 0;

}


void loop() {

  float vol;

  currentMillis = millis();// 현재 시간을 ms 단위로

  int sensorValue = analogRead(A0);  // 데이터 읽기

  counts1min++;

  vol=(float)sensorValue/1024*5.0;  // 100분율로 변환해서 출력   

  sum1min = sum1min + vol;

  if(currentMillis-startMillis>=period) // 시간 체크

  {

    Serial.println(sum1min/counts1min,1); // 평균내기, 소숫점 1자리까지 표현

    startMillis = currentMillis;

    counts1min = sum1min = 0;

  }

}


추가 계획

캠핑에서 사용 할 계획이므로, OLED, LED, Buzzer를 추가로 사용하자.

OLED는 값을 뿌려주고, LED는 상태를 한눈에 가늠하도록 하고, Buzzer로 알람이 되도록 꾸미자


차후 계획

ESP8266(NodeMCU)을 이용해서 IOT 구현.

보일러실에 설치 후, 저전력으로 동작하도록 함(배터리 이용 혹은 5V 아답터)

주기적으로 Data 수집.. 우리집은 안전한지 진단하자.

'DIY - 2018 > 가스경보기' 카테고리의 다른 글

동계 캠핑  (0) 2018.12.31
프로토타입 완성  (0) 2018.12.26