아두이노 블루투스 스마트 폰 - adu-ino beullutuseu seumateu pon

블루투스를 활용해 스마트폰과 무선 통신하기

2018-11-30 14:31:35

개요

BLE가 아닌 HC-05나 HC-06과 같은 블루투스 모듈을 사용하게 되면 블루투스 모듈에 관한 기본 정보를 세팅해야 할 때가 있습니다.

예를 들면 블루투스 모듈의 이름을 세팅해야 할 때도 있고 블루투스의 통신 속도나 4자리의 핀 번호, 슬레이브/마스터 모드 등 다양한 정보를 세팅하게 됩니다.

이럴때 사용해야 하는것이 ATcommand입니다.

사실 AT 명령어는 헤이즈 사의 모뎀을 제어하는 언어였는데 사실상 통신의 표준이 되어 모든 모뎀을 제어하는데 쓰이고 있습니다.

블루투스 모듈도 AT명령어Set이 존재하고 이 명령어를 통해 블루투스 모듈을 제어할 수 있습니다.

이번 글에서는 블루투스 모듈을 사용할 때 쓰는 AT명령어를 사용하는 방법에 대해 알아보겠습니다.

부품 목록

NO 부품명 수량 상세 설명
1 오렌지보드 1 Arduino UNO
2 블루투스 모듈 1 HC-05, HC-06
3 브레드 보드 1  
4 점퍼 케이블 5  
부품명 오렌지보드 블루투스 모듈 브레드 보드 점퍼 케이블
부품 사진
아두이노 블루투스 스마트 폰 - adu-ino beullutuseu seumateu pon

아두이노 블루투스 스마트 폰 - adu-ino beullutuseu seumateu pon
아두이노 블루투스 스마트 폰 - adu-ino beullutuseu seumateu pon
아두이노 블루투스 스마트 폰 - adu-ino beullutuseu seumateu pon

하드웨어making

아두이노 블루투스 스마트 폰 - adu-ino beullutuseu seumateu pon

ATcommand 진입하기

ATcommand에 진입하기 위해 일단 먼저 소스 코드를 올려야 합니다.

#include <SoftwareSerial.h>

SoftwareSerial BTSerial(12, 13);   //bluetooth module Tx:Digital 2 Rx:Digital 3

void setup() {

pinMode(8OUTPUT);    //HC-05

digitalWrite(8,HIGH);

Serial.begin(9600);

BTSerial.begin(9600);

Serial.println("ATcommand");  //ATcommand Start

}

void loop() {

if (BTSerial.available())

Serial.write(BTSerial.read());

if (Serial.available())

BTSerial.write(Serial.read());

}

cs

코드는 위를 보시면 알겠지만 정말로 간단합니다.

컴퓨터에 시리얼모니터에서 값을 보내면 그 값을 블루투스모듈에서 읽고  블루투스에서 보낸 값은 다시 시리얼 모니터에서 읽는 형식입니다.

블루투스가 일반적인 상황에서는 아래와 같은 속도로 LED가 깜빡이지만 ATmode로 들어가게 되면 LED의 깜빡이는 속도는 달라지게 됩니다.

그리고 ATmode를 사용할때 블루투스 시리얼 통신을 맞춰주어야 합니다.

HC-06의 경우는 기본 속도가 9600이기 때문에 9600으로 맞추면 됩니다.

또 마지막으로 시리얼 모니터 창에서 AT명령어를 입력할때 오른쪽 하단에 시리얼 텍스트 입력 형태를 Both NL&CR로 바꿔줍니다.

(HC-06은 No line ending으로 맞춰주시면 됩니다)

위 과정을 따라오고 시리얼 모니터에서 AT를 입력할때 OK이라는 단어가 뜬다면 AT모드에 제대로 진입한것이 됩니다.

아두이노 블루투스 스마트 폰 - adu-ino beullutuseu seumateu pon

<HC-06의 ATcommand 입력. No line ending, Bluetooth 통신속도 - 9600>

참고 자료

AT모드 진입이 끝이 아니라 사실상 진입 후에 어떤 명령어를 써야하는지가 더 중요합니다.

하지만 명령어가 한두개가 아니기 때문에 링크를 통해 참고자료를 확인하시는 편이 빠릅니다.

HC-06 AT 명령어 확인하기

아두이노 블루투스 스마트 폰 - adu-ino beullutuseu seumateu pon

kocoafabeditor

아두이노 블루투스 스마트 폰 - adu-ino beullutuseu seumateu pon

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

아두이노 블루투스 스마트 폰 - adu-ino beullutuseu seumateu pon
arduino, 아두이노, 블루투스, bluetooth, atcommand, ATmode, at커맨드, hc06, hc06

아두이노 블루투스 스마트 폰 - adu-ino beullutuseu seumateu pon

안녕하세요?

이번 포스팅에서는 아두이노 보드에 블루투스 통신 모듈을 장착해서, 스마트폰을 이용한 원격 조작을 했는 수업의 내용을 포스팅 하고자 합니다. 그런데 너무 내용이 길어서 하는 수 없이 2부분으로 나누어야 했습니다.

먼저 위 사진에 보이는 것이 블루투스 통신 모듈입니다. 블루투스 통신이란 제가 알기로는 적외선을 기반으로 해서 통신인데, 이 모듈을 아두이노 보드에 연결하면 통신이 된다고 합니다.

그리고 확대했는 블루트스 모듈의 뒷 모습입니다. 여기서는 역시 5V와 GND가 연결되어야 당연이 작동을 할 수 있으며, RX와 TX라고 해서 읽기와 쓰기라는 포트가 당연 아누이노 보드와 연결이 되어야 합니다.

일단 이론적인 것에 대해서 설명에 들어가야 겠습니다. 일단 PC와 아두이노 보드와 통신을 하는 방식에는 가장 많이 쓰이는 것이 시리얼 통신입니다. 이런 통신에는 USB 케이블을 통해서 통신을 하며, 이외에 아두이노 우노(Uno)보드를 보면 0번에 RX, 1번에 TX라는 표식이 찍혀 있습니다. 이전에 언급이 되었는 232나 485통신을 할 수 있습니다.

아두이노 블루투스 스마트 폰 - adu-ino beullutuseu seumateu pon

그리고 여기서 중요한 것인데, 아두이노 우노 보드의 경우에는 통신을 할수 있는 내장 모듈이 한개밖에 없어서 PC와의 통신과 블루투스연결을 동시에 할 수는 없다고 합니다. 이런 한계점을 극복하기 위해서는 하는 수 없이 좀 더 높은 버젼의 아두이노 보드를 사용해야 합니다.

그리고 이제는 아두이노 보드, 브래드 보드, 그리고 블루투스 모듈과 실제로 연결을 한 모습입니다. 이렇게 연결을 할 때도 한가지 주의해야 하는 사항이 아래와 같이 있습니다.

먼저 블루투스 모듈의 RX는 아두이노 보드에서 TX로 설정된 핀에 연결되어야 하며, 블루투스 모듈에서 TX로 설정된 핀은 아두이노 보드에 있는 RX로 설정된 핀에 연결이 되어야 합니다. 이를 잘 지켜서 연결하면 일단 하드웨어 적으로는 연결이 완료되었다고 볼 수 있습니다.

일단 소프트웨어 적으로 연결하기 위한 준비를 해야 하는데, 여기서 위에 올라온 코드를 보시면 #include<SoftwareSerial.h>이라는 것이 있는데, 아두이노 IDE를 설치한 폴더안을 보면 이렇게 SoftwareSerial이라는 것이 있다고 합니다. 한마디로 거기 있는 함수를 사용하기 위해서 클래스를 상속한다고 해야 할까요? C#이나 유니티를 배우면서 본 클래스의 상속이라는 것이 여기서 나왔다는 생각이 듭니다.

그리고 SoftwareSerial 이라는 명령어는 객체를 만드는 명령어로 그냥은 사용할 수 없고 SoftwareSerial.h라는 헤더파일을 통해서 가지고 와서 사용할 수 있는 명령어입니다. 그래서 객체를 만드는 것입니다.

그럼 BTSerial은 무엇이냐 하면, 이건 어떤 이름을 짓던 상관없습니다. 하지만 다음과 같은 형식을 지켜야만 합니다.

SoftwareSerial 임의의이름(RX가 될 핀의 번호, TX가 될 핀의 번호)

여기서 핀의 번호라는 것은 바로 아두이노 보드의 핀의 번호라고 보시면 됩니다. 아무튼 간에 이렇게 해서, 소프트웨어상에 준비는 되었습니다.

그리고 시리얼 모니터를 아두이노 보드 스케치 툴에서 열여서 이제 블루투스 모듈과 아누이도 우노 보드간에 연결을 시도 합니다.

먼저 AT라는 명령어를 쳤습니다. 여기서 OK라고 떠야 하는데 무언가 안 나오는 것을 볼 수 있었습니다.

알고보니 휴먼에러라고 오타가 하나 있었습니다. 그래서 이 오류를 수정하고 나서, 다시 시도를 합니다.

이제서야 제대로 OK라고 AT명령어를 치자 나오는 것을 볼 수 있습니다.

그리고 이제는 블루투스 모듈에 이름을 정해줄 시간입니다. 스페이스 바 없이 AT+NAME이름 이라고 입력을 하도록 합니다. 여기서 C7:67이라는 것은 블루투스 모둘의 Mac주소라고 바꿀 수 없는 하드웨어 자체의 주소가 있는데, 그 주소의 마지막 4자리를 입력한 것입니다.

실제로 제대로 입력하면 위와 같이 OKsetname이라는 말이 나오는 것을 볼 수 있습니다.

이제 비밀번호를 바꿀 차례인데, 이런 실수를 했습니다.

AT+PIN비밀번호 라고 입력을 하면 블루투스로 접속을 할 때 입력해야 하는 비밀번호를 여기서 입력할 수 있게 됩니다.

성공하면 OKsetPIN이라는 것이 뜨는 것을 볼 수 있습니다.

그리고 통신 속도를 설정해야 하는데, 실수로 결과만 찍혔습니다. 일단 명령어는 AT+BAUD번호 입니다. 여기서 번호에 따른 통신 속도는 다음과 같습니다.

1-1200, 2-2400, 3-4800, 4-9600, 5-19200, 6-38400, 7-57600, 8-115200 (bps) 라고 합니다.

이제 블루투스로 제대로 연결하기 위해서 BT chat이라고 해서, 블루투스로 스마트폰끼리 연결해서 채팅을 하는 앱을 스마트폰에 다운로드 받도록 합니다.

아까 위에서 설정한 블루투스의 이름과 비밀번호를 입력해서 스마트폰과 아두이노 보드를 블루투스로 연결할 준비를 하러 갑니다.

일단 스마트폰의 설정창에서 제대로 연결이 되는 것을 확인할 수 있었습니다.

다음에는 BT chat이라는 앱을 스마트폰-안드로이드 계열 폰에서 실행 시켜서, 방금 연결한 블루투스 모듈을 선택 하도록 합니다.

이제서야 제대로 연결된 것을 볼 수 있습니다.

실제로 제대로 연결이 되면, 위 사진과 같이 블루투스 모듈에 자체에 있는 LED가 점멸하다가 그대로 굳어지는 것을 볼 수 있습니다. 이걸로 BT chat으로 스마트폰과 아두이노 보드를 블루투스로 통신 자체는 제대로 연결된 것을 볼 수 있습니다. 그리고 여기서 더 포스팅을 해야 하지만, 내용이 너무 많아서 하는 수 없이 여기서 끊어야 겠습니다. 다음 포스팅에서 나머지 내용을 올리도록 하겠습니다.