카테고리 없음

아두이노 나노 이용해서 RC탱크 소형화 시켜보자.

abc0123 2017. 12. 3. 00:27
반응형

 

예전에 블루투스를 이용해서 핸드폰과 아두이노를 연결하고 RC 탱크를 제어하는 내용을 정리했던 적이 있었는데 작은 유선 탱크의 선을 잘라버리고 그 위에 아두이노 우노와 빵 판 및 모터 드라이버 그리고 배터리 등을 올리다 보니 바퀴만 탱크고 모든 것이 엉성했던 기억이 있다. 어떤 형태였는지 참고하실 분들은 아래 글 잠깐 보시면 될 것이다.

 

RC탱크

 

그런데 이번 글에서는 그것들을 모두 소형화해서 제대로 굴러가는 녀석을 만들어보고자 한다. 일단 아두이노는 나노 버전을 사용할 것이고 모터 드라이버 역시 아주 작은 녀석을 사용해볼까 한다.

 

아두이노 나노와 모터드라이버

 

오른쪽이 나노이고 왼쪽 빨간색이 모터 드라이버인데 하프 사이즈의 빵판 위에 올려도 여유가 있다. 그리고 이 빵판 위에는 전원 공급장치까지 들어가게 될 텐데 준비물들을 살펴보면 대충 다음과 같을듯 싶다. 글을 쓰면서 만들고 있기 때문에 추가될 수도 있지만 일단은 다음과 같이 재료를 준비해본다.

 

 

전압 공급

 

오늘은 이것들을 가지고 형태만 갖춘 다음 시리얼 통신을 통해서 모터를 제어해볼 것이다. 그리고 이어서 다음 글에서는 블루투스 모듈을 올리고 스마트폰에서 어플을 다시 만들어서 이 녀석을 제어해볼 텐데 문제가 하나 있다.ㅠ.ㅠ 집에 있던 납땜 장비가 고장이 나는 바람에 저 빨간색 모터 드라이버를 납땜하지 못해서 선을 직접 손으로 연결해줘야 할듯싶다.

 

선 연결

 

엉성하기 짝이 없지만...ㅎ 자기들 역할만 제대로 해주길 바라며 저 선들이 서로 붙지 않도록 적당한 테이핑 처리는 해줘야 할 것 같다.

 

테이핑으로 마무리

 

정말 내가 할 수 있는 최선을 다 한 것 같다. ㅎㅎ 저 선들은 DC 모터 두 개로 각각 들어가는 선들이고 이제 보드에서 신호를 받을 IN 1~4번까지와 VCC(+), GND(-)도 같은 방법으로 연결을 해보자.

 

 

그리고 혹시 모터 드라이버의 개념을 잘 모르시는 분들이 이 글을 보신다면 아래 글 참고하면 조금이나마 도움이 되지 않을까 싶다.

 

모터드라이버

 

신호 입력쪽

 

여하튼 나머지 연결 부분도 똑같은 방법으로 모두 연결을 했다. 이제 이 녀석을 빵판 위에 올려서 아두이노 나노와 연결을 해주자.

 

양면 테이프로 붙임

 

모터 드라이버와 빵 판 그리고 탱크 차대와 빵 판은 각각 약간 두꺼운 양면테이프를 이용해서 서로를 붙였다. 그리고 모터 드라이버에 신호를 보낼 핀은 D2부터 D5까지 네 개를 연결했으며 VCC와 GND까지 연결을 한 상태이다. 이제 컴퓨터의 스케치 프로그램에서 코딩을 통해 모터를 움직여보자.

 

앞에서도 잠깐 이야기했지만 이번 글에서는 컴퓨터와 연결된 상태에서 시리얼 통신을 통해서 모터를 제어해보는 것까지 해서 각 모터의 방향을 확인한 뒤 다음 글에서 안드로이드 앱을 만들고 블루투스로 연결해서 조정을 해볼 것이다.

 

소스 코드

 

먼저 ① 모터에 연결된 선 4개를 제어할 디지털 핀 2~5번 까지를 모두 출력을 위한 OUTPUT으로 설정한 후 시리얼 통신을 위해서 Serial.begin(9600) 함수를 실행하고 있으며 ② if 문을 이용해서 만약에 시리얼 모니터에서 문자(char)가 들어오면 그 값을 a 변수에 저장하도록 한 후 그 값을 시리얼 모니터에 출력해서 확인하도록 하고 있다.

 

 

다음으로 컴퓨터 키보드에서 보통 앞(w), 뒤(s), 좌(a), 우(d)로 많이 사용하는 각각의 키보드의 값을 받았을 때 그에 따라서 모터의 회전 방향을 달리해서 전진, 후진, 우회전, 좌회전을 하도록 해보자. (역시 나는 초보라서 어쩔 수 없나 보다. ㅎㅎ 빠르게 대충 만들다 보니 char 변수 a와 키보드의 문자 'a'가 겹친다.ㅠ.ㅠ 이 둘은 다른 녀석들이니 혹시 이 글을 보시는 분들 중에 나 같은 초보님들은 헷갈리지 마시길 바라며...)

 

회전 방향

 

일단& digitalWrite 함수로 상황에 따라서 연결된 네 개의 핀에 HIGH와 LOW 값을 보내면서 키보드 w, s, a, d를 눌렀을 때 각각 전진, 후진, 좌회전, 우회전하도록 했으며 f를 눌렀을 때는 정지를 하도록 했다. (DC 모터의 특성상 전압이 들어오는 방향에 따라서 회전 방향이 달라지기 때문에 서로 껐다 켰다를 달리하면 회전 방향이 달라지게 된다.)

 

이제 이 코드를 아두이노에 올리고 시리얼 모니터를 열어서 테스트를 해보려고 하는데 아무래도 모터 두 개를 컨트롤해야 하기 때문에 아두이노의 5V 전압만으로는 부족할 것이다. (이미 경험을 해봐서...ㅎㅎ 여튼 기본 전압만으로는 두 개 모두를 컨트롤하기 상당히 버거움.) 그래서 따로 전압을 공급해줄 배터리를 몇 개 준비해서 연결을 해줬다.

 

배터리 추가

 

배터리의 추가로 인해서 소형화하고자 했던 목적이 무색해졌다. ㅎㅎ 어차피 나중에 블루투스로 연결해서 무선으로 이 녀석을 제어하기 위해서는 배터리를 추가해줘야 하기 때문에 일단 이 상태에서 최대한 단정하게 정리한 후 시리얼 모니터에서 키보드를 눌러 제어해보자.

 

 

아직은 컴퓨터와 이 녀석이 짧은 USB 케이블로 연결된 상태라서 마음대로 움직일 수 없는 관계로 답답하고 배선 정리도 제대로 안됐지만 내가 원하는 방향으로 제대로 회전하는 걸 확인할 수 있었다. 이제 다음 글에서는 이 위에 블루투스 모듈 하나만 더 올려서 무선으로 제어를 해봐야겠다.

반응형