가스 센서를 만들어보자

by 하민정 | 2017-01-09 17:03
iot 가스누출 사고 사전예방 스마트홈 아두이노 안전한집 재해

재료

  • 아두이노 우노 1개
  • 점퍼 와이어 1개
  • MQ2 가스 감지 센서 1개
  • 빨간색 LED 1개
  • 브래드 보드 1개


                                                       

가스 누출은 산업체 현장에서 뿐만 아니라 집에서도 가장 조심해야 할 사고 입니다. 

그런데 우리는 가스 누출 사고에 얼마나 대비되어 있을까요? 


실제로 '우리에게 일어나지 않을 일이야' 라고 생각하여

적절히 대비하지 못했던 가스 누출 사고는 많게는 수십만의 인명피해를 낳는 재해로 이어집니다. 


따라서 스마트 홈이 되기 위해서 '보다 안전한 집을 만들기 '라는 목적 아래 

아두이노를 이용하여 가장 간단한 가스 누출 감지기를 만들어 봅시다. 


Step 1. 준비물 


- 아두이노 우노

-MQ2 가스 감지 센서 

- 브래드 보드 

- 점퍼 와이어 

- 빨간색 LED 


《 MQ2 가스 & 연기 센서 》

MQ2 가스 & 연기 센서는 내부에 포함된 히터와 센서로

LPG, 부탄, 메탄, 알콜 등을 검출해 낼 수 있는 모듈입니다.

내부에 포함된 히터가 적정온도로 올라가서 안정적인 결과를 얻기 위해서는 대기시간이 필요합니다. 

이때에 센서는 '빠른 반응시간' 을 갖고 있어서 거의 즉시 값을 추출 할 수 있습니다. 


Step 2. 하드웨어 연결방법 


1) 가스를 인지하면 LED 가 깜빡거릴 수 있도록 아두이노의 GND 와 11번핀에 연결합니다. 

2) MQ2 가스 센서 VCC를 아두이노 5V 핀에 연결합니다. 

     MQ2 의 GNG 를 아두이노의 GND 핀에 연결합니다. 

     MQ2 의 출력을 아두이노의 아날로그 A0 핀에 연결합니다. 


Step 3. 코드 


1
2
3
4
5
6
7
// These constants won't change.  They're used to give names
// to the pins used:
const int analogInPin = A0;  // Analog input pin that the potentiometer is attached to
const int ledPin = 13;                 // LED connected to digital pin 13
 
int sensorValue = 0;        // value read from the sensor
 
cs


MQ2 센서의 출력은 A0 핀과 연결했으며, led 를 아두이노의 13번 핀에 연결합니다. 


1
2
3
4
5
void setup() {
  // initialize serial communications at 9600 bps:
  Serial.begin(9600); 
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
}
cs


setup 에서 ledPin 를 출력으로,

센서에서 감지 되면 LED 가 깜빡거리도록 pinMode 를 설정해줍니다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void loop() {
  // read the analog in value:
  sensorValue = analogRead(analogInPin);            
  // determine alarm status
  if (sensorValue >= 750)
  {
    digitalWrite(ledPin, HIGH);   // sets the LED on
  }
  else
  {
  digitalWrite(ledPin, LOW);    // sets the LED off
  }
 
  // print the results to the serial monitor:
  Serial.print("sensor = " );                       
  Serial.println(sensorValue);     
 
  // wait 10 milliseconds before the next loop
  // for the analog-to-digital converter to settle
  // after the last reading:
  delay(10);                     
}
 
cs


아두이노 내부 함수 analogRead 를 통해 읽어들여진 가스 센서 함수의 시그널 값이

750 이상인 경우에만 가스 유출로 판별해 digitalWrite( ledPin, HIGH )를 통해

LED 가 깜빡거리도록 설정하였습니다. 


그렇지 않은 경우엔 digitalWrite(ledPin, LOW) 를 통해

LED의 깜빡거림이 꺼지도록 설정하였습니다. 


▶ 다음은 전체 코드 입니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// These constants won't change.  They're used to give names
// to the pins used:
const int analogInPin = A0;  // Analog input pin that the potentiometer is attached to
const int ledPin = 13;                 // LED connected to digital pin 13
 
int sensorValue = 0;        // value read from the sensor
 
void setup() {
  // initialize serial communications at 9600 bps:
  Serial.begin(9600); 
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
}
 
void loop() {
  // read the analog in value:
  sensorValue = analogRead(analogInPin);            
  // determine alarm status
  if (sensorValue >= 750)
  {
    digitalWrite(ledPin, HIGH);   // sets the LED on
  }
  else
  {
  digitalWrite(ledPin, LOW);    // sets the LED off
  }
 
  // print the results to the serial monitor:
  Serial.print("sensor = " );                       
  Serial.println(sensorValue);     
 
  // wait 10 milliseconds before the next loop
  // for the analog-to-digital converter to settle
  // after the last reading:
  delay(10);                     
}
cs


Step 4. 수행 결과 








댓글 1

MADE BY