아두이노:블루투스(외장모듈)
둘러보기로 이동
검색으로 이동
아두이노 관련 정보를 모으기 위한 틀. 틀:아두이노
- 아두이노:개요
- 아두이노:하드웨어
- 아두이노:코드
- 아두이노:핀 사용
- 아두이노:시리얼 통신
- 아두이노:편의함수
- 센서 사용
- 아두이노:LCD 사용
- 아두이노:스위치 사용
- 아두이노:릴레이
- 통신 관련, 정보 교환
- 아두이노:해결되지 않은 다양한 의문들
- 수업용 간단 실습
- 아두이노 모터 출력
- 미완문서
- 분류:아두이노 프로젝트
개요[편집 | 원본 편집]
아두이노에서 블루투스 통신을 구현하기 위한 가장 쉬운 방법은 외장 블루투스 모듈(HC-06, HC-05 등)을 사용하는 것이다. 이 방식은 무선 시리얼 통신(UART)을 그대로 무선화한 개념.
할 수 있는 것[편집 | 원본 편집]
- 코드 업로드는 안되고, 시리얼 통신 정도 가능.
- 이로부터 RC카, 컨트롤러 등으로 사용한다.
특징[편집 | 원본 편집]
- 아두이노 코드도 `Serial.read()`, `Serial.write()` 방식 그대로 사용.
- BLE 기반 보드보다 학습 난이도가 낮다.
사용 모듈[편집 | 원본 편집]
| 모듈명 | 종류 | 특징 | 비고 | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| HC-06 | Bluetooth Classic (Slave Only) | 가장 기본적인 외장 BT 모듈, 스마트폰에서 쉽게 페어링 가능 | 연결법
| |||||||||||||||
| HC-05 | Bluetooth Classic (Master/Slave) | AT 명령으로 Master 모드 변경 가능, 기능 확장형 |
UNO의 5V 신호를 바로 HC-06 RX에 넣지 말 것 (손상 가능).(5V 바로 넣을 수 있게 조정된 모듈도 따로 팔긴 함;)
※ UNO의 TX(5V) → HC-06 RX(3.3V) 구간은 2개 저항(1kΩ + 2kΩ)을 이용해 3.3V로 분배하는 것이 안전하다.
SoftwareSerial 예시 코드[편집 | 원본 편집]
다음 예시는 스마트폰 앱과 시리얼 문자열을 주고받는 기본 구조이다.
기본적으로 블루투스용 시리얼과 일반 유선 시리얼은 다르게 구성된다.
- 일반 시리얼에 입력한 것은 블루투스 시리얼에 나타나 휴대폰에 작성되고,
- 휴대폰에서 작성한 것은 일반 시리얼에 나타난다.
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX, TX
String buffer = "";
unsigned long lastReadTime = 0;
const unsigned long timeout = 50; // 50ms 동안 새 데이터 없으면 한 묶음 처리
void setup() {
Serial.begin(9600);
BTSerial.begin(9600);
Serial.println("Bluetooth Ready");
}
void loop() {
// 블루투스 데이터 읽기
while (BTSerial.available()) {
char c = BTSerial.read();
buffer += c;
lastReadTime = millis();
}
// 타임아웃 기반으로 한 덩어리 처리(이게 없으면 한 문자당 한 줄을 차지해버림;;)
if (buffer.length() > 0 && millis() - lastReadTime > timeout) {
Serial.print("from BT: ");
Serial.println(buffer);
buffer = "";
}
// 아두이노 → 스마트폰 데이터 전송
while (Serial.available()) {
char c = Serial.read();
BTSerial.print(c);
}
}
유의[편집 | 원본 편집]
- SoftwareSerial은 고속 전송에 약하므로 9600bps 권장.
스마트폰 연결 방법[편집 | 원본 편집]
- 휴대폰 블루투스 설정에서 HC-06 등을 검색.
- 기본 비밀번호는 `1234` 또는 `0000`. (페어링이 되진 않는다. 이후 어플에서 진행.)
- 시리얼 통신 앱(예: Bluetooth Terminal, Serial Bluetooth 등)을 실행한다.
- 페어링된 장치를 선택하여 연결한다.
- 텍스트를 보내거나 아두이노 메시지를 확인한다.
AT 명령어 설정[편집 | 원본 편집]
모듈 설정 변경(이름, 속도 등)은 AT 명령으로 가능하다.
| 명령 입력 | 기능 |
|---|---|
| AT | 응답 확인(OK) |
| AT+NAME=MyBT | 블루투스 이름 변경 |
| AT+BAUD4 | 보드레이트 9600으로 변경 |
| AT+PIN1234 | 비밀번호 변경 |
※ HC-06은 페어링 상태에서는 AT 명령이 동작하지 않는다.
전원만 연결하고 통신 미연결 상태에서 AT 모드로 접근해야 한다.