본문 바로가기

Arduino/[2] Arduino Module

[Arduino Module] #7. 블루투스

728x90
반응형

블루트스 통신하기

아두이노 블루투스 시리얼 통신 기본 코드

#include <SoftwareSerial.h>
SoftwareSerial btSerial = SoftwareSerial(2,3);

void setup(){
  Serial.begin(9600);
  btSerial.begin(9600);
}

void loop(){
    if(Serial.available()) btSerial.write(Serial.read());
    if(btSerial.available()) Serial.write(btSerial.read());
}

[회로도]

블루투스 모듈 초기설정하기

블루투스 모듈 HC-06의 LED가 점멸 상태이면 블루투스 접속이 되지 않은 상태이고, LED가 계속 켜있다면 블루투스가 연결된 상태이다.

블루투스의 모듈을 초기 설정을 하기 위해서는 먼저 아두이노 IDE를 실행하고 cmd(ctrl) + shift + m 을 눌러 시리얼 모니터를 킨다.

 

위의 아두이노 기본 코드를 업로드 및 회로를 제작하고 진행한다. 이때 시리얼 모니터의 하단에 새 줄line ending 없음으로 변경한다.

 

1. 블루트스의 응답확인하기

아두이너 IDE에 시리얼 모니터에 AT를 전송한다.

OK 가 뜨면 아두이노 블루투스 모듈이 통신 가능 상태이다. (정상 작동)

2. 아두이노 블루투스 모듈 이름 변경하기

AT+NAMESOMETHING 명령어로 블루투스 모듈의 이름을 변경할 수 있다. 이때 변경할 이름은 SOMETHING에 영어로 된 이름은 모두 가능하다. 이때 변경된 아두이노 블루투스 모듈의 이름은 해당 모듈에 접근할 때 이름으로 사용된다.

(핸드폰에서 블루투스 통신을 할 때 연결할 디바이스의 이름으로 사용된다.)

 

일반적으로 사용되는 불루투스 기기들과는 다르게 한글이나 특수 문자, 띄어쓰기가능하지 않으므로 주의한다.

3. 아두이노 블루투스 모듈 버전 확인하기

AT+VERSION 명령어로 연결한 아두이노 블루투스 모듈의 버전을 확인할 수 있다.

버전의 정보는 시리얼 모니터로 출력된다.

아두이노 블루투스 모듈의 버전

4. 아두이노 블루투스 모듈 비밀번호 설정하기

아두이노의 기본 비밀번호는 1234 혹은 0000이다. 이때 이 아두이노의 비밀번호를 변경할 수 있다.

(하지만 가급적 기본 비밀번호를 사용하는 것을 추천하는 바이다.)

 

AT+PINNUMBER 명령어로 아두이노 연결 시 사용할 비밀번호를 설정한다. 이때 NUMBER은 설정할 비밀번호이다. 비밀번호를 변경하면 블루투스 통신 모듈 연결 시에 바뀐 비밀번호로 입력해야한다.

 

5. 아두이도 블루투스 모듈의 통신 속도 변경하기

 

아두이도 블루투스 모듈의 초기 기본 통신속도는 9600이다. 하지만 이 통신속도도 명령어를 통해 변경할 수 있다.

 

AT+BAUDSPEED 명령어를 이용하여 아두이도 블루투스 모듈의 통신 속도를 변경할 수 있다.

SPEED는 지정할 통신 속도로 다음과 같은 표의 값을 따른다. 정상적으로 반영되었을 시 OK 응답이 온다.

SPEED 통신 속도
1 1200
2 2400
3 4800
4 9600
5 19200
6 38400
7 57600
8 115200

[코드 설명]

#include <SoftwareSerial.h>
SoftwareSerial btSerial = SoftwareSerial(9,10);
  • 블루투스 통신을 위한 라이브러리인 SoftwareSerial를 추가한다.
  • btSerial이라는 객체에 아두이노 9,10 번 핀에 연결된 블루투스 모듈의 시리얼을 할당한다.
void setup(){
  Serial.begin(9600);
  btSerial.begin(9600);
}
  • 시리얼 모니터의 통신 속도를 9600으로 설정한다.
  • 블루투스 모듈의 시리얼 통신 속도를 9600으로 설정한다. (기본값)
void loop(){
    if(Serial.available()) btSerial.write(Serial.read());
    if(btSerial.available()) Serial.write(btSerial.read());
}
  • 만약 시리얼 모니터로 받은 데이터가 있으면 블루투스 통신으로 시리얼 모니터로 읽은 값을 출력한다.
  • 만약  블루투스 통신으로 받은 데이터가 있으면 시리얼 모니터로 블루투스 통신으로 읽은 값을 출력한다.

 

 

728x90
반응형
댓글