개발 - 아두이노

아두이노 HC-05 블루투스 마스터모드 설정 (1)

개미v 2022. 8. 20. 15:43

아두이노에서 HC-05 블루투스 마스터 설정하는 방법입니다.

HC-05 구입

똑같은 이름의 HC-05 모듈인데 판매자마다 차이가 있으니 주의해서 구입을 해야 합니다.

판매글 보면 마스터 모드가 되는지 기재가 되어 있지 않았습니다.

저는 첫번째 모듈 구입 후 안되서 두번째 모듈을 재구입 했습니다.

왼쪽 모듈은 AT모드에서 마스터 설정이 안되고, 오른쪽 모듈은 마스터 설정이 가능합니다.

그리고 소스에서도 차이가 있었습니다.

왼쪽 HC-05 모듈 소스

AT모드 사용시 소스 차이 입니다.

- ENpin 설정 안해도 됨

- 시리얼 보드레이트 38400으로 해야 함

#include <SoftwareSerial.h>

// RX, TX
// 아두이노 꼽을 땐 거꾸로 RX=3, TX=2 
SoftwareSerial BTSerial(2,3);

//int ENpin = 8;

void setup() {
  //pinMode(ENpin, OUTPUT);
  //digitalWrite(ENpin, HIGH);

  // PC → 시리얼 통신
  //Serial.begin(9600);
  Serial.begin(38400);
  
  // 아두이노보드 → 블루투스 통신
  BTSerial.begin(38400);
  
  Serial.println("ATcommand :");
}

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

 

오른쪽 HC-05 모듈 소스

AT모드 사용시 소스 차이 입니다.

- ENpin 설정 해야함

#include <SoftwareSerial.h>

// RX, TX
// 아두이노 꼽을 땐 거꾸로 RX=3, TX=2 
SoftwareSerial BTSerial(2,3);
int ENpin = 8;

void setup() {
  pinMode(ENpin, OUTPUT);
  digitalWrite(ENpin, HIGH);

  // PC → 시리얼 통신
  Serial.begin(9600);
  
  // 아두이노보드 → 블루투스 통신
  BTSerial.begin(38400);
  
  Serial.println("ATcommand :");
}

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

 

아두이노 연결도

EN : 8번핀

VCC : 5V

GND : GND

TXD : 2번핀

RXD : 3번핀

AT 명령어

AT+ROLE? : 마스터, 슬레이브 확인

AT+ROLE=1 : 마스터 설정

AT+ROLE? : 마스터, 슬레이브 확인

 

 

하지만 오른쪽(마스터모드 ○) 모듈도 안됨

AT+INIT

AT+INQ

명령어가 되지 않고 ERROR:[0] 를 내뱉습니다.

다른 명령어들은 되는데 이것만 안됩니다.

제가 몰라서 못하는것인지, 제조사에서 원가절감 한다고 구현도 안하고 되는것처럼 속이며 팔아먹고 있는지 모르겠습니다.

더 중요한것은 스펙 문서를 제공하지 않아서 뭐가 잘못되었는지 파악도 안됩니다.

HM-10 블루투스 모듈로 변경

결국에는 HM-10 모듈으로 해보기로 하고 재구입 했습니다.

HC-05가 블루투스 2.0 버전인데, HM-10은 블루투스 4.0 버전이라는 차이가 있습니다.

택배비만 계속 나오네요.