카테고리 없음

아두이노 블루투스 모듈 장착으로 무선조종 시스템 만들기

abc0123 2017. 12. 3. 17:47
반응형

 

어제는 '아두이노 나노'와 '모터 드라이버'를 이용해서 모터가 두 개 달린 아주 작은 장난감 탱크 위에 모터를 제어할 수 있는 시스템(?)을 만들고 컴퓨터와 연결해서 시리얼 통신으로 모터의 회전 방향을 제어하는 과정까지 정리를 했었다.

 

모터제어

 

하지만 내가 만들고 싶은 건 유선으로 조종하는 게 아니라 무선조종 시스템이기 때문에 핸드폰과 아두이노를 블루투스로 연결해서 탱크의 모터를 제어해보고자 하며 그러기 위해서 다음과 같은 블루투스 모듈을 준비했다.

 

블루투스 모듈

 

▲ 가격도 아주 저렴하고 유용하게 사용할 수 있는 블루투스 모듈인데 사진에 보이는 네 개의 핀에 각각 VCC, GND 그리고 RX, TX를 연결해주면 된다. 그런데 여기서 한 가지 주의할 점은 아두이노 RX, TX와는 서로 반대로 연결을 해줘야 한다는 것이다.

 

 

핀의 이름

 

▲ 뒤쪽에 핀의 이름이 쓰여 있으니 RX는 TX 쪽으로 연결하고 TX는 RX 쪽으로 각각 다르게 연결을 하면 되고 다음과 같이 장착을 해봤다.

 

블루투스 모듈 연결

 

▲ 탱크의 엔진에 해당하는 부분은 아래쪽에 숨어 있는 모터겠지만 그보다 더 중요한 역할을 하게 될 녀석이 이 블루투스 모듈일 것이다.

 

하드웨어 완성

 

▲ 이제 하드웨어적인 부분은 모두 준비가 된듯하다. 다음으로 소프트웨어를 통해서 이 녀석을 제어해볼 텐데 먼저 컴퓨터와 아두이노 시리얼 통신을 통해서 블루투스 모듈의 이름을 지정해주고 핸드폰에서 해당 블루투스를 찾은 후 등록을 하고 안드로이드 어플을 만들어서 이 녀석을 조종해볼 것이다.

 

 

그러기 위해서 컴퓨터와 아두이노의 시리얼 통신을 통해서 블루투스 모듈의 이름을 설정하는 방법을 간단하게 알아본다.

 

소프트웨어

 

▲ 스케치 프로그램의 시리얼 모니터와 블루투스 모듈 간의 통신을 위해서 ① SoftwareSerial 파일을 include 하고 MY_Tank로 인스턴스화 하면서 두 개의 숫자를 전달해주고 있는데 저건 각각 RX와 TX에 해당하는 핀이다. 아두이노 나노에 RX, TX 핀이 따로 있지만 시리얼 통신을 할 때 거기에 연결을 하면 충돌이 일어나는 것 같더라. 그래서 따로 디지털 핀 11번과 12번에 각각 연결을 했고 ② setup()에서는 시리얼 모니터와 블루투스 간의 통신을 위해서 준비를 하고 있다. ③ loop()에서는 블루투스에서 읽어온 값을 시리얼 모니터에 쓰도록 하고 반대로 시리얼 모니터에서 입력한 값을 블루투스에 쓰도록 하고 있는데 이 파일을 아두이노에 올린 후 다음과 같이 이름을 설정해주면 된다.

 

이름 설정

 

▲ AT+NAME 다음에 설정하고 싶은 이름(MY_TANK)을 입력하고 [전송]을 누르면....

 

설정 완료

 

▲ 이렇게 'OKsetname'이라는 내용이 출력된다. 이제 핸드폰에서 MY_TANK라는 이름의 블루투스가 잡히는지 확인해보자.

 

핸드폰에서 찾기

 

▲ 스마트폰에서 블루투스 기능을 켜고 주변의 장치를 찾아보니 MY_TANK라는 이름의 장치가 보인다. 이 녀석을 내 핸드폰에 등록하기 위해서 선택을 하면...

 

핀 번호

 

▲ 사진처러 PIN 번호를 입력하라고 나오는데 기본 번호는 0000 또는 1234이며 입력하고 [확인]을 하면 내 핸드폰에 등록이 된다. (내가 사용하는 녀석은 1234였는데 이 번호도 앞에서 이름을 설정했던것과 같은 방법으로 변경해줄수도 있다. AT+PIN9876 처럼 숫자를 입력해주면 해당 PIN 번호가 바뀌게 되니 참고하고...)

 

 

등록 완료

 

▲ 이렇게 해서 아두이노에 블루투스 모듈을 연결하고 이름을 변경한 후 스마트폰에 장치 등록까지 해봤고 다음 글에서는 다음과 같은 안드로이드 어플을 만들어서 이 녀석을 제어해보자.

 

 

▲ 영상은 좁은 테이블 위에서 제어를 해본 거라 마음대로 못 달리고 있는 상황이지만 이보다 넓은 곳에서 컨트롤해보면 상당한 속도를 내면서 내가 원하는 방향으로 민감하게 제어가 되는데 다음 글에서 어플을 만들고 연결해서 제어할 때 다시 살펴보기로 하고 이번 글은 여기서 마무리하자.

반응형