티스토리 뷰

우리가 일상생활에서 많이 접하는 도어벨은 우리에게 편리함을 줍니다. 요즘은 기술이 발달하여 카메라가 달린 도어벨로 누가 왔는지 확인할 수도 있습니다. 오늘은 아두이노로 도어벨을 만들어 보도록 하겠습니다.

아두이노 도어벨 만들기
이미지 출처 -Newhouse hardware

목차

    1.개발배경

    아이들과 아두이노 프로젝트를 시작하고서 우리에게 한 가지 변화가 생겼습니다. 어디를 가던지 아두이노로 만들어볼 수 있는 것들을 찾아보고 의견을 나누는 모습을 볼 수 있게 되었습니다. 오늘 저희 집에 손님들이 왔는데 현관에서 벨을 누르고 들어오셨습니다. 요즘에는 기술이 발달해서 벨을 누르면 누가 왔는지 카메라로 확인하고 집 안에서 문을 열어 줄 수 있도록 시스템으로 구성되어 있습니다. 아이들은 누가 왔는지 보는 것을 좋아해서 항상 벨이 울리면 도어벨 모니터로 달려갑니다.

    둘째 아들 : "아빠 우리도 아두이노로 도어벨을 만들어 볼까요?"

    나 : "응????"

    개발배경
    개발배경

    '음.... 이렇게 복잡한 시스템을 만들어 보자고?' 순간 저는 머리속이 복잡해 졌습니다. 이제 막 아두이노를 시작한 우리가 이걸 만들 수 있을까?  우선 아들이 실망하지 않도록 어떻게 만들지 고민해 보자고 했습니다.

     

    나 : "그래, 우리 어떻게 만들 수 있을지 고민해보자"

     

    저의 어릴적을 생각해 봤습니다. 집 대문 옆에 달린 작은 버튼을 누르고 있으면 집에서 어머니가 나오셔서 문을 열어주셨습니다. 그 작은 버튼이 바로 '도어벨' 이었습니다. 제가  집 안에 있을 때 그 소리를 들어보면 버튼에서 손을 떼기 전까지 '삐~~~~' 소리가 계속 났었죠.

     

    아이디어 떠오름

    저는 순간 좋은 생각이 떠올라 Passive buzzer(부저)와 푸쉬버트을 가지고 '응답하라 1980 도어벨'을 만들면 좋을 것 같다고 아들에게 말했습니다.

    2.회로/소스 구성

    우선 푸쉬버튼의 구조에 대해 설명하겠습니다. 버튼을 눌렀을 때 두 핀끼리 연결 될 수 있도록 핀 사이가 아래와 내부에서 회로적으로 끊어져 있습니다. 서로 마주보고 있는 3,4 와 1,2 핀이 서로 연결되어있고 버튼을 눌렀을 때 1,2와 3,4 핀이 연결되게 됩니다. 그 점을 이용하여 아두이노 보드에서 loop()함수 내에서 소리가 계속 출력 되게 만들어 놓고 부저와 아두이노보드 출력 사이에 버튼을 연결하여 버튼을 눌렀을 때만 소리가 나도록 회로를 구성하였습니다.

    스위치 핀맵
    스위치 핀맵
    부저핀맵
    부저핀맵
    회로구성
    회로구성

     

    아래와 같이 사람에게 가장 잘 들리는 1KHz 대역의 소리가 출력이 되도록 아주 간단한 코드를 구성하였습니다. 


    const int bell = 9; //스피커를 9번 핀에 연결

    void setup(){

    pinMode(bell, OUTPUT); // 9번 핀을 출력으로 설정

    }

    void loop(){

      tone(bell, 1000); // 1KHz 소리를 무한 출력. 숫자가 낮아질수록 저음 / 높을 수록 고음

    }

    3.데모

    데모 보기
    데모 보기

    둘째 아들이 방 안쪽 문에 부저를 붙이고 바깥쪽에 스위치를 붙인 후에 가족들이 방에 들어갈 때 마다 벨을 누르라고 하네요.....참고로 아두이노 우노 보드에 프로그램 다운을 완료하면 외장 배터리로 전원을 공급해도 동작한다는 점 알고 계시면 좋을 것 같습니다. 새로운 프로젝트로 다음 포스팅에서 뵙겠습니다.