본문으로 바로가기

  아두이노(Arduino) 기초 센서 3편 - 재난센서  


애드라이프의 아두이노 모든 포스팅 리스트를 보고 싶으신 분은 공지 읽어주세요.


안녕하세요. 애드라이프 입니다.

이번엔 재난센서라는 타이틀로 포스팅을 시작하게 되었는데요.

제목은 거창하지만 제가 이번 포스팅에서 다룰 센서는 3가지입니다.


1. 화재감지 센서(불꽃감지센서)

2. 기울기 감지센서

3. 진동감지 센서



한때 모 보일러 브렌드에서 지진발생시 자동으로 가스를 차단하는 기능으로 

2차 인명피해를 예방하여 화재가 된적이 있었죠. 이때 사용될 수 있는 센서들이 

이번 포스팅에서 다루는 센서들입니다.

진동감지센서,기울기센서,불꽃감지센서

왼쪽부터 진동감지센서 모듈, 기울기감지 센서 모듈, 불꽃감지 센서 모듈 순입니다.

센서와 모듈의 차이점은 단지 감도를 조절 하는 가변저항과 출력이 ON/OFF형태라는 것입니다.

D0핀에서 HIGH신호가 나오는지 LOW신호가 나오는지 확인만 해주면 됩니다.

(본래는 비교기 회로에 연결되어있지만 초급에서는 간단한 원리만 다루겠습니다. 질문은 언제나 환영!!)


간단하게 센서의 원리는 살펴볼까요?


1. 진동감지센서(SW-18020D) 

센서 내부에 금속 스프링이 진동이나 충격에 흔들리면서 접점이 형성되면 신호를 주는 방식입니다.

아래 기울기 센서와는 달리 스프링은 자체 텐션으로 인해 순간적이 힘이나 진동이 있이 않으면 반응하지 않습니다.

천천히 기울이거나 이동하는 것은 감지하지 못할 수 있습니다.



2. 기울기 센서(SW-520D) 

금으로 도금된 재질의 원형통 안에 금속 공이 내장되어있으며(소리가 납니다.)

그 금속 공은 일정 각도이상 기울어 지면 볼이 움직이면서 스위치 역할을 하게 됩니다.

기울기센서 원리

[본사진은 북두출판사의 실험KIT와 함께하는 Arduino 입문서  아두이노 완전 정복 책에서 발췌하였음을 알려드립니다.]

위 그림을 보면 센서가 기울면서 금속 공이 떨어져 있는 두 선에 접점이 되는 것이 보이시죠?

 



3. 화염감지 센서

특정 빛의 파장을 감지하는 센서입니다. 

아시는 분은 아시겠지만 빛은 파장을 가지고 있고 방출하는 에너지에 따라 파장이 다릅니다.

이번에 다루는 화염감지 센서는 약 80cm정도의 거리에서 발생하는 화염을 감지할 수 있으며

760nm~1,100nm의 범위의 불이나 광원의 파장을 감지합니다.


각각 센서들의 설명은 여기까지 하고 위 3가지 센서를 이용하여 간이 재난 알림 장치를 만들어 볼까합니다.

그럼 바로 회로도를 봐볼까요? ▼



아두이노 기울기,진동,화재감지센서 연결 회로

각 센서들의 평상시 상태를 기본으로 설정하고 변화가 감지 되었을 경우 해당 LED를 켜주는 방식의 회로입니다.

3가지 모듈 모두 동인한 핀맵을 가지고 있으며 데이터를 받는 방식 또한 같습니다.

LED 전류 제어 저항은 470ohm 표준저항으로 선정하였습니다.


회로가 간단하니 바로 프로그램을 같이 보면서 설명하겠습니다.▼


프로그램의 전체적인 설명은 주석을 참고해 주시기 바랍니다.

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
36
37
38
39
40
41
42
43
44
45
46
47
48
int inclination_led = 2;                      //기울기 센서용 LED 디지털포트 2번 연결
int fire_led = 3;                             //화염 센서용 LED 디지털포트 3번 연결
int oscillation_led = 4;                      //진동 센서용 LED 디지털포트 4번 연결
 
int inclination_sensor = 8;                   //기울기 센서 Data Out핀을 디지털포트 8번 연결
int fire_sensor = 9;                          //화염 센서 Data Out핀을 디지털포트 9번 연결
int oscillation_sensor = 10;                  //진동 센서 Data Out핀을 디지털포트 10번 연결
 
void setup() {
  pinMode(inclination_led,OUTPUT);            //디지털포트 2번을 OUTPUT으로 설정
  pinMode(fire_led,OUTPUT);                   //디지털포트 3번을 OUTPUT으로 설정
  pinMode(oscillation_led,OUTPUT);            //디지털포트 4번을 OUTPUT으로 설정
 
    
  pinMode(inclination_sensor,INPUT);          //디지털포트 8번을 INPUT으로 설정
  pinMode(fire_sensor,INPUT);                 //디지털포트 9번을 INPUT으로 설정
  pinMode(oscillation_sensor,INPUT);          //디지털포트 10번을 INPUT으로 설정
}
 
void loop() {
 
  if(digitalRead(inclination_sensor)==HIGH)   //기울기 센서의 Data Out핀의 신호가 HIGH이면 >> 기울어진 상태
  {
    digitalWrite(inclination_led,HIGH);       //기울기 센서용 LED ON
  }
  else if(digitalRead(inclination_sensor)==LOW)//기울기 센서의 Data Out핀의 신호가 LOW이면 >> 곧은 상태
  {
    digitalWrite(inclination_led,LOW);        //기울기 센서용 LED OFF
  }
  
  if(digitalRead(fire_sensor)==LOW)          //화염 센서의 Data Out핀의 신호가 LOW이면  >> 화염이 감지된 상태
  {
    digitalWrite(fire_led,HIGH);              //화염 센서용 LED ON
  }
  else if(digitalRead(fire_sensor)==HIGH)      //화염 센서의 Data Out핀의 신호가 HIGH이면 >> 화염이 꺼진 상태
  {
    digitalWrite(fire_led,LOW);               //화염 센서용 LED OFF
  }
  
  if(digitalRead(oscillation_sensor)==LOW)   //진동 센서의 Data Out핀의 신호가 LOW이면    >>진동이 감지된 상태
  { 
    digitalWrite(oscillation_led,HIGH);       //진동 센서용 LED ON
  }
  else if(digitalRead(oscillation_sensor)==HIGH)//진동 센서의 Data Out핀의 신호가 HIGH이면 >> 진동이 없는 상태
  {
    digitalWrite(oscillation_led,LOW); //진동 센서용 LED OFF
  }
}
cs

이번 프로그램은 정말 쉽죠? 라이브러리 추가도 없고 단순히 디지털 포트로

감지되는 센서에 따라 LED를 켜주면 끝입니다.

이런 센서가 있다는 사실을 알았다는 것만으로도 많은 도움이 되기때문에 그냥 넘어가기 보다는

이런 원리를 가지고 있는 센서들이 있구나 정도는 참고하시고 넘어가는게 좋을 것 같습니다.


마지막으로 실제 구현되는 동영상을 참고하면서 이번 포스팅을 끝내겠습니다.▼

<LED 색상 blue : 기울기 white : 화염 red : 진동감지 >



지금까지 아두이노(Arduino) 기초 센서 3편 - 화재감지, 기울기감지, 진동감지 센서 포스팅이였습니다.

계속해서 도움되는 포스팅으로 찾아 뵙겠습니다.

by 애드라이프