본문 바로가기
Developer/Drone DIY

드론 DIY | 아두이노의 역할과 컴퓨터

by Doony 2015. 11. 20.

드론 DIY | 아두이노의 역할과 컴퓨터


3편. 아두이노 설치와 컴퓨터에 대한 기본적인 이야기.



드론을 만든다고 하자. 그럼 조종기도 있을 거고, 모터도 있을거고, 변속기도 있을거고 (지난 포스팅 참고)

가장 중요한 컴퓨터도 있을 것이다.




<아두이노 UNO. 출처 : 구글>


오늘은 그 컴퓨터에 대한 포스팅이다. 쉽게 얘기해서, 모터와 변속기, 그리고 배터리 사이에서 모든 것을 다 통제하는 두뇌같은 녀석.

자, 아두이노에 대해 설치하기에 앞서 두뇌라는 녀석에 대해 좀 더 알아봅시다.


컴퓨터(아두이노)는 대체 드론에서 뭘하는 걸까?


나도 전문적인 지식을 가진 사람은 아니지만, 대체로 이정도만 알면 적어도 DIY를 할 수 있다는 마음으로 글을 시작.

컴퓨터는 0과 1밖에 모른다는 얘길 다들 알고 있을 것이다. 그래서 이진법이니 뭐니 복잡한 이야기를, 어느정도 관심이 있는 분이라면 다들 알고 있을텐데..


아주 쉽게 얘기하면 집에 있는 형광등 스위치이다. on/off 2개의 기능밖에 없는 것처럼, 컴퓨터도 on/off 기능밖에 없다.

단, 컴퓨터는 수만개의 형광등 스위치를 가지고 있다고 보면 된다.


형광등 on 스위치로 하면, 전류가 흘러 형광등에 전원을 공급한다. 반대로 off면 전원 공급을 끊는다. 아주 단순한 원리.

아두이노라는 컴퓨터도 똑같은 역할을 한다.


전류 신호를 읽는, 혹은 공급하는 여러개의 스위치가 있다. 

예를 들어 이런 명령을 준다.


a. 1번 형광등(스위치)에 on 신호를 줘라. 2번 형광등에도 on 신호를 줘라.

b. 1번 형광등이 on이면, 3번도 on해라.

c. 3번 형광등이 on이면, 2번은 off해라


순서대로 위의 명령들이 컴퓨터를 통해 전송된다. 그렇다면 어떤 일이 벌어질까?

먼저 1번이 켜질거고, 2번도 켜질 것이다. 그 후에, 3번도 켜진다. 마지막으로 2번은 꺼진다. 결과적으로 1, 3번은 켜져있고 2번은 꺼져있을 것이다.

이렇게 컴퓨터는 on/off 신호를 제어한다. 0과 1밖에 모르는 것이다. 다만, 아주 많은 0과 1을 선택적으로 명령할 수 있다.


드론에 이를 적용해보자.

4개의 모터가 있는데, 균형이 안맞아 한쪽으로 기울기 시작한다. 그렇다면 컴퓨터는 어떤 명령을 줘야할까?

먼저 명령을 주기에 앞서, 기울어지고 있다는 신호를 각도 센서를 통해 얻어와야한다. 각도값을 얻어 왔다면?


a. 각도<0 이면 오른쪽 모터 출력을 높여라.

b. 각도>0이면 왼쪽 모터 출력을 높여라.


간단하게 이런식으로 명령을 줄 수 있다. on/off를 아주 빠르게 온오프온오프 반복하게 되면, 0과 1이 짧은 순간에 무수히 많이 반복되는 것이고

결과적으로 0.5나 0.2, 0.8과 같은 수치도 만들어줄 수 있다. 아두이노에서는 이런 기능을 pwm이라고 하는데 자세한건 다음에..


아무튼 이런게 컴퓨터다. 명령을 주는 것!

명령을 만들어내는게 바로 우리!!! 우리가 위에서 a,b,c 같은 알고리즘을 만들어내야 한다.



아두이노의 종류


컴퓨터도 스펙에 따라 종류가 많듯이, 아두이노도 스펙에 따라 이름이 다르다.

아두이노 우노, 아두이노 메가, 아두이노 미니 등등... 나는 가장 기본인 아두이노 우노를 사용한다. 

네이버 지식쇼핑에 검색해서 하나 구매하면 된다. 정품과 짝퉁이 있는데, 보통 짝퉁을 사용해도 큰 무리는 없는 듯 하다.




아두이노 IDE 설치


IDE라는 건 통합개발환경이라고 한다. 큰 의미를 가질 필요 없이, 아두이노에 프로그램을 심어주는 녀석이다.

우리가 짠 알고리즘을 아두이노로 전송하는 역할!

고로 컴퓨터로 다운받아야 하는데...


https://www.arduino.cc/en/Main/Software


여기 들어가서, 본인 운영체제에 맞는 녀석으로 다운 받고 설치하도록 한다.



자, 설치까지 해서 실행을 해보면 다음과 같이 뜬다.





오늘은 아두이노 실행까지는 안할 것이므로.. 간단하게 설명만 해보도록 하겠다.

보시다시피, 하얀 부분은 우리가 전송할 프로그램을 작성하는 부분이다. void setup, void loop 라는 부분이 있는데, 어렵지 않다!


a. void setup

아두이노는 컴퓨터다! 부팅되기 전에 미리 이 부분을 딱 한번 실행하는 것이다. 즉, 예를 들어 형광등 3개가 있는데

본격적으로 컴퓨팅하기 전에 모두 다 꺼놓은 상태여야 한다면? setup 부분에 형광등 다 끄라고 적어놓는 것이다.

이렇게 초기 조건들이나, 초기 설정이 필요한 경우 모두 setup 부분에 적는다.


b. void loop

이제 컴퓨터가 켜진 것이다. loop는 말그대로 루프! 이 부분은 무한반복되면서 계속 실행된다. 

예를 들어, 


void loop() {


1번 형광등 켜라

1초 기다려라

1번 형광등 꺼라

1초 기다려라


}


이렇게 알고리즘을 짠다면,

1번 형광등이 켜지고 1초 지난 뒤, 다시 꺼지고 1초동안 기다릴 것이다. 그 후에는? 다시 loop가 반복되면서 다시 켜질 것이다. 무한번 반복하게 될 것이다.


이러한 것을 채워나가는 것을 흔히 코딩이라고 하고 그 안에 자기만의 알고리즘을 담는다.

고등학교 때 순서도라는 걸 배워본 사람들은, 그게 알고리즘의 방식이라고 이해하시면 된다.


그렇다면, 모든 코딩은 이렇게 한번만 실행되거나 무수히 많이 반복되어야 하나? 

알고리즘에 따라 그렇게 되지 않도록 설정할 수 있다.


또한, 이 2개의 void 안에만 코딩을 하게 될 경우 너무 지저분해질 수 있는데 이를 위해 새롭게 함수를 만들어 사용할 수도 있다.


void hihihi() {

}


예를들어 이렇게 만들면, hihihi라는 함수를 나는 방금 만든 셈이 된다. 자세한 사용은 다음에..



어느정도 감이 잡혔는가?

아직 구체적인 명령어나 프로그래밍 구문들은 다루지 않았지만, 겁먹을 필요는 없다. 쓰는 명령어는 매우 한정적이고, 쉽게 배울 수 있도록 배려한 것이 아두이노니까 말이다!! 

코딩이 처음보는 사람들은 매우 어려워보이겠지만, 지극히 상식적인 부분이 많다.


고로 다음포스팅에서는, 기초적인 프로그래밍을 통해 형광등을 껐다키는 예제들을 한번 봐보도록 하겠다. 



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

아두이노, 드론 관련 질문: 댓글 달아주시거나, 카카오톡에서 yngneers 친추 후 질문해주시면 됩니다!

드론 제작기 관련: http://yngneers.tistory.com 참고하시길.


전문가는 아니지만 아는 한에서 최대한 답변드리고 서로 정보 공유해서 함께 배워가고 싶습니다!

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


댓글