코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
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 |
부품명 | 오렌지보드 | 블루투스 모듈 | 브레드 보드 | 점퍼 케이블 |
부품 사진 |
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모드 진입이 끝이 아니라 사실상 진입 후에 어떤 명령어를 써야하는지가 더 중요합니다.
하지만 명령어가 한두개가 아니기 때문에 링크를 통해 참고자료를 확인하시는 편이 빠릅니다.
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!