블루투스 HC-06 슬레이브 모듈 아두이노 소스 + 안드로이드 앱 소스
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
아래 순서로 연결이 되는지 테스트하세요.
- 먼저 아두이노를 켜서 HC-06 슬레이브 모듈이 페어링 대기상태에 들어가도록 합니다. (LED 깜빡깜빡)
- 위 GitHub 에서 받은 소스를 빌드하거나 아래 링크에서 APK 파일을 받아서 폰에 설치합니다.
- 폰의 설정 > 블루투스 에서 off 상태이면 BT on 으로 바꿉니다.
- BluetoothChat 앱을 실행 – 메뉴키 – Connect a device 선택
- Device List 에 HC-06 슬레이브 모듈이 보이는지 확인. 안보이면 Scan 버튼을 눌러서 찾아보고 그래도 안되면 1부터 다시합니다.
- HC-06 모듈이 보이면 선택 – 연결이 정상적으로 완료되면 챗팅 가능
- 폰으로 글 적으면 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
참고자료:
- 아두이노 – 안드로이드 블루투스 채팅 (Bluetooth 2.x)
- 아두이노 – 안드로이드 블루투스 채팅 기능개선 버전 (Bluetooth 2.x)
- BLE(Bluetooth Low Energy) 이해하기 (Bluetooth 4.0)
- 아두이노 – 안드로이드 BLE 채팅