2008년 9월 16일 화요일

아두이노를 위한 초저렴 사운드 센서

마소 -2008년- 9월호에 안윤호 님의 연재 - 아두이노와 장난감 칩 앰프 가 마소 홈페이지에 공개 되었습니다. 기사 중 아래 내용이 있어 찾아봤습니다.
다른 하나는 마이크의 인터페이스인데 마이크앰프를 만들어야 한다. 역시 블로그에 가면 회로가 나온다. 너무 흔한 회로지만 잘 동작한다. 트랜지스터는 작은 NPN 2n3904트랜지스터인데 50원 정도로 기억한다. 작은 NPN 트랜지스터라면 거의 아무것이나? 사용할 수 있다. 사용하는 마이크 역시 망가진 헤드셋에서 뽑거나 몇 백 원을 주고 구입해야 한다.

- 안윤호, 아두이노와 장난감 칩 앰프, 마이크로소프트 2008년 9월호 중.

저 역시 아두이노에 사용할 사운드 센서를 찾고 있었는데 -너무 흔한 회로여서인지 찾기 힘들었는데- 위 기사의 도움으로 드디어 찾았습니다. 만세!

그 블로그 포스팅의 회로도 중 사운드 센서 부분만을 다시 정리하면 아래 회로도와 같습니다. -Arduino S3V3를 만들고, 아직도 남은- BC547 (NPN TR)로도 잘 동작 하네요.

sound_sensor.png

간단한 회로인 만큼 빵만에 만들어 본 모습도 간단합니다. 사진 왼쪽의 녹색 소켓(JP1)에 마이크를 연결합니다.

sound_detector.jpg

여기에 사용할 마이크는 전자 부품 샾에서 콘덴서 마이크를 구입해서 사용해도 되지만, 사용해 본 결과, 구형 헨즈프리를 사용하는게 더 좋았습니다. 아래의 사진처럼 폰잭의 양쪽 끝단을 연결하면 됩니다.

use_headset_mic.jpg

아두이노와 연결한 전체 사진은 다음과 같습니다.

cheap_sound_detector_for_arduino_2.jpg

다음은 이를 테스트할 아두이노 소스 입니다. 아나로그 입력으로 마이크로 부터 받은 값이 임계값 (여기서는 300)을 넘을 때 13번 LED를 켜 주는 소스 입니다.

사용한 마이크-의 게인-에 따라서 임계값의 조절이 필요합니다. 제 경우 300정도가 박수 소리 이상을 걸러내는데 적당했습니다.

int dpinLED = 13;
int apinMicIn = 0;
int micThreshold = 300
int micInVal;

void setup()
{
? pinMode(dpinLED, OUTPUT);
}

void loop()
{
? micInVal = analogRead(apinMicIn);
? if (micInVal > micThreshold)
? digitalWrite(dpinLED, HIGH);
? else
? digitalWrite(dpinLED, LOW);
}

댓글 2개:

  1. 좋은 자료 잘보았습니다
    마이크로 소리를 받는 법을 몰랐는데 이 포스트로 도움이 되었네요

    답글삭제
  2. 정말 감사합니다.
    많은도움이되었어요!

    답글삭제