본문 바로가기

Arduino/응용 프로젝트(1학기)

블루투스를 이용한 아두이노 탱크

블루투스를 이용한 아두이노 탱크


1. 제작동기


평소에 로봇에 관심이 많고 좋아하고 특히 모터를 좋아하는 나는 아두이노로 탱크를 만들기로 했다. 아두이노 탱크를 만들기로 결심하고 어떻게 이 탱크를 조종할까 고민 중 스마트폰 어플리케이션 중 블루투스를 이용하는 조종기 어플리케이션을 발견하게 되고 블루투스로 조종을 할 수 있는 아두이노 탱크를 만들기로 결심하였다.



2.이론적 배경


(1)블루투스 :

 

블루투스(Bluetooth)는 휴대폰, 노트북, 이어폰·헤드폰 등의 휴대기기를 서로 연결해 정보를 교환하는 근거리 무선 기

술 표준을 뜻한다. 주로 10미터 안팎의 초단거리에서 저전력 무선 연결이 필요할 때 쓰인다. 블루투스 통신기술은

1994년 휴대폰 공급업체인 에릭슨(Ericsson)이 시작한 무선 기술 연구를 바탕으로, 1998년 에릭슨, 노키아, IBM,

도시바, 인텔 등으로 구성된 ‘블루투스 SIG(Special Interest Group)’를 통해 본격적으로 개발됐다. 이후 블루투스

SIG 회원은 급속도로 늘어나 2010년 말 기준 전세계 회원사가 13,000여 개에 이른다.


(2) DC 모터 :

일반적으로 모터는 전력을 이용하여 회전운동의 힘을 얻는 기계이다. 전류에서 돌림힘을 끌어내는 원리는

"자기장 속을 흐르는 전류에는 자기력이 작용한다"라는 것이며, 이 자기력의 방향은 자계와 전류 방향에

직각이 된다. 이 관계는 플레밍의 왼손 법칙으로 표시된다. DC모터는 모터 중 직류 전원을 사용하는 모터이다.

 

(3) 서보 모터 : 서보모터란 세 가지 연결부위를 가지고 있는 모터로 하나는 GND(접지), 다른 하나는 5V,

나머지 하나는 입력신호가 들어오는 전선으로 사용하며 입력된 값만큼 모터를 특정 방향으로 돌리는

모터이다. 여기에서는 휴대폰과 연결하여 아두이노의 신호값을 받아서 포신을 회전시키는데 이용된다.


3. 제작기


일단 아두이노 탱크의 외형제작을 위해 '로보로보'사의 프레임들과 모터 4개를 다루기 위해 모터 드라이브를 썼다.

(물론 메인보드랑 프로그램은 아두이노 것을 썼다.)

로보로보 사의 모터들을 보면 DC모터는 선이 2개, 서보모터는 선이 3개가 있는데 나는 DC모터의 빨간색 선은 VCC

검은색 선은 GND이고 서보모터의 빨간색 선은 VCC 검은색 선은 GND 마지막으로 DC모터와 달리 추가적으로 하나

더 있는 노란색 선은 서보모터를 추가적인 조작(예를 들어 각도값을 주어 동작한게하는 것 등등)을 할 수 있게 한다.


(좌 DC모터 우 서보모터)


다음으로 여러가지의 DC모터를 조작하기 위한 DC모터 드라이브란

렇게 생겼고 모터를 여러개 사용 가능하도록 해준다. 보드 하나당 최대 모터를 2개까지 연결가능하며

드라이브 보드가 여러개만 2개 이상도 가능하다. 왼쪽의 핀4개(사진은 8개가 있지만 제가 사

용한 보드는 왼쪽에 핀이 4개 있었다.)는 DC모터와 연결하는 부분으로 각 모터당 핀 2개,

GND와 VCC를 필요로 하였고 왼쪽에 핀 12개는 6개씩 각 모터랑 연결되어 메인보드로 부터 신호를 받아내는 부분이다. 

위 드라이브를 보시면 오른쪽 핀들 옆에 화살표(GND를 알리는 화살표)가 있는데 그 방향을 기준으로

세로로 3개씩 한 세트의 핀이다. 첫번째 세트의 핀, 두번째 세트의 핀, 세번째 세트의 핀, 네번째 세트의 핀

각 세트마다 아래(화살표가 있는 라인)에서부터 검은색, 빨간색, 노란색 선을 끼우시면 된다.

 

연결은 첫번째 노란색 선(a)을 6번 포트에 두번째 노란색 선(b)을 7번 포트에 연결했습니다. 이것은 제가 모터 테스트 삼아 사용했던 프로그램으로 a에 LOW, b에 HIGH를 하면 전진 a에 HIGH, b에 LOW로 하니 후진을 하였다. 

그리고 이제 탱크의 포신을 조작할 서보모터를 연결한다. 아래에 포신의 좌우를 조작할 서보모터 하나 상하를 움직일 서보모터 하나 고무줄을 발사하기 위한 서보모터 추가적으로 하나 이렇게 연결한다. 

1번 서보모터가 고무줄을 발사하기 위한 서보모터
2번 서보모터가 포신을 상하로 움직이기 위한 서보모터
3번 서보모터가 포신을 좌우로 움직이기 위한 서보모터이다.


그리고 블루투스 모듈이다.

사용한 블루투스 모듈은 DF-Robot Bluetooth V3라는 블루투스 모듈이다.

 

블루투스 모듈의 핀을 보면 좌측부터 GND VCC NC RXD TXD GND 3V3이 있는데 그 중 GND VCC RXD TXD를

사용합니다. TXD와 RXD는 어디에 연결하는지 아래 코드에 나와있다.


스마트폰의 블루투스 어플리케이션은 공개적으로 무료로 배포되는 어플리케이션을 사용했다.  

'bluetooth controller'라는 어플로 사용하기 쉽고 플레이스토어에서 다운로드 가능하다.



이렇게 아두이노로 블루투스 탱크의 외부를 제작한 후 프로그램을 짭니다.

선이 너무 많아 회로도 그리기도 어렵고 보셔도 알아보기 힘드실 것 같아 설명으로 하겠다.


사용한 아두이노는 아두이노 mega보드를 사용하였다. 포트가 부족해서 UNO로는 제작이 어려울 것 이다.

LF는 LEFT FORWARD로 왼쪽 앞바퀴를 뜻하고 RF는 RIGHT FORWARD로 오른쪽 앞바퀴를 뜻한다.

LB는 LEFT BACK으로 왼쪽 뒷바퀴를 뜻하고 RB는 RIGHT BACK으로 오른쪽 뒤바퀴를 뜻한다.

왼쪽 앞바퀴의 첫번째 노란색 선은 6번 포트 두번째 노란색 선은 7번 포트에 연결을 한다.

왼쪽 뒷바퀴의 첫번째 노란색 선은 8번, 두번째 노란색 선은 9번 포트에 연결을 한다.

오른쪽 앞바퀴의 첫번째 노란색 선은 10번, 두번째 노란색 선은 11번 포트에 연결을 한다.

오른쪽 뒷바퀴의 첫번째 노란색 선은 12번, 두번째 노란색 선은 13번 포트에 연결을 한다.

그리고 블루투스 모듈의 TX선은 62번 포트(A8 포트), RX선은 63번 포트(A9 포트)에 연결을 한다.

BS는 BOTTOM SERVO MOTOR로 포신의 좌우 운동을 담당하는 서보모터이다. 5번 포트에 연결한다.

US는 UPDOWN SERVO MOTOR로 포신의 상하 운동을 담당하는 서보모터이다. 38번 포트에 연결한다.

LS는 LAUNCH SERVO MOTOR로 고무줄 발사를 담당하는 서보모터이다. 22번 포트에 연결한다.


그리고 블루투스 신호는 1~9까지 수신이 가능한데 나는 각각

블루투스 신호 1일때는 전진 2일때는 후진 3일때는 좌회전 4일때는 우회전 5일떄는 포탑 좌회전 6일때는 포탑 우회전 7일 때는 포탑 위로 8일때는 포탑 아래로 9일떄는 신호 9가 한번 오면 탱크를 정지하게 하고 두번 눌리면 고무줄을 발사하게 한다. 


4. 동영상







참고 문헌 및 사이트
1. 블루루스 :  서동민 / IT동아 기자 네이버 캐스트 http://navercast.naver.com/contents.nhn?rid=122&contents_id=5531

2. 모터 : 위키백과 http://ko.wikipedia.org/wiki/%EC%A0%84%EB%8F%99%EA%B8%B0, 블로그 글 http://makethat.tistory.com/3

3. 모터 사진 및 모터 드라이브 사진 : 로보로보 쇼핑몰 http://www.roborobo.co.kr/shop/depth_1.php