알렉사로 컴퓨터를 원격으로 켜보자 !! (1)
안녕하세요 호그와트입니다.ㅋㅋㅋ
오늘은 알렉사로 혹은 원격으로 컴퓨터를 켜는 방법에 대해 알아볼게요 !
이번 DIY로 원격에서 컴퓨터를 켜서 게임을 돌린다거나 자기 컴퓨터가 느려서 미리 켜놓고 싶다거나 하시는 분들에게 도움이 되었으면 좋겠습니다.
컴퓨터를 원격으로 켜는 방법중에 WOL 이라는 방법이 있습니다. 대상 컴퓨터의 메인보드에 PCIE/PCI 를 대기상태로 만든 뒤 공유기나 다른 컴퓨터에서 매직패킷 이라는 특수한 패킷을 쏘면 컴퓨터를 켤 수 있습니다. WOL은 가장 간편하게 ? (바이오스 세팅, 윈도우 세팅 변경, 공유기 DDNS, DMZ 세팅 등 막간단하지는 않아요 ㅜㅜ .. ) 할 수 있는 방법인 것 같습니다.
하지만 저의 경우엔 PCI 슬롯이 대기모드여서 그런지 컴퓨터 본체 LED가 꺼지질 않더라고요 ㅜㅜ 참고로 저는 Asrock 보드를 사용중입니다. 컴퓨터가 완전히 꺼지지 않는 상태라는게 좀 꺼림직하더라구요 ㅜㅜ
그래서 그냥 아두이노와 릴레이 모듈을 이용해 파워선을 쇼트해서 하는 방법으로 원격 컴퓨터 오온~ 기능을 구현 했습니다. 그리고 저번 시간에 했던 Fauxmo 를 이용해 알렉사로 혹은 원격에서 알렉사 얩으로 컴퓨터를 켤수 있게 했습니다. ㅋㅋㅋㅋㅋ
(이 경우에 따로 공유기 세팅은 안해도 알렉사 앱에서 집에 있는 알렉사로 명령을 내리는게 가능합니다. )
동작원리는 아래 그림과 같아요. 음성 혹은 앱에서 Computer On이란 명령을 하면 Alexa가 이를 라즈베리 파이에 전송하고 라즈베리 파이는 블루투스로 아두이노에게 릴레이를 쇼트(컴퓨터 켜기)시키라고 명령하는거죠 !! 쉽쥬 ~!
자 그럼 일단 컴퓨터를 킬 아두이노부터 만들어 봅시다!! 준비물을 보고 갈게요 !
1. 준비물
- 아두이노 레오나르도 pro micro (우노를 써도됩니다.)
- 릴레이 모듈
- HC-06 블루투스 모듈
- MINI USB(아두이노에 맞는 USB 를 쓰면 됩니다. 보통 아두이노 사실 때 같이 와요 ! )
- 니퍼, 롱노우즈, 납땜도구 (선택사항)
저는 납땜을 했는데요! 그냥 조그만한 빵판 을 사서 납땜없이 연결하셔도 됩니다. 직접 연결하실 경우에는 아두이노 우노 를 쓰시는걸 추천 드립니다. 위에서 소개한 마이크로 모듈은 핀이 납땜이 안되서 오는 경우가 많기 때문에 어짜피 납땜기를 사야 하는 불상사가 ……
그리고 추가적으로 수-수 점퍼선, 암-수 점퍼선이 적당히 있어야 연결하기 수월합니다. 아니면 집에서 안쓰는 랜선을 짤라서 점퍼로 이용하셔도 되지만 많은 노동력이 .. ㅜㅜ
2. 회로
회로는 아래와 같이 구성하면 됩니다. 주의 점은 회로상의 Bluetooth의 TX, RX 핀을 아두이노의 12, 13 으로 연결 했는데 제 보드에서는 해당 위치 가 14, 15로 되어 있습니다. 아무래도 보드 버전이 좀 달라서 인것 같네요 !! 여튼 자기가 쓰는 보드에 적혀있는 핀번호를 프로그램상에서 사용하면 됩니돠아 ~~~ !! 여튼 아래 회로 대로 실제 연결을 해 보세요 !! 아래 Computer Power 부분에는 아직 그대로 두시면 됩니다. 혹시 동작을 확인하고 싶다면 LED를 달아보세요 !
LED 연결은 (+) 는 VCC 에 (-) 는 릴레이의 COM, 릴레이의 ON은 Ground에 연결해 보세요. 그럼 스케치를 업로드 한 뒤에 릴레이의 동작을 눈으로 확인 할 수 있을 거에요 ! 사실 릴레이 입력이 들어오면 정상작동시 “띡 ” 하는 소리가 남으로 동작하는지는 소리로 확인 가능 하답니다. ㅋㅋ
3. 스케취
이제 회로를 구성 했으면 아두이노 스케치를 올려서 테스트를 해야 겠죠 ? 릴레이가 잘 동작하는지 또 Bluetooth로 데이터가 잘 날라 오는지 봐야 겠죠 ??? 바로 고고 해봅시다.
#include <SoftwareSerial.h> const int relay_pin = 8; SoftwareSerial mySerial(15, 14); // RX, TX void setup() { Serial.begin(9600); pinMode(relay_pin, OUTPUT); Serial.println("Goodnight moon!"); // set the data rate for the SoftwareSerial port mySerial.begin(9600); digitalWrite(relay_pin, HIGH); // 8번핀이 Open이 아닌경우 무조건 ON 과 COM 이 연결된다. } // The loop function is called in an endless loop void loop() { char serial_ch=0; if (mySerial.available()) { String str_bt = mySerial.readString(); Serial.println(str_bt); str_bt.trim(); if(str_bt=="True") { Serial.println("Trun On Computer"); digitalWrite(relay_pin,LOW); delay(500); digitalWrite(relay_pin,HIGH); mySerial.println(" COM_OK"); } else if(str_bt=="False") { Serial.println("Trun Off Computer(Shoud be deleted )"); //digitalWrite(relay_pin,LOW); } } if (Serial.available()) { serial_ch= Serial.read(); if (serial_ch == 'a') { digitalWrite(relay_pin,LOW); delay(500); digitalWrite(relay_pin,HIGH); } Serial.print(serial_ch); mySerial.write(serial_ch); } }
위 코드를 복사하셔서 아두이노에 업로드하시면 됩니다. 터미널을 열고 ‘a’ 를 입력해 보세요 !! 릴레이에 딱!!! 소리가 날것 입니다.
setup 부분에 보면 relay_pin 을 바로 HIGH 로 바꿨죠 ? 이게 8번핀이 Open 상태가 아니면 무조건 ON 과 COM 이 연결된 상태로 초기 세팅이 되더라구요 ㅜㅜ 그래서 Pin을 할당하자 마자 HIGH 로 주면 Relay의 ON 과 COM 이 Open 상태가 됩니다. !! 그럼 블루투스에서 신호를 받으면 Relay_pin 을 LOW 로 만들어 Shot 상태로 만들고 0.5초 뒤에 다시 Open으로 만들죠 !
넵 그럼 이전 포스팅 라즈베리파이 3 B+ HC-06 블루투스 모듈연결을 참고하여 위 내용을 실험해 볼게요 !!!
일단 위 포스팅에서 짰던 bt_client.py 모듈을 변형할 게요 아래같이요 !
# Create the client socket client_socket=BluetoothSocket( RFCOMM ) client_socket.connect(("20:14:04:11:XX:XX", 1)) while True: msg = raw_input("Send : ") print msg client_socket.send(msg) print "Finished" client_socket.close()
자 이제 위 코드를 실행 시키고 블루투스 연결을 확인한 뒤 True 글씨를 보내 볼게요
그럼 릴레이가 똑딱 하고 연결될 거에요
여기까지 했으면 동작 테스트는 끝났어요 ! 이제 납땜을 하고 돌아오시면 됩니다. 납땜을 하기 싫으신 분들은 바로 가시면 되구요 !!
저는 아래 같이 납땜을 했습니다. !! 아래 LED랑 저항은 필요 없는 겁니다 (제가 LED 충이라 그냥 달아봤어요 … ㅋㅋ )
4. 컴퓨터에 Relay 연결
이제 동작 테스트를 했으면 컴퓨터에 연결을 해야 겠죠 ?
컴퓨터 본체를 뜯어보면 Power Switch 선이 있어요 ! 보통 헤더 부분에 아래와 같이 적혀 있죠
이 선을 따라서 적당한 위치에서 피복을 벗겨 줍니다. 그리고 긴선 두 가닥을 Power SW 선에 각각 꼬은 뒤 절연 테이프로 감싸주세요 아래 같이 말이죠 !!!
그리고 아래 그림 처럼 노랑선을 릴레이에 연결해 줍니다. ON 과 COM 에다가요 !!
넵 이렇게 한 뒤 아두이노에 Mini USB Cable을 끼워서 핸드폰 충전기가 USB 멀티 충전기에 끼워 주세요 !! 이 아두이노는 꺼저서는 안됩니다.
허휴 이틀동안 썻는데 힘드네유 ㅜㅜㅜㅜㅜㅜ 이로써 알렉사로 컴퓨터를 원격으로 켜보자 1탄이 마무리되었구요
다음 포스트에서는 알렉사와 라즈베리파이를 연동 시켜 음성 그리고 외부에서 Computer 를 끌 수 있게 해보죠 !!
다음번엔 폭탄 만드는 법도 올려주세요
폭탄은 철컹철컹 할지도 ㅋㅋㅋ