본문 바로가기

애플리케이션 개발/HRC(Home Remote Control)

(26)
0-3. HRC 코드 공유 및 사용 방법 HRC 관련해서 작년 7월에 첫 포스팅을 개시했으니까, 개발한 지 1년이 넘었다. 이제 사용하기에 꽤 편해졌고, 코드도 공유할 만큼 정리가 되었다고 판단이 되어 이번 포스팅을 준비했다. HRC는 단말기를 기준으로 총 3개의 부분으로 구성되어 있다. PC를 통해 구동되는 서버 부분 NodeMCU를 중심으로 한 하드웨어 부분 아이폰 애플리케이션 부분 사용 방법을 살펴보기 전에 먼저 아래 원격 저장소(GitHub)에서 프로젝트 파일을 내려받는다. https://github.com/Taeminator1/Home-Remote-Control 1. PC를 통해 구동되는 서버 부분 집에서 사용하고 있는 공유기에 대한 설정을 변경해줘야 한다. iptime 기준으로 아래 포스팅을 참고하면 된다. https://taemin..
3-5. Script Launcher를 이용해 서버 실행시키기 이전 포스팅(https://taeminator1.tistory.com/64)에서 설명했듯이, 계정에 로그인할 때마다, Terminal 앱을 열고, .js 파일(HRC 플랫폼에서는 app.js 파일)이 있는 곳으로 디렉터리를 변경하고, .js 파일을 실행하는 일은 여간 귀찮은 일이 아니다. Terminal 앱 실행 디렉터리 변경하기 .js 파일 실행 현재는 Script Launcher라는 macOS용 앱을 개발하여 계정에 로그인할 때마다 자동으로 위의 세 가지 작업이 실행된다. 이번 포스팅을 통해 이전에 시도했던 방법들과 Script Launcher에 대해 간략히 소개하고자 한다. [첫 번째 시도] app.js 파일을 기본 디렉터리로 옮기고, 로그인 시에 Terminal 앱 실행하기 앞에서 말한 세 단계 ..
0-2. 사용 후기 및 개선 이번 포스팅에서는 HRC(Home Remote Control)를 실제로 사용하면서 느낀 점들을 적어보고자 한다. 매번 느끼는 거지만, 개발과 실사용에 대한 간극은 생각보다 크다. 개발 시에 생각하지 못했던 많은 부분들이 실제 사용을 통해 드러나게 되었다. 몇몇 문제들은 해결하기도 하였는데, 이번 포스팅을 통해 간략히 정리하고자 한다. 먼저 좋았던 점을 살펴보자. 기본 기능 밖에서 에어컨을 조작하여, 집에 들어오자마자 시원한 냉기를 느끼는 것이 HRC의 가장 큰 목적이었다. 어떤 이유로 서버를 꺼놓기라도 하는 날에는 그 불편함은 이루 말할 수 없었다. 동선 HRC를 사용하기 전에는 집에 들어오면 기본적으로 창문을 닫기 위해 창문까지 걸어가야 했지만 HRC를 사용하면서 출입구에서 창문까지 걸어가는 동선을 줄..
0-1. 구동 영상과 고찰 드디어, 구동 영상이다. 참고로, Actuator의 왕복 시간은 2분 정도가 소요되는데, 영상이 길어져 중간에 편집했다. 소음은 생각보다 있는 편이지만, 옆집에 들릴 수준은 아닌 것 같고, 집에 있을 때 Actuator를 동작시킬 일이 없어 크게 상관없을 것 같다. 또 눈여겨볼 것은, 아이폰 네트워크가 LTE에 연결되어 있다는 것이다. 이제 LTE가 연결되는 어디에서든(혹은 인터넷이 가능한 어떤 것에서든) HRC를 구동시킬 수 있다. 실내에서 수십 번 시연했지만, 실제로 밖에서 동작시켜 본 것은 어제가 처음이었다. 문을 열기 전에 살짝 긴장되었지만, 굳게 닫힌 창문과 선선한 실내 공기가 온몸에 전율을 일게 했다. 확인해 보니까 HRC프로젝트와 관련된 첫 포스팅이 약 2달 전에 이루어졌던데, 2달 동안 정..
5-5. HRC 본체 설치 마침내 본체를 설치하였다. 창틀에 Actuator를 포함한 회로를 붙여 고정하였고, 협탁에 NodeMCU를 포함한 회로와 어댑터를 배치하였다. 회로와 회로를 연결하는 커넥터는 새시에 구멍을 뚫어 이어주었다. Auctuator는, 창문이 닫히는 지점에서 끝이 나도록 배치했다.
5-4. 아두이노 코딩 4 마지막으로 전체 코드를 첨부하고 아두이노 코딩은 마무리 지으려고 한다. 앞에서 설명하지 않은 부분들에 대해서는 아두이노 카테고리를 참고하면 좋을 것 같다. (직관적인 부분 또한 설명에서 제외했다) #include #include #include #include #include #include #include ESP8266WiFiMulti WiFiMulti; const char wifiID[20] = "*************"; const char wifiPW[20] = "*************"; const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution(+: return, -: go) cons..
5-4. 아두이노 코딩 3 이번 시간에는 Actuator 구동 관련된 코드 부분을 살펴보자. 웹페이지에서 button이 on상태로 바뀌면, Actuator가 동작하게 된다. 이 Actuator는 Limit Switch를 만날 때까지 한 방향으로 가다가, Limit Switch를 누르게 되면, 다시 돌아와야 한다. 해당 동작은 while문을 이용해 구현하였다. bool toggle = false; // from web page bool buttonState = false; // to store state of past toggle // 0: end of the actuator, 1: next to the motor bool switchState[2] = {false, false}; void setup() { Serial.begin(..
5-4. 아두이노 코딩 2 이번 시간에는 웹페이지에서 button 상태를 확인하고, 이에 따라 동작하는 코드를 살펴보자. 지난 시간에도 말했듯이, 웹페이지에서 읽은 button 상태만 가지고는 제대로 된 동작을 구현할 수가 없다. 이를 해결하기 위해, 웹페이지에 현재 button의 값은 toggle이라는 변수에, 이전 button의 값은 buttonState라는 변수에 저장하여, 두 변수의 상태가 다를 때, 동작하도록 구현하였다. bool toggle = false; // from web page bool buttonState = false; // to store state of past toggle void setup() { Serial.begin(115200); } void loop() { if (buttonState == t..