이번에는 아두이노끼리 블루투스 통신 하는 방법에 대해 알아보겠습니다.

블루투스 통신을 위해 다음 모듈이 필요합니다.

HC06 모듈입니다.


제원은 다음과 같습니다.

○ 범위 : ~10M 

○ 동작 전원 : 3.6 ~ 6V

○ 사용 전력 : ~30mA

○ 크기 : 36 x 15 mm

○ 기본 통신 속도(Baud rate) : 9600

○ 초기 페어링 비밀번호 : 1234


핀은 다음과 같이 배치합니다.

● VCC : 5V (전원)

● GND : GND (그라운드)

● RX : Digital 2 pin (데이터 수신)

● TX : Digital 3 pin (데이터 송신)


아두이노 스케치에서 시리얼 모니터를 열어서 다음과 같이 명령어를 입력합니다.

☆ AT : 블루투스 통신이 유효한지 확인합니다. (성공시 OK출력)

☆ AT+VERSION : 블루투스 모듈의 버전을 확인합니다.

☆ AT+ROLE=M : 통신 모드를 Master로 변경합니다.

☆ AT+ROLE=S : 통신 모드를 Slave로 변경합니다

☆ AT+BAUD4 : 기본 Baud rate를 변경합니다. (1~8까지)

    1 : 1200 / 2 : 2400 / 3 : 4800 / 4 : 9600 / 5 : 19200 / 6 : 38400 / 7 : 57600 / 8 : 115200

☆ AT+NAMEdevicename : 블루투스 명칭을 변경합니다. (성공시 OKname 출력)

☆ AT+PIN**** : Pin Code(비밀번호)를 변경합니다.(성공시 Oksetpin 출력)

☆ AT+INQ : 주변 블루투스 모듈을 검색합니다.

☆ AT+CLRBAND : 블루투스 연결을 해제합니다.


* 자세한건 여기를 확인하세요.


위 설정을 모두 끝냈다면 다음 코드를 작성합니다.

1. 컴퓨터가 2대 이상 있는 경우 - 각각의 컴퓨터에 아두이노를 연결하고 다음과 같이 작성합니다.

* 스케치 - 라이브러리 포함하기 - SoftwareSerial 을 선택합니다.

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); //블루투스의 Tx, Rx핀을 2번 3번핀으로 설정


void setup() {

  // Baud rate 9600으로 설정

  Serial.begin(9600);

  mySerial.begin(9600);

}


void loop() {

  if (mySerial.available()) { //블루투스에서 넘어온 데이터가 있다면

    Serial.write(mySerial.read()); //시리얼모니터에 데이터를 출력

  }

  if (Serial.available()) {    //시리얼모니터에 입력된 데이터가 있다면

    mySerial.write(Serial.read());  //블루투스를 통해 입력된 데이터 전달

  }

}


2. 컴퓨터가 1대 있는 경우 - Master 및 Slave 모듈을 번갈아가며 작성합니다.

· Master 코드

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); //블루투스의 Tx, Rx핀을 2번 3번핀으로 설정


void setup() {

  Serial.begin(9600);

  mySerial.begin(9600); // baud rate 9600으로 설정

}


void loop() { 

  if (mySerial.available()) { // 넘어온 데이터가 존재하면

    Serial.write(mySerial.read()); // 시리얼에 출력

  }

}


· Slave 코드

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); //블루투스의 Tx, Rx핀을 2번 3번핀으로 설정

int a= 0;


void setup() {

  Serial.begin(9600);

  mySerial.begin(9600); // baud rate 9600으로 설정

}


void loop() {

  mySerial.println(a); // 블루투스 시리얼에 입력

  a++;

  delay(500);


2.의 실행 화면입니다.





정보가 유익하셨다면 아래 공감버튼 눌러주시면 감사하겠습니다.

질문사항은 댓글로 달아주시면 성의껏 답변해드리겠습니다.



to Top