화재경보 장치를 만들어보자

by 하민정 | 2017-01-04 12:43
iot 스마트홈 아두이노 알람 화재경보

재료

  • 아두이노 우노 1개
  • 점퍼 와이어 1개
  • 버저 1개
  • 적열센서 (디지털/아날로그) 1개

                                                    


아두이노를 이용해 화재 경보 장치를 만들어 봅시다. 이 튜토리얼에는 적열(Flame)을 감지하기 위해 적외선 감지 센서를 필요로 합니다. 이 센서에 의해 시그널이 아두이노에 전달이 된다면, 이것에 대한 출력으로 아두이노를 통해 버저(Buzzer)가 울리게 됩니다. 


적열을 감지할 수 있는 센서에는 두가지 종류가 있는데, 하나는 아날로그 신호를 이용하고, 다른 하나는 디지털 신호를 이용합니다. 종종 어떠한 센서는 두 가지 모두를 감지할 수도 있지만, 대부분의 경우 특정 신호를 감지하므로, 이 튜토리얼에서는 각각에 대해 아두이노 스케치를 제시하도록 하겠습니다. 


적외선은 본래에 0.75 마이크로미터 에서 1000 마이크로 미터 범위의 파장을 갖는 전자파로 구성되며, 파장의 범위가 넓기 때문에 센서가 반응하는 특정 파장대역으로 세분화 되어 집니다. 이번 프로젝트에사용되는 센서는, 특히 적열을 감지할 수 있는 센서로 주로 760 나노미터에서 1100 나노미터의 파장을 감지합니다. 


Step 1. 준비물 


- 아두이노 우노 

- 적열 센서 ( 디지털 혹은 아날로그 ) 

- 버저 

- 점퍼 와이어 


Step 2. 하드웨어 연결방법 ( 회로도 ) 


사용하는 센서가 디지털인 경우 

아두이노의 2번 핀과 연결해 주고, 5V와 GRD에 연결하여 5V의 전압을 공급합니다. 



만약 아날로그 센서를 이용한다면, 위와 같이 연결해 줍니다. 

아두이노의 아날로그 센서 A0 핀과 연결해 주고, 마찬가지로 5V와 GRD에 연결하여 5V의 전압을 공급합니다. 


Step 3. 코드 


< 디지털 센서를 사용하는 경우 >

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
// http://www.mrmodder.com visits for more Arduino Projects //
int Buzzer = 13; // Use buzzer for alert 
int FlamePin = 2; // This is for input pin
int Flame = HIGH; // HIGH when FLAME Exposed
 
void setup() {
 pinMode(Buzzer, OUTPUT);
 pinMode(FlamePin, INPUT);
 Serial.begin(9600);
 
}
 
void loop() {
 Flame = digitalRead(FlamePin);
 if (Flame== HIGH)
 {
 Serial.println("HIGH FLAME");
 digitalWrite(Buzzer, HIGH);
 }
 else
 {
 Serial.println("No flame");
 digitalWrite(Buzzer, LOW);
 }
}
cs


< 아날로그 센서를 사용하는 경우 >

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
//        http://www.mrmodder.com   visits for more Arduino Projects //
const int analogPin = A0;    // Flame Sensor (A0) to Arduino analog input pin A0
const int BuzzerPin = 13;       // Buzzer output pin
const int threshold = 400;   // Flame level threshold (You can vary the value depends on your need)
 
void setup() {
  
  pinMode(BuzzerPin, OUTPUT);
  // initialize serial communications:
  Serial.begin(9600);
}
 
void loop() {
  // read the value of the Flame Sensor:
  int analogValue = analogRead(analogPin);
   Serial.println(analogValue); //serial print the FLAME sensor value
  
  if (analogValue &gt; threshold) {
    digitalWrite(BuzzerPin, HIGH);
    Serial.print("High FLAME");
  } 
  else if (analogValue = threshold){
    Serial.print("Low FLAME");
    digitalWrite(BuzzerPin, HIGH);
    delay(400);
    digitalWrite(BuzzerPin, LOW);
  }
  else {
    digitalWrite(BuzzerPin, LOW);
    Serial.print("No flame");
  }
 
  delay(1);       
}
cs


버저는 13번 핀으로 지정하고, 불꽃 센서핀은 2번으로 지정해 줍니다. 만약 불꽃 센서에 감지가 된다면 HIGH 상태가 되는 것입니다. 


초기 상태 setup 에서 불꽃 센서핀을 통해서 감지하는 것은 INPUT 으로, 이에 대한 결과는 버저를 통해서 OUTPUT 으로 출력할 수 있도록 설정해 줍니다. 


먼저 센서가 계속 감지를 하고, HIGH 상태가 된다면 불꽃이 감지 되었음을 의미히므로, OUTPUT 으로 버저가 울리게 됩니다. 이를 digitalWrite(Buzzer,HIGH) 를 통해 수행 시킵니다.


1
2
3
4
5
 if (Flame== HIGH)
 {
 Serial.println("HIGH FLAME");
 digitalWrite(Buzzer, HIGH);
 }
cs


그렇지 않은 경우, 적열이 감지 되지 않은 상태이므로 digitalWrite(Buzzer,LOW) 를 통해 감지 되지 않았음을 OUTPUT 으로 표시합니다. 화재 알람은 계속해서 센서를 통해 감지하고 있어야 하므로 loop 문을 통해 항상 대기할 수 있도록 합니다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
void loop() {
 Flame = digitalRead(FlamePin);
 if (Flame== HIGH)
 {
 Serial.println("HIGH FLAME");
 digitalWrite(Buzzer, HIGH);
 }
 else
 {
 Serial.println("No flame");
 digitalWrite(Buzzer, LOW);
 }
}
cs






댓글 0

MADE BY