2010년 10월 11일 월요일

[BTPT 3/3] 아두이노+블루투스+안드로이드

 

그럼 무선으로 조종해 보겠습니다. 고고고~ :)


블루투스 모듈을 붙었지만, 아두이노 입장에서는 그냥 시리얼로 데이터가 들어오는 것이므로, 호스트 게스트간 사용할 적절한 포멧을 만들어 봤습니다.


#M<좌-방향><우-방향>[좌-속도][우-속도]


다른 명령들과 구분하기 위해 #M으로 시작하고, 방향은 전진, 후진, 정지에 'F', 'B', 'S' 속도는 0~255까지 char의 범위 값으로 전달하였습니다. 예를 들면,


  • 전속력 전진: #MFF\xff\xff

  • 좌 회전: #MBF\xff\xff

  • 정지: #MSS


해서 3~5바이트의 명령이 사용됩니다.

이제 조종기. 블루투스 모듈은 SPP 프로토콜이 올라가 있는 것으로 SPP프로토콜을 사용할 수 있는 호스트가 필요합니다.

블루투스 동글이 달린 노트북/PC나 안드로이드 폰에서 SPP프로토콜을 지원합니다. (아이폰은 SPP 지원이 안된다네요)

안드로이드 sdk에서 비슷한 예제 BluetoothChat을 찾아 적당히 수정해 컨트롤 앱을 만들었습니다.

블루투스 소켓을 만들 때 UUID를 넣어주게 되어 있는데, 이는 SPP가 범용으로 쓰이기 때문에 서로 약속된 UUID끼리만 접속이 되게 하기 위한 것으로 보입니다. 채팅 프로그램으로 탱크에 막 접속할 수 있다면 곤란하겠죠.

UUID는 웹에서 UUID 생성기를 사용해 아무 키나 만들어 쓰는데.. 지금 처럼 범용 SPP 모듈을 사용하는 경우에는 다음의 UUID를 써야 하네요.


00001101-0000-1000-8000-00805F9B34FB


제가 만든 전체 코드는 다음 링크들에 있습니다. (svn) 딱 전후 좌우 구동만 되게 만든 상태라 별 영향가는 없습니다. :)


  • 전체 소스 https://github.com/suapapa/BluetoothPinkTank


그럼 동영상 들어갑니다.


[youtube:http://www.youtube.com/watch?v=5JABtfgtKDo]

무한궤도가 잘 빠지는 문제가 있었는데 구동축에 붙어있는 덜렁대던 바퀴를 에폭시 접착제로 떡 붙여 버리니 해결되었습니다. :)


야외 구동 동영상.


[youtube:http://www.youtube.com/watch?v=tFwVIYyIKPM]

낄낄낄~ 이거 정말 재미있네요.

껍데기를 씌우면 무한궤도가 스커트에 닿아서 잘 안구르는 문제가 있습니다. 뭐 어쩌겠어요 이미 일어난 일인데 ㅋ


자 그럼 소요 비용 소개해 드리겠습니다. 기억에 의한 거라(경제 개념 약함) 많이 틀릴 수도 있어요. 대략적인 가격 입니다.


  • 아카데미 1/35 탱크 - 2만원

  • 블루투스모듈 - 3만원

  • 아두이노보드와 부품비 - 1만원

  • 핑크색 스프레이 - 2만원 -_-;

하나 더 만들어 보고 싶은데 (그럼 더 싸게 잘만들 수 있을텐데) 둘째 키우느라 바빠서 언제가 될지는 모르겠습니다. :)