본문으로 바로가기

  아두이노(Arduino) 기초 센서 3.5편 - 소리감지 센서  


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



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

지난 포스팅에서 재난센서 3종(화재,진동,기울기)을 다뤘는데요. 

다른 포스팅을 위해 부족한 리드선을 찾던 중 소리감지 센서모듈을 발견하여 뒤늦게 포스팅 하게 되었습니다.

앞선 재난 센서들과 같은 원리로 동작하는 모듈입니다. 소리 자체는 아날로그 신호이지만

지금 쓰려고 하는 센서는 출력이 디지털(0 or 1)이죠!


아두이노 소리감지센서 모듈

 

포스팅이 늦어서 죄송한 마음에 좀더 자세하게 설명을 드릴까 합니다.

이전에 재난센서 편에서는 비교기에 대한 언급만 했었는데요.

그럼 비교기는 무엇이고 어떤 원리로 통작을 하는 것일까요?



LM393 IC

아두이노 LM393 IC

LM393 IC는 총 2개의 비교연산 회로를 가지고 있습니다.

원리는 의외로 간단합니다.(아두이노로 사용할때의 조건으로 알려드릴께요.)


Vcc : +5V(모듈 3P중 Vcc에서 공급)

datasheet상에는 max 36V까지라고 되어있네요.

GND : GND(모듈 3P중 GND와 연결)


이 연결은 동일하고 1,2,3번 핀이 SET,  5,6,7번 핀이 SET로 구분하시면 됩니다.

하는 동작은 같으니 한부분을 기준으로 설명 드리겠습니다.(1,2,3번 SET)


Pin1(OUTPUT1) : 비교기를 거처 나온 결과를 출력합니다.(HIGH or LOW)

Pin2(IN1(-)) : 비교대상의 기준값을 입력합니다.

Pin3(IN1(+)) : 기준값과 비교될 대상을 입력합니다.



< 결과 >

Pin2번에 입력된 전압보다 Pin3번에 입력된 전압이 높으면 Pin1번에 HIGH

Pin2번에 입력된 전압보다 Pin3번에 입력된 전압이 낮으면 Pin1번에 LOW


원리가 어느정도 이해가 되시나요?

소리에 의한 전압이 Pin3번으로 입력되고 가변저항을 통한 전압이 Pin2번으로 입력된다면 어떨까요?

가변저항을 통해 기준 전압을 낮게 만들면 작은소리에도 반응하는 고감도 센서가 될테고

반대로 전압을 높게 만들만 큰소리에만 반응하는 저감도 센서가 되겠죠?





이제 회로도를 함께 봐보도록 할까요?

이전 재난센서와 회로구성은 같습니다.▼

아두이노 소리감지센서 연결 회로

소리센서의 출력을 받아서 LED를 켜주는 회로 구성입니다.

간단하기도 하고 이전 포스팅에서 다뤘던 회로와 동일 하기 때문에 프로그램을 넘어가겠습니다.



프로그램 또한 재난 센서때와 크게 다르지 않습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int Sound_Sensor = 2;                         //소리센서 출력핀을 디지털포트 2번 연결
int Sound_LED = 3;                            //소리센서의 출력에 의해서 제어되는 LED를 디지털 포트 3번에 연결
 
void setup() {
  Serial.begin(9600);                        //통신속도 9600
  pinMode(Sound_LED,OUTPUT);                  //디지털포트 3번을 OUTPUT으로 설정
  pinMode(Sound_Sensor,INPUT);                //디지털포트 2번을 INPUT으로 설정
}
 
void loop() {
 
  if(digitalRead(Sound_Sensor)==HIGH)         //소리감지 센서의 Data Out핀의 신호가 HIGH이면 >> 큰소리
  {
    digitalWrite(Sound_LED,HIGH);             //소리감지 센서용 LED ON
    Serial.println("큰소리가 감지되었습니다.");//시리얼모니터에 해당 문구 출력
  }
  else if(digitalRead(Sound_Sensor)==LOW)     //소리감지 센서의 Data Out핀의 신호가 LOW이면 >> 작은 소리거나 무음
  {
    digitalWrite(Sound_LED,LOW);              //소리감지 센서용 LED OFF
  }
}
cs

전체적인 프로그램 흐름은 주석을 참고해 주세요.


큰소리가 감지되면 소리감지센서에서 HIGH신호를 출력하게 되고 그것을 아두이노 디지털핀 2번으로 받아서 

3번핀으로 LED를 켜주는 프로그램입니다. 따로 큰소리가 감지될 경우에만 출력되는 문구를 추가하였습니다. 


위 프로그램을 업로드 하여 실제로 어떻게 동작하는지 확인하면서 이번 포스팅을 끝내겠습니다.

지금까지 아두이노(Arduino) 기초 센서 3.5편 - 소리감지 센서 포스팅이였습니다.

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

by 애드라이프