본문 바로가기

분류 전체보기

(77)
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..
5-4. 아두이노 코딩 1(Flowchart) 이번 포스팅부터 아두이노 코딩에 대해 살펴보자. 먼저 아래 그림과 같은 순서로 코딩을 진행하려고 한다. 웹페이지에서 버튼의 상태를 계속해서 읽어 들어야 하기 때문에, 순차적으로 버튼의 상태를 확인한다. 특징 몇 가지를 살펴보자. 먼저 Wi-Fi가 연결되지 않을 시에는 다음 loop에서 다시 Wi-Fi 연결을 시도하게 했다. (왼쪽 Flowchart 참고) 웹페이지에서 계속해서 button의 상태에 따른 동작 여부를 확인해야 하기 때문에, 순차적으로 button 상태에 따른 동작을 구현했다. 해당 Flowchart를 구현하기 위해 고려할 점이 몇 가지 있다. 웹페이지에서 읽어 들인 button의 상태 값이 방금 조작된 것인지, 아니면 원래부터 해당 상태였는지를 구분할 필요가 있다. 구분하지 않으면 Web ..
5-3. 회로 설계 및 부품 실장 이제 회로 설계하고, 아두이노 코딩하면 얼추 기능은 구현할 수 있게 될 것이다. 회로 설계 관련해서는 이미 아두이노 카테고리에서 얼추 다뤘기 때문에, 빠르게 할 수 있었다. 다만 설계한 회로를 실장 하는 것이 시간이 오래 걸렸다. 회로는 다음과 같다. 가장 좌측에 DC-DC Converter를 배치해 12V를 5V로 바꾸어 주어 5V가 필요한 IC에 전원을 공급했다. 그리고 IR 송수신 부분은 동시에 이루어질 일이 없어서 GPIO 핀을 아끼기 위해 하나로 통합했다. 나머지는 이전 포스팅을 참고하면 될 것 같다. - NodeMCU를 이용한 적외선 센서 조작(송/수신): taeminator1.tistory.com/19?category=924221 - NodeMCU를 이용한 Limit Switch 제어: ta..
5-2. 기구 제작 2 이전 포스팅(5-2. 기구 제작 2, taeminator1.tistory.com/23)에 이어 남은 기구를 제작해 보자. 모터 드라이버를 배치할 공간을 만들어야 하는데, 모터 드라이버에 대한 공간과 함께 Stepper Motor의 공간도 고려해야 해서 아래 왼쪽 사진과 같이 조금은 복잡하게 기구물이 나왔다. 모터와 모터 드라이버의 발열 때문에 일단은 개방적으로 제작하였다. 그리고 만들다가 본드칠을 잘못해서 떼어내느냐고 조금은 지저분해졌다. 해당 기구물에 모터와 이전 포스팅에서 만든 리미트 스위치를 위한 기구를 결합하면 아래 오른쪽 사진과 같이 된다. 모터가 움직이지 않게 홈을 주었고, 커넥터 위치를 위해 구멍도 뚫었다. 이제 회로 설계 돌입니다!
5-2. 기구 제작 1 이전 포스팅에서 기구 제작을 3D 모델링을 통해 할까 고민했었지만, 아무래도 오래 걸리고 유연한 작업이 되지 않을 것 같아 포맥스를 이용해 손으로 직접 만들기로 했다. 그리고 아트웍까지는 너무 복잡해질 것 같아, 회로도 납땜을 통해 구현하는 것으로 결정했다. 기구는 다음과 같은 것들이 필요하다. 어댑터 수납을 위한 케이스 NodeMCU와 적외선 센서 등(메인 회로)을 위한 공간 리미트 스위치를 위한 기구 모터와 드라이버를 배치할 공간 이번 포스팅에서는 1번, 2번, 3번에 대해 살펴보자. 어댑터 수납 케이스랑 메인 회로는 층을 나눠 한 기구부에 넣으려고 한다. 어댑터는 케이스의 1층에 위치하게 하고, 어댑터를 통한 전압을 2층 메인 회로에 전달하는 식이다. 최대한 단순하고 깔끔하게 만드려고 노력했다. 아..