본문 바로가기
만들기/아두이노

아두이노 무선데이터통신 HC-05 블루투스 연결하기 (2)

by 훨훨날아 2022. 4. 14.

블루투스 모듈을 사용하기 위해 아두이노에서 데이터를 송수신 할 수 있도록 프로그래밍을 해줘야한다.

소프트웨어

아두이노 핀을 보면 RX,TX로 고정된 핀이 있지만 소프트웨어적으로 핀을 지정하여 RX, TX로 사용할 수 있다. SoftwareSerial 함수를 이용하여 아두이노의 디지털핀을 RX와 TX로 사용할 수 있다.

#include <SoftwareSerial.h>
SoftwareSerial BTSerial(9, 8); //9번을 RX로 8번을 TX로 지정한다. BTSerial이라는 이름으로 블루투스 모듈을 사용한다.

void setup() {
    Serial.begin(38400); // 시리얼통신
    BTSerial.begin(38400); // HC05의 AT mode 와 데이터송수신에 사용
}


void loop() {
    if (BTSerial.available())           // 1. HC05모듈에서 입력되는 신호가 있으면
        Serial.write(BTSerial.read());  //    블루투스 신호를 읽고 시리얼통신으로 전달(출력) 
    if (Serial.available())             // 2. 시리얼통신입력이 있으면
        BTSerial.write(Serial.read());  //    시리얼통신으로 읽고 블루투스로 전달(송신)
}
// 아두이노와 블루투스 송수신이 계속해서 이루어진다.

 

블루투스와 아두이노를 연결한 뒤 블루투스의 초기값을 설정하기 위해 AT mode로 들어가야한다. AT mode를 들어가기 위해서는 블루투스와 통신값이 38400으로 코딩된 상태에서 블루투스 모듈에서 보이는 버튼을 누르면서 아두이노 전원을 연결해주면 블루투스 모듈의 LED가 천천히 반짝이는 것을 확인할 수 있다. ( LED가 빠르게 반짝이면 페어링모드, 천천히 반짝이면 AT mode, 빠르게 반짝이다 꺼지면 연결된 상태)

 

AT mode 설정해서 두개의 블루투스 모듈 연결하기

두개의 블루투스를 연결하기위해서는 마스터와 슬레이브 설정을 해줘야한다. 마스터에서는 신호를 내리거나 받을 수 있고 슬레이브에선 신호를 받을 수만 있다. 아두이노가 컴퓨터와 연결된 상태에서 시리얼모니터로 들어간다.

1. 시리얼모니터에 AT를 입력 후 OK를 받아 블루투스가 AT모드인지 확인한다.

1-1 발생했던 오류들
( 안된다면 블루투스의 baudrate가 38400인지 확인한다, 시리얼모니터 우측하단 설정을 both LN&CR (시리얼값입력뒤 새줄, 처음으로) 과 설정된 시리얼통신의 baudrate로 맞춰준다)
( 아두이노 메가의 경우 안되는 경우가 있다 )
( 블루투스 마다 AT mode에서 사용하는 명령어가 다를 수도 있다. 잘못된 명령어를 입력하면 error[0]이 나온다. 각 모듈의 데이터시트확인 해서 명령어와 오류값을 볼 수 있다 )
( 왠지 모르겠지만 어제되던 아두이노에서 AT 명령어가 작동하지 않고 새로운 아두이노를 사용하면 AT가 들어가진다.)

 

2. AT+ROLE? 을 입력하여 현재 블루투스 모듈의 상태를 확인한다 0은 슬레이브모드 1은 마스터모드 이다

3. AT+ADDR? 을 입력하여 현재 블루투스의 MAC 주소(Media Access Control Address, 네트워크에 사용되는 모든 기긱의 고유번호)를 볼 수 있다.  예) 0021:09:002B02
슬레이브로 사용할 블루투스 모듈의 MAC주소를 복사해 놓는다.

 

4. 이제 다른 블루투스 모듈을 연결해서 마스터로 만들어줘야한다. 슬레이브로 만든 블루투스를 제거 후 새로운 블루투스 모듈을 연결한 뒤 AT 모드로 들어간다.

5. 시리얼모니터에서 AT+ROLE? 을 확인 후 0 (슬레이브 모드이면) AT+ROLE=1 을 입력하여 마스터로 설정해준다.

 

6. AT+CMODE? 을 입력하여 마스터 블루투스 모듈의 연결방법을 확인한다. 0인경우 마스터 모듈에 하나의 블루투스 모듈에만 연결이 가능하고 1인경우 마스터 하나와 여러개의 슬레이브 블루투스 모듈이 연결될 수 있다.

7. 슬레이브 블루투스 모듈과 연결하기 위해 AT+BIND=주소 를 입력해준다. 이때 주소는 콜론대신 쉼표로 넣어준다. ( 0021:09:002B02 -> 0021,09,002B02 ) 그다음 AT+BIND?를 입력하여 주소가 잘 입력됐는지 확인한다. 

8. 이제 두 모듈을 각각의 아두이노에 연결해주면 처음 전원을 연결했을 때 빠르게 반짝이다가 페어링 되는 것을 확인할 수 있다.

 

 

아두이노 블루투스로 통신하기

두개의 블루투스 모듈을 두개의 아두이노에 연결한 뒤 두개의 다른 컴퓨터에 연결한다.( 하나의 컴퓨터에서 두개의 아두이노 시리얼 모니터가 켜지지 않기 때문(켤수있나?)) ( 만약, 두대의 컴퓨터가 없다면 슬레이브에 LED를 연결해서 마스터에서 신호를 보낼때 LED가 들어오도록 만들어 볼 수도 있다. ) 

 

마스터에서 시리얼모니터에 글자를 입력하면 슬리에브에 연결된 시리얼모니터에서 데이터를 받는것을 확인할 수 있다.

 

참고

 

https://www.youtube.com/watch?v=BXXAcFOTnBo 

 

https://kwonkyo.tistory.com/355

 

아두이노 + 블루투스 모듈 (HC05, HC06) 기본 사용법

2020-11-17 update log: 결선도 오류 수정 블루투스모듈 HC05를 아두이노에서 사용하는 방법입니다. 준비물 아두이노 우노 블루투스 모듈 HC-05(ZG-B23090W) 점프케이블 저항 1kΩ, 2kΩ HC-05 아두이노 실습용

kwonkyo.tistory.com

 

아두이노 메가에서 블루투스 모듈 사용하기

http://www.martyncurrey.com/using-an-arduino-mega-with-a-hc-05-zs-040-at-mode/

반응형