티스토리 뷰

아두이노 냉장고문 알람
사진 출처 - wikipedia

오늘 퇴근해서 집에 돌아와 시원한 음료수를 마시려고 냉장고를 열었는데 뭔가 느낌이 이상했습니다. 문을 열 때 느껴지는 자석의 힘이 전혀 없었고 아니나 다를까 냉장실이 전혀 시원하지 않았습니다. 누군가 냉장고 문을 완전히 닫지 않고 간 것이 분명했습니다. 어쩔 수 없이 냉동실에서 얼음을 꺼내서 음료수에 넣어서 아쉬움을 달랬습니다. 대부분의 냉장고가 그렇지만 저희 집 냉장고는 문이 제대로 닫히지 않았을 때 소리로 알림을 울려주는 기능이 없습니다. 대기업 제품이고 그리 오래되지도 않았는데 말이죠. 그래서 오늘은 냉장고 문이 열렸을 때 LED가 깜빡이고 알람을 울려주는 프로젝트를 해볼까 합니다.

냉장고 문을 제대로 닫지 않은 범인을 찾는 일은 잠시 뒤로 미뤄두겠습니다.

목차

    1. 부품 설명 및 회로구성

    아시는 분도 있겠지만 대부분의 냉장고는 자석을 감지하는 센서를 부착하여 냉장고 문이 열리고 닫히는 것을 확인합니다. 저의 어릴 때 기억으로는 냉장고 문에 길쭉한 자석이 들어가 있어서 냉장고 문을 닫으면 자석의 힘으로 문이 냉장고에 견고히 붙었습니다. 하지만 요즘 생산되는 냉장고는 문 위쪽에 자석이 들어가 있고 문을 닫았을 때 그 자석이 닿는 부분에 자석을 감지하는 hall 센서가 들어있습니다. 이번에 사용할 부품은 A3144 자석 센서가 들어있는 모듈입니다. 요즘 아두이노 kit을 구매하면 대부분의 센서는 아래 그림과 같이 모듈 형태로 들어있습니다. 사용자들이 회로를 꾸미기 쉽게 알아서 제작해서 나오니 얼마나 편한지 모릅니다. 예전 같았으면 회로에 많은 부품을 구현해야 했을 겁니다.

     

    아두이노 냉장고문 알람 센서
    센서 핀 구성
    아두이노 냉장고문 알람 회로
    회로 구성

    2. 소스 코드

    int Led=2; //LED를 2번 핀에 연결
    int Sensor_in=3; //센서의 디지털 핀을 3번 핀에 연결
    const int bell = 4; //스피커를 4번 핀에 연결
    int Sensor_val; //센서를 저장할 값을 지정

    void setup()
    {
    pinMode(Led,OUTPUT); //LED 핀을 출력으로 설정

    //센서에서 출력되는 데이터가 연결된 핀을 입력으로 설정
    pinMode(Sensor_in,INPUT);
    }

    void loop()
    {
    //센서에서 입력된 값을 읽어 val에 저장
    Sensor_val=digitalRead(Sensor_in);

    //자석 센서에 자석이 감지되면
    if(Sensor_val==HIGH)
    {
    //LED를 끔
    digitalWrite(Led,LOW);
    }
    //자석 센서에 자석이 감지되지 않으면
    else
    {
    //LED를 1초 동안 켬
    digitalWrite(Led,HIGH);
    delay(1000);

    //LED를 1초 뒤에 끔
    digitalWrite(Led,LOW);
    delay(1000);

    //1KHz 소리를 1000ms(1초)동안 출력
    tone(bell, 1000, 1000);
    }}

    제가 구현하고 싶었던 출력은 센서가 자석을 감지하지 않을 때 LED가 1초 동안 켜진 후에 꺼지고 나서 다시 1초뒤에 소리가 나도록 하고싶었는데 최종 결과를 보니 LED가 1초 동안 켜지고 꺼진 후에 다시 켜질 때 소리도 같이 나옵니다.

    원하는 결과 : LED on -> LED off -> 소리

    실제 결과 : LED on -> LED off -> LED on & 소리

    이것 저것 시도해 보다 원하는 결과를 얻게 되었는데 처음 LED를 켜기 전에 1초의 delay를 추가하니 원하던 대로 동작하였습니다.

    delay(1000);
    digitalWrite(Led,HIGH);
    delay(1000);

     

     

    3. 데모

     

    1초 딜레이 추가전 결과

     

    1초 딜레이 추가

    이제 프로젝트를 완료했으니 냉장고에 어떻게 설치할지 고민해 봐야겠습니다. 그리고 냉장고 문을 제대로 닫지 않았던 범인도 찾아봐야겠습니다.