고급 예제

다양한 도구들을 가지고 마음껏 응용해보세요.

블루투스 모듈 ATcommand모드

2016-04-12 13:42:17

개요

 

 

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  
부품명 오렌지보드 블루투스 모듈 브레드 보드 점퍼 케이블
부품 사진

 

 

하드웨어making

 

 

HC-05

 

 

 

 

 

HC-06

 

 

 

ATcommand 진입하기

 

 

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

#include <SoftwareSerial.h>

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

void setup() {
  pinMode(8, OUTPUT);    //HC-05
  digitalWrite(8,HIGH);
  
  Serial.begin(9600);
  BTSerial.begin(38400);
  Serial.println("ATcommand");  //ATcommand Start
}

void loop() {
  if (BTSerial.available())
    Serial.write(BTSerial.read());
  if (Serial.available())
    BTSerial.write(Serial.read());
}

 

 

 

 

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

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

 

HC-05의 경우에는 위 회로도에서 WakeUp이라는 핀이 하나 더 있음에 유의하셔야 합니다.

HC-05와 HC-06의 차이는 핀의 갯수로도 확인할 수 있고(보통 05의 경우에는 6개의 핀이 있고 06의 경우에는 4개의 핀이 있습니다.)

또 HC-05의 경우에는 모듈 내에 스위치가 존재하는 경우도 있습니다.(HC-06은 없음)

 

 

 

 

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

 

 

 

 

아래와 같이 HC-05의 KEY(WakeUp)핀에 HIGH신호를 보내주면 LED가 깜빡이는 속도가 느려졌음을 알 수 있습니다.

led 깜빡이는 속도가 느려졌다면 ATmode에 진입했다는 증거입니다.

(만약에 KEY(WakeUp)핀에 HIGH신호를 줬는데도 LED가 빠르게 깜빡일 경우에는 VCC핀을 뺐다가 다시 연결해보세요.)

 

 

 

 

 

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

HC-05의 경우 기본적으로 UART 통신 속도가 38400에 맞춰져 있기 때문에 SoftwareSerial을 사용할때 38400으로 세팅해 주어야 합니다.

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

 

<코드내에서 SoftwareSerial속도를 38400으로 설정>

 

 

 

<HC-05의 UART속도 확인(38400)>

 

 

 

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

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

 

 

 

 

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

 

<HC-05의 ATcommand 입력. Both NL & CR, Bluetooth 통신속도 - 38400>

 

 

 

 

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

 

 

 

참고 자료

 

 

 

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

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

 

HC-05 AT 명령어 확인하기

HC-06 AT 명령어 확인하기

 

kocoafabeditor

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

블루투스모듈, 아두이노, 오렌지보드

강상호 2016-09-12 14:14:16

잘보았습니다. 감사합니다.

lang 2017-06-08 19:10:12

좋은 정보 감사합니다^^*

애디밍 2017-12-09 01:58:18

hc-05 모듈인데 아무리해도 LED가 빠르게 깜빡이기만 해요ㅠㅠ

김두환 2018-02-21 11:20:13

VCC핀 재입력 후에도 HC-05 AT모드 진입이 안될 경우 아래 방법대로 해 보세요.
저도 안되어 이리 저리 방법 찾다가 알아 내어 공유합니다^^

HC-05 전원차단 -> HC-05에 있는 버튼 누른채로 유지(홀딩) -> HC-05 전원인가 -> 1~2초 후 버튼 땜

유니 2018-09-29 14:35:09

좋은정보네요ㅎㅎ 감사합니다ㅎㅎㅎ

BLUUU 2018-11-03 23:04:54

잘봤습니다^^

송윤석 2019-06-25 16:41:19

hm-10일 경우에는 어떻게 맞춰야 하나요???