블루투스 AT 커맨드로 세팅하기

AT커맨드라고 들어본 적이 있으신가요?

AT 커맨드란 사람이 이해 가능한 글자를 통해서 무언가를 세팅하는 방식을 말합니다. 예를 들어보죠. 컴퓨터는 우리가 이해하는 글자로 궂이 통신할 필요가 없습니다. 그저 기계가 이해할 정도의 숫자조합으로 통신을 하면 됩니다. 00010 을 왼손 들기, 00100을 오른손 들기 같은 명령어로 약속해 둘 수도 있습니다. 하지만 이 것은 인간에게는 다소 어려운 접근 방식입니다. 왜냐하면 직관적이지도 않고 어디선가 찾아봐야하고 기억하기도 쉽지 않고 쉽게 틀릴 수 있기 떄문입니다. 더욱이 우리가 입력을 하기 위해서는 키보드로 입력하는 것이 가장 편한데요, 키보드로 입력할 수 있는 정보는 한계가 있습니다. 알파벳으로 표현할 수 있는 범위 안에서 기계와 통신을 하면 참 좋겠지요? 그래서 이렇게 정한 것입니다. 알파벳 배열로 우리는 디바이스를 조작할 수 있습니다.

그럼 어떻게 블루투스를 세팅하는 건가요?

블루투스 모듈은 통신 모듈입니다. 우리가 유선 통신에서 시리얼 통신을 사용했었지요? 블루투스는 그 그 통신을 무선으로 하는 것입니다. 우리가 블루투스에게 시리얼 신호를 보내면 블루투스는 상대방 블루투스에게 다시 신호를 무선으로 전달합니다. 상대방 블루투스는 상대방 블루투스가 연결되어있는 손바닥컴퓨터(아두이노) 등에게 정보를 전달합니다.

나 - 아두이노

이렇게 통신을 했다면,

나 - 블루투스 <-> 블루투스 - 아두이노

이렇게 통신이 되는 것입니다.

그래서 블루투스에게 대화를 걸면 블루투스는 내가 말한 그 대로 상대방 블루투스에게 전해줍니다. 그런데, 아주 특이한 대화는 그대로 전달하지 않고, 자신을 셋팅하는 말로 알아 듣습니다. 바로 그 말의 시작점이 AT 입니다.

블루투스 제조사마다 AT 명령어가 다르지만 거의 비슷합니다. 셋팅 모드 진입을 위한 약속된 단어를 말해주면 그 셋팅모드로 들어가는거죠. 세팅모드로 들어가기 위해서는 첫 번째로 당장 해야 할 일이 블루투스와 대화속도를 맞춰주는 것입니다.

대화 속도는 어떻게 맞추나요?

앞 페이지에서 언급한 대로

  • 아두이노에 블루투스를 꽂고
  • 소스를 다운받고
  • 아두이노에 업로드 하고나서
  • USB를 뽑아서 전원을 끄고
  • 블루투스의 버튼을 누르면서
  • USB를 꽂아서 전원을 공급하고
  • 시리얼터미널을 엽니다.

이 순서대로 따라오셨다면 아두이노는 블루투스의 대화속도 (BaudRate)를 찾았을 것이고, 우리가 할 일은, 시리얼터미널의 대화속도(BaudRate)를 금방 찾은 대화속도에 맞춰줄 필요가 있습니다. 보통 9600이 초기값입니다. 또한 NL & CR 를 설정해 줄 필요가 있습니다.

그런데 참 헷갈리는 부분이 있습니다.

바로, 블루투스 모듈을 셋팅하기 위한 보레이트 (Baudrate) 와 블루투스가 실제로 연결되었을 때 보드와 통신하는 보레이트가 다를 수도 있다는 것입니다. 제조사에 따라서 어떤 모듈은 그렇게 동작하고 또 어떤 모듈들은 그렇게 동작하지 않습니다. 그래서 참 이게 난해합니다. 특히나 중국에서 싸게 구입한 모듈들은 더더욱 그렇습니다. 가격이 싼 까닭에 덜컥 구입을 했지만 이런 경우 참 난감하지요. 같은 업체에서 시간을 두고 구매한 똑같이 생긴 모듈이 특성이 다를 때도 있습니다. 이런 패닉 상황에서 벗어나기 위한 가장 좋은 방법은 바로 공장초기화 상태로 쓰는 것입니다. 그리고 마음속으로 이 것이 실제 블루투스 통신할 때와 셋팅할 때와의 BaudRate 가 다를 수도 있다는 점을 반드시 염두해야 합니다.

이제 뭘 하면 되는거죠?

사실 딱히 할 것은 없습니다. 다만 블루투스의 이름과 비밀번호 (Passkey)를 알아보겠습니다. 다음 AT 명령어를 입력합니다.

AT+NAME?

AT+PSWD?

위처럼 입력하면 이름과 비밀번호가 출력될 것입니다. 이 이름과 비밀번호를 기억해 두었다가 나중에 블루투스를 접속할 때 입력하시면 되겠습니다.


https://www.itead.cc/wiki/Serial_Port_Bluetooth_Module_(Master/Slave)_:_HC-05

results matching ""

    No results matching ""