아두이노:블루투스(외장모듈)

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동

아두이노 관련 정보를 모으기 위한 틀. 틀:아두이노

  1. 아두이노:개요
  2. 아두이노:하드웨어
    1. 아두이노:우노보드
    2. 아두이노:ESP32
  3. 아두이노:코드
    1. 아두이노:컴퓨터에서 보드로
    2. 아두이노:안드로이드에서 보드로
    3. 아두이노:기초 문법
    4. 아두이노:라이브러리
  4. 아두이노:핀 사용
    1. 아두이노:전원공급
  5. 아두이노:시리얼 통신
    1. 아두이노:엑셀기록
    2. 아두이노:파이썬과 통신
  6. 아두이노:편의함수
  7. 센서 사용
    1. 아두이노:모션센서
    2. 아두이노:온습도센서
    3. 아두이노:조도센서
    4. 아두이노:인체감지센서
    5. 아두이노:pH미터 만들기(Gravity 아날로그 pH센서)
  8. 아두이노:LCD 사용
  9. 아두이노:스위치 사용
  10. 아두이노:릴레이
  11. 통신 관련, 정보 교환
    1. 아두이노:WIFI
    2. 아두이노:블루투스(외장모듈)
    3. 아두이노:IR 송수신
    4. 아두이노:RFID
  12. 아두이노:해결되지 않은 다양한 의문들
  13. 수업용 간단 실습
    1. 아두이노:LED
    2. 아두이노:초음파센서
    3. 아두이노:전압계 만들기
    4. 아두이노:저항계 만들기
  14. 아두이노 모터 출력
    1. 아두이노:서보 모터
    2. 아두이노:DC 모터
    3. 아두이노:BLDC 모터
  15. 미완문서
    1. 아두이노:스테핑 모터
  16. 분류:아두이노 프로젝트

개요[편집 | 원본 편집]

아두이노에서 블루투스 통신을 구현하기 위한 가장 쉬운 방법은 외장 블루투스 모듈(HC-06, HC-05 등)을 사용하는 것이다. 이 방식은 무선 시리얼 통신(UART)을 그대로 무선화한 개념.

할 수 있는 것[편집 | 원본 편집]

  • 코드 업로드는 안되고, 시리얼 통신 정도 가능.
  • 이로부터 RC카, 컨트롤러 등으로 사용한다.

특징[편집 | 원본 편집]

  • 아두이노 코드도 `Serial.read()`, `Serial.write()` 방식 그대로 사용.
  • BLE 기반 보드보다 학습 난이도가 낮다.

사용 모듈[편집 | 원본 편집]

모듈명 종류 특징 비고
HC-06 Bluetooth Classic (Slave Only) 가장 기본적인 외장 BT 모듈, 스마트폰에서 쉽게 페어링 가능 연결법
HC-06 핀 Arduino UNO 핀 설명
VCC 5V 전원 (모듈에 따라 3.3V도 가능)
GND GND 공통 접지
TXD D10 (아날로그 핀) 아두이노가 데이터를 수신하는 입력
RXD D11 (저항분배 필요) 아두이노의 TX → 모듈 RX는 3.3V 권장
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 권장.

스마트폰 연결 방법[편집 | 원본 편집]

  1. 휴대폰 블루투스 설정에서 HC-06 등을 검색.
  2. 기본 비밀번호는 `1234` 또는 `0000`. (페어링이 되진 않는다. 이후 어플에서 진행.)
  3. 시리얼 통신 앱(예: Bluetooth Terminal, Serial Bluetooth 등)을 실행한다.
  4. 페어링된 장치를 선택하여 연결한다.
  5. 텍스트를 보내거나 아두이노 메시지를 확인한다.

AT 명령어 설정[편집 | 원본 편집]

모듈 설정 변경(이름, 속도 등)은 AT 명령으로 가능하다.

명령 입력 기능
AT 응답 확인(OK)
AT+NAME=MyBT 블루투스 이름 변경
AT+BAUD4 보드레이트 9600으로 변경
AT+PIN1234 비밀번호 변경

※ HC-06은 페어링 상태에서는 AT 명령이 동작하지 않는다.

 전원만 연결하고 통신 미연결 상태에서 AT 모드로 접근해야 한다.