Arduino Uno Bluetooth HC-06 ModuleArduino Uno Bluetooth HC-06 Module

HC-06 사양, 주요 기능, AT 커맨드 사용

이번 포스트에서는 아두이노에서 많이 사용되는

블루투스 모듈인 HC-06의 기본적인 사양과 주요 기능을 알아보고 AT-Command 사용하는 방법

에 대해 소개합니다.

HC-06 Module

[각주:1]HC-06는 무선으로 시리얼 통신을 동작하게 해주는 블루투스 모듈입니다. HC-06 모듈은 아래 그림과 같이 사각형, 원형 등 다양한 종류가 있습니다. 아래의 그림에서 노란색을 표시한 초록색 보드가 HC-06이고, 여러 제조사에서 HC-06 보드와 6Pin, 4Pin 등으로 인터페이스 회로를 구성 후 HC-06 Module을 만들고 판매를 합니다.

여러가지 HC-06 모듈여러가지 HC-06 모듈

주요 사양

  • 동작전압 : 3.6~6V
  • 소모전류 : 40mA
  • 통신방식 : Serial (UART)
  • 제어방식 : AT-Command
  • 블루투스 사양 : Bluetooth V2.0 Protocol Standard
  • 파워 레벨 : Class2(+6dBm) - 통신 거리 10m
  • RF 대역 : 2.4GHz ~ 2.48GHz, ISM Band
  • 수신감도 : -80dBm

핀 아웃

HC-06은 보통 아래의 6Pin 또는 4Pin으로 구성되어 있습니다. 일반적인 경우 VCC, GND, TXD, RXD의 4핀만 사용합니다.

  • KEY(or EN) : HC-06 모드 선택핀
    • High : AT Command mode
    • LOW or NC : Normal mode
  • RXD : 3.3V 레벨 시리얼 수신 (Default 9600bps)
  • TXD : 3.3V 레벨 시리얼 송신 (Default 9600bps)
  • GND : 그라운드 연결
  • VCC : +3.3 ~ 6V 전원 연결
  • Status : 보드 상태 출력핀으로, 보통 상태 LED와 연결되어 있음


블루투스 통신 모드 : Master, Slave

블루투스 통신에는 Master, Slave 모델을 사용합니다. 스마트폰에서 블루투스 이어폰을 연결하고 제어하는 경우 스마트폰을 Master, 블루투스 이어폰을 Slave 상태입니다. Master 장치는 7개의 Slave 블루투스 장치를 연결하여 통신 할 수 있지만, HC-06은 1:1 통신만 지원합니다. 

블루투스 Master Slave Mode블루투스 Master Slave Mode


SSP 프로파일

HC-06은 SPP 프로파일을 지원합니다. SPP(Serial Port Profile)은 블루투스 프로파일 중 하나로 블루투스 모듈에 연결된 장치 간 가상 시리얼 포트를 생성하여 무선으로 시리얼 통신을 할 수 있게 합니다. 즉, 두 개의 HC-06 모듈에 각각 아두이노 보드를 연결하는 경우, HC-06 모듈간 통신은 블루투스 통신으로 데이터를 주고받지만, 아두이노 보드끼리는 시리얼 통신을 하는 것처럼 사용 할 수 있습니다.

HC-06 사용 예시1HC-06 사용 예시1

마찬가지로, 아래 그림과 같이 아두이노 보드와 HC-06을 연결하고 스마트폰(Master)에서 HC-06(Slave)으로 연결하는 경우, 아두이노 보드와 스마트폰이 블루투스로 연결되어 있지만, 사용자 입장에서는 아두이노 보드와 스마트폰이 시리얼 통신을 하는 것처럼 느껴지도록 사용 할 수 있습니다. 

HC-06 사용 예시2HC-06 사용 예시2

📌 블루투스 프로파일(Profile)

블루투스는 여러 장비에 사용되는 통신 규격으로, 장치의 종류마다 별도의 프로토콜이 존재합니다. 예를 들어 전화, 무선 오디오 입출력, 키보드 마우스 등과 같이 용도가 다른 장비는 각 용도에 적절한 통신으로 규정되어 있습니다. 이런 프로토콜의 규칙들을 프로파일이라고 부릅니다. SPP 프로파일이란 장치 간 시리얼 통신을 하게 해주는 통신 규정을 말합니다.


AT-Command

블루투스 장치명, 동작 모드, 블루투스 모듈의 시리얼 통신 속도 및 기타 설정 등 HC-06의 다양한 설정은 시리얼 통신으로 설정 할 수 있습니다. 아래는 HC-06 LinvorV1.8 기준 지원되는 AT 명령어 리스트입니다. LinverV1.8은 HC-06의 펌웨어 버전입니다. AT+Version 명령으로 보유한 HC-06 모듈의 Version을 확인 가능합니다.

HC-06 AT Command ListsHC-06 AT Command Lists

HC-06 에 대한 신뢰성이 높은 자료를 찾을 수가 없어, 제가 사용해보고 정리한 내용입니다. 추가적인 명령이 더 있을 수 있습니다. 


AT 명령어 주고 받기

Arduino Uno 보드와 HC-06 Module을 연결하여 AT Command로 HC-06를 설정하는 방법을 소개합니다.

회로 구성

아래와 같이 Arduino Uno 와 HC-06 Module을 연결하여 AT Command 설정 및 테스트를 진행 할 수 있습니다. 아래와 같이 연결하면 PC에서 시리얼 터미널 프로그램을 사용하여 HC-06에 AT Command로 환경 설정을 진행 할 수 있습니다. Arduino Uno 와 PC는 기본 Serial 통신을 사용합니다. Arduino Uno 보드는 시리얼 통신이 1 포트만 지원되기 때문에, Arduino Uno 와 HC-06은 SoftwareSerial 라이브러리를 사용하여 통신합니다. 

코드

아두이노 보드는 PC로부터 수신된 시리얼 데이터를 HC-06에 전달하고, HC-06으로부터 수신된 시리얼 데이터를 PC 시리얼 포트로 전달합니다. SoftwareSerial 라이브러리 사용법에 대해 궁금하신 분은 하단의 관련 포스트를 참고해주세요.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <SoftwareSerial.h>
 
#define HC06RX A0 //HC-06의 TX Pin - Arduino Uno의 RX
#define HC06TX A1 //HC-06의 RX Pin - Arduino Uno의 TX
SoftwareSerial HC06(HC06RX,HC06TX);
 
void setup(){
    Serial.begin(9600);
    HC06.begin(9600);
}
 
void loop(){
    if(HC06.available()){
        Serial.write(HC06.read());
    }
    if(Serial.available()){
        HC06.write(Serial.read());
    }
}
cs

실행 결과

위 코드를 업로드 후 PC 시리얼 모니터에서 AT AT+VERSION AT+BAUD4 와 같은 AT 커맨드 명령을 보내는 경우 정상적으로 응답이 오는 것을 확인 할 수 있습니다.

HC-06 AT Command 테스트HC-06 AT Command 테스트


마무리

이번 포스트에서는 HC-06 모듈의 기본적인 사양과 주요 기능에 대해 소개하고 AT 명령어를 사용하여 HC-06 모듈을 테스트하는 방법에 대해 소개하였습니다. 이후 포스트는 스마트폰을 사용하여 Arduino Uno와 통신하는 방법에 대해 소개할 예정입니다.

끝까지 읽어 주셔서 감사합니다.^^




  1. HC-06 Datasheet : https://www.olimex.com/Products/Components/RF/BLUETOOTH-SERIAL-HC-06/resources/hc06.pdf [본문으로]
댓글
댓글쓰기 폼