1. HC-06 블루투스 슬레이브 모듈

모 카페에서 공구로 저렴하게 HC-06 모듈을 구해서 테스트 해봤습니다. 연결도 간단하고 사용도 쉽고 무선이라 편리한 점이 많네요. 특히 안드로이드 앱만 좀 다룰 줄 알면 다양한 응용이 가능해서 좋습니다. 테스트하면서 사용한 아두이노 연결법과 코드, 안드로이드 소스코드 공유합니다. 제작하는데 참고하세요.

2. 연결방법

제원은 다음과 같습니다.

– EDR 블루투스 2.0, 2Mbps  3Mbps 변조
– 2.4GHz 안테나 내장

– 외부 8Mbit FLASH
– 3.3V 저전압 동작
– 옵션 PIO 제어
– 표준 HCI 포트 (UART)
– SMD 배치 프로세스로 모듈
– RoHS 규제 절차
– 디지털 2.4GHz 무선 송신

– CSR BC04 블루투스  기술
– 크기 (27mm × 13mm × 2mm)
– 블루투스 클래스 2 전력 레벨
– 보관 온도 : -40 +85작동 온도 : -25으로 75

전 HC-06 슬레이브 모듈이 백보드와 결합된 버전을 구입했습니다. 위 그림처럼 생겼는데 WAKEUP, STATE 핀까지 총 6개의 핀이 있습니다만 동작하는데는 그림처럼 4개 핀만 사용하면 됩니다.

VCC -> 3.3V, GND -> GND 연결하고 TX, RX 핀은 아두이노 D2, D3에 연결 했습니다. (HC-06 모듈은 3.3V, 베이스보드에 납땜된 모듈은 5V를 공급해야 한다고 하네요. 전 그냥 3.3V에 해서 동작 됐습니다.).

블루투스와의 통신을 위해 SoftwareSerial 라이브러리를 사용하는데 라이브러리가 Interrupt pin을 사용하도록 되어있다고 합니다. 인터럽트 핀은 UNO 기준 D2, D3 핀 입니다.

3. 동작방법

모듈이 정확하게 연결이 되었다면 아두이노에 전원을 넣었을 때 HC-06 모듈의 LED가 깜빡거릴 겁니다. 마스터 모듈이나 다른 장치와 연결이 완료되면 LED가 켜진 상태로 유지됩니다.

먼저 아래 스케치를 업로드 합니다. PC에서 Serial 통신으로 아두이노로 메시지를 던지면 아두이노에서 HC-06으로 다시 메시지를 던져줍니다. 다른 장치와 페어링 된 상태라면 그쪽으로 메시지가 전달되겠죠. 반대로 HC-06이 메시지를 받으면 아두이노를 통해 PC로 전달됩니다. 시리얼 모니터에서 수신 메시지 확인할 수 있습니다. 아두이노와 HC-06 간의 통신을 위해 SoftwareSerial 을 사용합니다.

#include <SoftwareSerial.h>

SoftwareSerial BTSerial(2, 3); //Connect HC-06. Use your (TX, RX) settings

void setup()  
{
  Serial.begin(9600);
  Serial.println("Hello!");

  BTSerial.begin(9600);  // set the data rate for the BT port
}

void loop()
{
  // BT –> Data –> Serial
  if (BTSerial.available()) {
    Serial.write(BTSerial.read());
  }
  // Serial –> Data –> BT
  if (Serial.available()) {
    BTSerial.write(Serial.read());
  }
}

HC-06 모델은 초기 BAUD RATE 값이 9600으로 설정되어 있고, Name=linvor, Password=1234 로 되어있습니다. 일단 위 소스를 업로드 하고, 모듈이 깜빡거리는지 Serial Monitor 창에 Hello!! 가 찍히는지 확인합니다. 그리고 Serial Monitor 창에서 아래 명령을 던지면 HC-06 모델의 설정을 바꿀 수 있습니다.

장치명 변경: AT+NAMExxxx (이름을 mybt01 로 바꾼다면 : AT+NAMEmybt01)

페어링 암호 변경 : AT_PINxxxx (비번을 1111 로 바꾼다면 : AT_PIN1111)

통신속도 변경 : AT_BAUDx (1200=1, 2400=2, 4800=3, 9600=4, 19200=5, 38400=6, 57600=7, 115200=8 중 택 1)

만약 정상적으로 값이 변경 되었다면 Serial Monitor 창에 메시지가 뜰겁니다. BAUDRATE를 변경하면 연결을 끊고 Serial Monitor 창 닫고 다시 연결, 실행해 보세요. 여기까지 완료되면 BT 관련한 아두이노 설정은 끝.

4. 코드 (스케치)

GitHub 에 BluetoothChat 프로젝트가 있습니다. 위에서 설정한 아두이노 보드와 안드로이드 앱을 연결해서 서로 메시지를 주고 받을 수 있게 한 프로젝트입니다. 이 프로젝트를 응용해서 새롭게 제작한 BT Chat 안드로이드 앱을 사용하세요.

# 앱 다운로드(Google Play) : https://play.google.com/store/apps/details?id=com.hardcopy.btchat (구글 플레이에서 BT Chat 아두이노 검색 후 설치)

# 앱 소스 다운로드 : https://github.com/godstale/BTChat

아래 순서로 연결이 되는지 테스트하세요.

  1. 먼저 아두이노를 켜서 HC-06 슬레이브 모듈이 페어링 대기상태에 들어가도록 합니다. (LED 깜빡깜빡)
  2. 위 GitHub 에서 받은 소스를 빌드하거나 아래 링크에서 APK 파일을 받아서 폰에 설치합니다.
  3. 폰의 설정 > 블루투스 에서 off 상태이면 BT on 으로 바꿉니다.
  4. BluetoothChat 앱을 실행 – 메뉴키 – Connect a device 선택
  5. Device List 에 HC-06 슬레이브 모듈이 보이는지 확인. 안보이면 Scan 버튼을 눌러서 찾아보고 그래도 안되면 1부터 다시합니다.
  6. HC-06 모듈이 보이면 선택 – 연결이 정상적으로 완료되면 챗팅 가능
  7. 폰으로 글 적으면 PC의 Serial Monitor에서 보이는지 확인합니다. 반대도 확인.

BTChat 안드로이드 관련 파일 다운로드

# 앱 다운로드(Google Play) : https://play.google.com/store/apps/details?id=com.hardcopy.btchat

# 앱 소스 다운로드 : https://github.com/godstale/BTChat

# BT Chat 앱 상세사항 : https://www.hardcopyworld.com/?p=1359

참고자료: