분명 고3일 때 하라는 공부는 안 하고 블로그에 글을 쓰고 있었는데, 정신차려보니 어느덧 군 복무도 끝나가고 있습니다.
    새로운 마음으로 공부하고 작업한 내용을 기록하고자 새 Jekyll 블로그를 만들었습니다.

    댓글을 쓰셔도 보기가 어려우니, 불편하시더라도 궁금한 점은 옮긴 새 블로그에 댓글로 달아 주시면 성심성의껏 답변해 드리겠습니다. 감사합니다.
    2021년 2월 14일

    새 블로그 주소는 https://luftaquila.io입니다.
     

    LUFT - AQUILA

    A sky sailing Electron.

    luftaquila.io




    블로그를 이전하면서 글도 같이 옮기고 있습니다.

    블로그 이전 공지 : https://luftaquila.tistory.com/56

     

    이 글은

    https://luftaquila.io/blog/diy/esp12-iot-switch/

     

    ESP12 IoT 전등 스위치 만들기

    지구 반대편에서도 끄고 켜는 초특급 와이파이 스위치!

    luftaquila.io

    로 이동되었습니다!


    댓글을 쓰셔도 보기가 어려우니, 불편하시더라도 궁금한 점은 옮긴 새 블로그에 댓글로 달아 주시면 성심성의껏 답변해 드리겠습니다.

     

     

    원래 글을 보려면 더 보기를 누르세요

    더보기

    일과 끝나고 집에 들어오면 참 피곤합니다.

    그럴 때 후딱 샤워하고 침대에 그대로 쓰러저셔 폰질하는 재미가 참 쏠쏠하죠.

     

    폰질하다 보면 슬슬 졸리는데, 침대에 누울 때 불을 안 끄고 누웠습니다.

    이거 참 골때립니다. 스위치까지 고작 1m인데 불 끄러 일어날 수가 없어요. 귀차니즘

     

    귀차니즘은 모든 발명의 원천이죠. 전등을 핸드폰으로 끌 수 있게 만들어 보겠습니다!

     

     

    준비물 :

    아두이노 보드(나노 사용), HC-06 블루투스 통신 모듈, 릴레이, 전원공급장치

    집 스위치를 뜯을 잉여력중증 이상의 귀차니즘

     

     

     

     

    HC-06으로 신호를 받아서 릴레이를 제어하는, 아주 단순한 구조니 이렇게 만들면 되겠죠?

     

    아뇨 안 됩니다. 낚이셨습니다.

    물론, 코드만 넣으면 회로 자체는 아주 잘 작동할 겁니다.

     

    그런데, 벽 스위치에서 선을 끌어다가 릴레이와 연결하면, 한쪽에서 등을 켰을 때 다른 하나는 조작을 못 합니다.

    스위치로 등을 켜면 릴레이로는 조작이 불가능하고, 릴레이로 켜면 스위치로 조작이 불가능하다는 말이죠.

    마치 이런 상황이 되어, 한 쪽에서 스위치를 닫으면 다른 쪽이 무슨 짓을 하든 폐회로가 구성되기 때문입니다.

     

    그렇다고 스위치를 없애 버리면,

    스마트폰이 있어야만 등을 끌 수 있고(...) 물리적인 조작이 불가능한 상태가 되어 버립니다.

     

    그래서, 이렇게 한 번 회로를 구성해 보겠습니다. 동그란 건 그냥 금속판입니다.

    HC-06이 신호를 받거나, 금속 판에 무언가 닿으면 릴레이를 조작하도록 코드를 짜면 됩니다.

     

    제가 구현한 건 간편하게 금속판 아무데나 눌러도 동작하도록 정전용량 센서를 이용해서 만든 거고요,

    그냥 택트 스위치를 디지털 핀 하나와 GND에 연결해도 됩니다.

     

     

     

    어쨌거나 저는 정전용량 센서로 한 번 구현해 보겠습니다.

    정전용량 센서를 구현하기 위해서는 Capacitive Sensor 라이브러리가 필요합니다.

     

    아참, 회로에 있는 저항은 최소 수백 킬로옴 이상의 저항을 사용해 주셔야 합니다.

     

    http://www.arduino.org/learning/reference/capacitive 에서

    here을 눌러 zip파일을 다운받습니다.

     

     

    아두이노에서 zip라이브러리 추가를 해 주시면 사용이 가능합니다.

     

    혹시 문제가 생기시는 분들은 아래 글을 참고해 주세요.

    아두이노 라이브러리 컴파일 에러 때려잡기

     

     

    정전 용량 센서는 사진에 나온 것과 같은 원리로 전도성 물체의 접촉을 감지할 수 있습니다.

     

    손이 접촉함으로 인해 거대한 축전기나 마찬가지인 우리 몸이 금속 판에 충전되어 있던 전하를 가져가 버리고, 이를 감지하는 방식입니다.

     

     

    그럼 이제 결선이 끝났으니 코드를 업로드할 차례군요.

    #include <capacitivesensor.h> #include <softwareserial.h> CapacitiveSensor cs_4_7 = CapacitiveSensor(4, 7); // 4번, 7번 핀으로 정전용량 센서 설정 int tx = 2; int rx = 3; int relay = 10; boolean RLY; SoftwareSerial BT(tx, rx); // 2번, 3번 통신 핀으로 블루투스 통신 String cmd = ""; void setup() { BT.begin(9600); // 블루투스 통신 시작 pinMode(relay, OUTPUT); // 릴레이 핀을 출력 모드로 설정 digitalWrite(relay, HIGH); // 릴레이 초기상태 지정 RLY = false; } void loop() { while(BT.available()) // 블루투스 통신 들어올 때 cmd 변수에 문자열 저장 { char RCV = (char)BT.read(); cmd += RCV; delay(5); } if(!cmd.equals("")) // 받은 내용이 있으면 { if(cmd == "sw") // 받은 내용이 sw인지 검사 { if(RLY == true) // 릴레이 상태가 true면 { digitalWrite(relay, HIGH); // 릴레이를 켜고 RLY = false; // 릴레이 상태를 false로 지정 } else if(RLY == false) // 반대 경우 { digitalWrite(relay, LOW); RLY = true; } } cmd=""; // 문자열 공간 초기화 } long TCH = cs_4_7.capacitiveSensorRaw(30); if(TCH > 1000) // 정전용량 센서에 접촉이 있으면 { if(RLY == true) // 릴레이와 같은 방식 { digitalWrite(relay, HIGH); RLY = false; delay(200); // 딜레이가 없으면 잠깐의 접촉만으로도 } else if(RLY == false) { digitalWrite(relay, LOW); RLY = true; delay(200); // 몇 번씩 켜졌다 꺼졌다 하니까 약간의 딜레이를 줍니다. } } delay(50); }

     

    업로드 후에 정전용량 센서도 한 번 테스트해 보시고, 블루투스 통신이 제대로 되는지 확인해 보겠습니다.

    플레이스토어에서 적당한 블루투스 통신 앱을 설치하시면 됩니다.

     

    저는 이게 그나마 제일 깔끔하고 쓰기 편한 것 같더라고요.

    설정 및 조작 영상을 글 맨 밑에 유튜브 영상으로도 올려놓았으니 참고하셔도 좋을 것 같습니다.

     

    설치하시고 기기 검색하셔서 HC-06과 페어링해 줍니다.

     

    HC-06을 누르시면 이런 창이 뜨는데, Switch Mode를 눌러 주세요.

     

    연결되면 전원 버튼이 보이지만, 아직 값 세팅을 안 해서 작동하지 않습니다.

    오른쪽 위에 톱니 버튼을 눌러 주세요.

     

     

     

    두 값 모두 sw로 설정해 주시고, 아까 그 전원 버튼 눌러 주시면 작동합니다.

     

     

     

    모든 준비가 끝났으니 이제 직접 설치할 차례군요.

     

    ※작업 전에 반드시 차단기를 내리고 작업하세요!

     

     

    스위치 박스를 열고,

     

     

    스위치에 연결된 전선들을 분리해 주세요.

    그냥 끊어버리셔도 되고, 파여있는 홈에 얇은 일자드라이버 같은 거 넣고 쑤셔주면 빠집니다.

     

     

    스위치에 연결되어 있던 전선 두 가닥을 하나는 릴레이의 COM에 연결하고, 다른 하나는 NO에 연결합니다.

    나노 보드나 HC-06도 적절하게 쑤셔넣어 줍니다

     

    이게 스위치 박스에 들어가다 보니 전원 공급이 좀 문제가 되는데,

    왼쪽처럼 9V 배터리를 물리면 생각보다 오래 못 버티더라고요.

    그래서 수정한 게 오른쪽 버전. 남는 휴대폰 충전기 하나 전선 뽑아서 공급해 주고 있습니다.

     

    다 넣으셨으면 스위치 박스를 다시 원래대로 조립하고,

    정전 용량 센서를 터치하기 쉽게 적당히 놓으시면 됩니다.

    정전용량 센서의 접촉부는 그냥 금속 재질이면 다 돼요. 저는 스위치 크기에 딱 맞게 잘라서 넣었습니다.

    생각보다 깔끔하고 안에 보드 LED도 안 보여서 좋더라고요.

     

    것보다 저 거슬리는 전원공급 선을 어떻게 해 버려야 하는데.. 방법이...

     

     

    끝났습니다!

    조작할때마다 매번 앱 켜서 페어링하고 끄는 것도 조금 귀찮긴 합니다만, 침대에서 끌 수 있는게 어딥니까!

    적당히 앱 만들면 위젯 형태로 간편하게 할 수도 있을 것 같은데,

     

    결정적으로 안드로이드 프로그래밍을 못 합니다. ㅠㅠ

    안드로이드 프로그래밍이 가능하신 분께서는 간단하게 만드셔서 쓰면 좋을 것 같네요. 만드시면 저도 좀....

     

     

    부수적인 용도로, 방에 불 켜고 거실에 나와 있는데 엄마가 불 좀 끄고 다녀라! 라고 하시면 간지나게 핸드폰을 뽑아들고 앉은 자리에서 방 불을 끌 수 있습니다.

     

    작동 영상입니다.

     

     

     

     

    Posted by LUFT - AQUILA
    • ㅇㅇ
      2017.12.17 14:31

      글에나온 스위치에다신 금속은 어디서 구하신거죠

      • BlogIcon LUFT - AQUILA
        2017.12.17 14:33 신고

        전기가 통하기만 하면 은박지도 상관없고 아무거나 다 됩니다. 저같은 경우는 노트북 분해했을 때 나온 접지용 금속판 사용했습니다.

    • yee
      2017.12.17 21:05

      MIT 앱인벤터로 한번 해보세요

    • yee
      2017.12.17 21:07

      앱인벤터에다 버튼 넣고 블루투스로 SW나 1글자짜리 뭔가 전송하게 하고 아두이노 소스도 좀 수정하면 될것 같아요

      • BlogIcon LUFT - AQUILA
        2017.12.17 21:12 신고

        조언 감사합니다! 시도해 보고 성공하면 결과 업데이트할게요!

    • Wayoi
      2018.01.15 21:18

      그 뭐냐 220V to 5V 컨버터가 조그마한 크기에 팔더군요! 그걸 연결하면 아두이노에는 전원이 계속 공급될 거 같은데요?

    • BlogIcon 뚜父
      2019.09.07 11:33 신고

      좋은 정보 감사합니다. 혹시 사용하신 저항은 몇 오옴 짜리 인가요?