rc카 만들기 아두이노 자동주행

아이디어 – 조이쉴드를 이용하여 rc카를 조종하고 버튼을 누르면 자율주행이 가능하게 하자!

조이쉴드와의 통신은 master/slave 방식의 블루투스 통신을 이용해 제작했으며 자율주행은 서보모터와 초음파센서를 이용해 제작했다.

결과물

rc카 본체

죠이스틱

필자는 hc-06을 블루투스 모듈로 구성했다.조이스틱의 명령에 따라 RC카가 동작하기 때문에 조이스틱을 MASTER로 지정한다.Bluetooth 모듈을 본체와 조이스틱에 각각 적절하게 연결하고 이 소스 코드를 업로드 한다.

그 후 시리얼 창에 AT를 쳐서 OK라는 응답이 돌아오면 AT+PINOO를 쳐서 양쪽 PIN번호를 합쳐 AT+NAMEO를 쳐서 양쪽 블루투스 이름도 맞춰준다.

MASTER에서 설정하는 쪽의 시리얼 창에 “AT+ROLE=M”으로 입력하고(블루투스 모듈의 기본값은 “slave”이므로 “slave”는 따로 설정할 필요가 없음), 응답이 적절하게 돌아오면 블루투스 모듈의 전원을 껐다가 다시 연결해주면 기초설정이 완료된다.

MASTER측의 Bluetooth 모듈의 불빛이 이전보다 천천히 점멸하고 있는 것을 볼 수 있을 것이다. 마지막으로 “slave 모듈”과 “master 모듈”을 가까이 대면 페어링이 되고, 계속 깜박거리던 블루투스 모듈의 빛이 깜빡이지 않고 계속 들어오는 모습을 볼 수 있다.

페어링이 된 모습

필자가 가장 곤란한 부분은 바로 여기에 있었는데, 아두이노간 통신을 위해 한쪽 Bluetooth 모듈을 MASTER로 설정했으나 페어링이 되지 않았다. 이것은 필자가 구입한 모듈이 SLAVE 모드에 대응한 것 뿐이었다.

MASTER/SLAVE 전환이 가능한 모듈에서 재구매하여 조이스틱용으로 사용하는 레오나르도에 연결했지만, 이번에는 Bluetooth 모듈에 전원이 켜지지 않았다. 이는 구입한 모듈이 UNO 전용이었기 때문이다. 역시 부품을 살 때는 잘 확인하고 사야해. 조이스틱은 master로 설정해야 하기 때문에 레오나르도를 본체에 사용하고 UNO를 조이스틱에 사용하기로 했다.

소스 코드 본체 코드

자율주행모드는 전방에 장애물이 있는지 판단하고 서보모터를 우측으로 회전한 뒤 초음파센서로 거리를 측정해 좌회전 후 거리를 측정해 장애물이 있는지 판단했다. 그리고 좀 더 여유 있는 쪽으로 rc카가 회전할 수 있도록 설계되었다. 하지만 사각지대에 있는 장애물을 발견하지 못해 자율주행에 어려움을 겪었다. 이를 개선하기 위해 앞에 있는 장애물을 판단할 때 11090도에 장애물이 있는지 확인하고 하나라도 있으면 앞에 장애물이 있다고 판단하는 코드로 수정했다. 자율 주행 코드를 정확히 맞추려면 양쪽 겨드랑이와 rc카의 뒷부분까지 초음파 센서를 달아야 할 것이다.

조이스틱 코드

조이스틱의 x와 y값을 map함수를 통해 매핑하고 이에 맞는 값을 Bluetooth를 통해 본체에 전달한다.

동작 영상

개선안

  • 2륜구동 역부족 문제 → 4륜구동 – 사각지대 장애물 인식 안 됨 → 부가적인 초음파 센서 추가. – 전원 문제. 9v 전지에선 전류가 부족해 서보모터가 잘 작동하지 않는다. 작동해도 빠르게 방전된다. AA 전지를 사용하면 본체가 너무 무거워진다.가볍고 전류가 큰 다른 배터리를 사용한다.- 본체 제작 어려움 -> 3d 프린터 사용

자율주행 Rc차를 만들어 봤는데 나름대로 재미있었던 것 같다. 다음에는 라인트레이서인 rc카도 만들어보자.아, 그리고 건전지 말인데 에너자이저보다는 듀라셀이 성능이 좋았던 것 같아.

이번 프로젝트에서 쓴 9v 배터리 양…

error: Content is protected !!