아두이노 연기 감지 센서 - adu-ino yeongi gamji senseo

교환 및 반품 주소
 - [51401] 경상남도 창원시 의창구 차상로150번길 10 (팔용동) 창원컴퓨터전자상가 4층 415호

  교환 및 반품이 가능한 경우
 - 계약내용에 관한 서면을 받은 날부터 7일. 단, 그 서면을 받은 때보다 재화등의 공급이 늦게 이루어진 경우에는 재화등을 공급받거나 재화등의 공급이 시작된 날부터 7일 이내
  - 공급받으신 상품 및 용역의 내용이 표시.광고 내용과 다르거나 계약내용과 다르게 이행된 때에는 당해 재화 등을 공급받은 날 부터 3월이내, 그사실을 알게 된 날 또는 알 수 있었던 날부터 30일이내

  교환 및 반품이 불가능한 경우
 - 이용자에게 책임 있는 사유로 재화 등이 멸실 또는 훼손된 경우(다만, 재화 등의 내용을 확인하기 위하여 포장 등을 훼손한 경우에는 청약철회를 할 수 있습니다)
  - 이용자의 사용 또는 일부 소비에 의하여 재화 등의 가치가 현저히 감소한 경우
  - 시간의 경과에 의하여 재판매가 곤란할 정도로 재화등의 가치가 현저히 감소한 경우
  - 복제가 가능한 재화등의 포장을 훼손한 경우
  - 개별 주문 생산되는 재화 등 청약철회시 판매자에게 회복할 수 없는 피해가 예상되어 소비자의 사전 동의를 얻은 경우
  - 디지털 콘텐츠의 제공이 개시된 경우, (다만, 가분적 용역 또는 가분적 디지털콘텐츠로 구성된 계약의 경우 제공이 개시되지 아니한 부분은 청약철회를 할 수 있습니다.)

  ※ 고객님의 마음이 바뀌어 교환, 반품을 하실 경우 상품반송 비용은 고객님께서 부담하셔야 합니다.
 (색상 교환, 사이즈 교환 등 포함)

개요 



불꽃 감지 센서에 대해 먼저 알아보면, 적외선LED를 통해 불꽃에서 감지되는 적외선 파장을 감지하여
이를 아날로그 혹은 디지털 신호로 변환해 주는 구조를 지니고 있습니다.

출처 :  가시광선의 범위 - encyber.com

적외선 파장은 자외선이나 가시광선에 비해 강한 열작용을 지니고 있는 것이 특징입니다.

출처 : 불꽃 감지기 설치 사례 - fpn119.co.kr

제품화된 불꽃 감지기는 문화재를 비롯한 많은 시설에서 화재 감지용으로 사용되고 있습니다.


그럼 본격적으로 아두이노를 활용하여 DIY 화재 경보기를 만들어 보겠습니다.

미리보기 동영상


부품 목록

본 학습에는 총 5종류의 부품이 필요합니다.

NO 부품명 수량 상세설명
1 아두이노 (또는 오렌지보드) 1 아두이노
2 불꽃감지센서 1 센서
3 브레드보드 1 브레드보드
4 피에조 1 저항
5 점퍼 케이블 5 점퍼 케이블
 
부품명

아두이노 우노 R3

(오렌지보드)

피에조 브레드보드 점퍼케이블 불꽃감지센서
파트
x1
x1
x1
x5
 
x1

하드웨어 Making

회로도

브레드보드 레이아웃

소프트웨어 Coding

// 불꽃 감지 센서와 피에조를 이용하여 화재경보기를 만들어 봅시다. // 13번 핀을 LED로 지정합니다. int ledPin = 13; // 디지털 2번핀을 불꽃감지센서로 지정합니다. int inputPin = 2; // 불꽃 감지 센서의 상태를 저장합니다.(처음 상태를 LOW로 설정) int pirState = LOW; // 센서 값을 읽기 위해 변수를 선언합니다. int val = 0; // PWM 핀에 스피커 혹은 피에조 센서를 연결합니다.(digital 9, 10, or 11) int pinSpeaker = 10; void setup() { // LED 를 출력으로 설정합니다. pinMode(ledPin, OUTPUT); // 센서를 입력으로 설정합니다. pinMode(inputPin, INPUT); // 스피커를 출력으로 설정합니다. pinMode(pinSpeaker, OUTPUT); // 시리얼 통신(9600)를 준비합니다. Serial.begin(9600); } void loop() { // 센서값을 읽어들입니다. val = digitalRead(inputPin); // 만약 값이 HIGH 일때, if (val == HIGH) { // 13번 핀(보드에 내장되어 있는 LED) 를 켭니다. digitalWrite(ledPin, HIGH); playTone(300, 160); delay(150); if (pirState == LOW) { // 센서의 상태가 LOW일때 Serial.println("Beware of fire."); // 다음의 문구를 시리얼 모니터로 출력합니다. pirState = HIGH; } } else { // LED를 끕니다. digitalWrite(ledPin, LOW); playTone(0, 0); delay(30); if (pirState == HIGH) { //센서값이 HIGH 일때 Serial.println("FIRE!!!!"); // 다음의 문구를 시리얼 모니터로 출력합니다. pirState = LOW; } } } // 경보음을 만들어 냅니다. void playTone(long duration, int freq) { duration *= 1000; int period = (1.0 / freq) * 1000000; long elapsed_time = 0; while (elapsed_time < duration) { digitalWrite(pinSpeaker,HIGH); delayMicroseconds(period / 2); digitalWrite(pinSpeaker, LOW); delayMicroseconds(period / 2); elapsed_time += (period); } }

소프트웨어 설명

// 경보음을 만들어 냅니다. void playTone(long duration, int freq) { duration *= 1000; int period = (1.0 / freq) * 1000000; long elapsed_time = 0; while (elapsed_time < duration) { digitalWrite(pinSpeaker,HIGH); delayMicroseconds(period / 2); digitalWrite(pinSpeaker, LOW); delayMicroseconds(period / 2); elapsed_time += (period);


기존 delay 명령어와 비슷하지만 다른 delayMicroseconds는 기존 delay가 ms(밀리초)만큼 지연시키는 명령어 였다면,
delayMicroseconds는 마이크로초만큼 지연시키는 명령어 입니다.

long함수는 int 형 변수보다 훨씬 큰 정수를 담을 수 있는 변수로 사용하겠다는 것을 의미합니다.( -2,147,483,648 부터 2,147,483,647의 정수를 담을 수 있습니다)

관련링크  

피에조부저 사용하기

Toplist

최신 우편물

태그