Hardware | bluetooth 모듈 HC-06 / HC-05 사용해 보기 - 1

|

1. Bluetooth 통신


룰루~ arduino 로 놀 수 있는 센서나 모듈이 뭐가 있을까~ 하고 AliExpress 를 둘러 보던 중,

HC-05, HC-06, SPP-C 가 bluetooth 연결에 사용할 수 있는 모듈이라는 것을 알았습니다.


아직 쌓여있는 센서가 많지만, 일단 구매해 봅니다.


* SPP-C Bluetooth serial pass-through module wireless serial communication from machine Wireless SPPC Replace HC-05 HC-06

https://www.aliexpress.com/item/32755550889.html




* HC-05 HC 05 hc-06 HC 06 RF Wireless Bluetooth Transceiver Slave Module RS232 / TTL to UART converter and adapter

https://www.aliexpress.com/item/32523867394.html








2. 도착


한 업자에게서 구매 해서 동시에 배달되었습니다.



HC-05 이구요.



HC-06 이구요.



응? HC-05 랑 보드는 같고, 다른점은 오른쪽 밑에 스위치와 pin 갯수가 다른 것 뿐이네요.



뒷면에 세겨진 pin out 배열도 동일합니다.



SPP-C 만 다른 보드를 사용합니다.






3. HC-06


일단 오늘은, Slave 만으로 사용할 수 있는 가장 간단한 HC-06 구동을 시험해 보기로 합니다.

HC-05 는 Master / Slave 양쪽으로 사용할 수 있고, HC-06 은 Slave 만 가능하다 하네요.


보드가 동일한 것을 미리 알았더라면, HC-05 만 두개 살껄 그랬습니다.

SPP-C 는 완전 다른 모양이라 HC-05 / HC-06 을 가지고 놀아 보고 그 다음애 해보려 합니다.


구동 전원 Vcc 는 3.6v~5V 라서 arduino nano 의 3.3v 로는 조금 부족하고 5v 로 확실하게 구동됩니다.


HC-06 의 RXD, TXD 는 3.3v 를 이용한 입출력이므로. level shift 회로가 필요합니다만, 출력 (TXD) 은 그대로 하고,

입력 (RXD) 에 저항을 연결하여 회로를 보호해 줍니다.

사실 그대로 연결해도 됩니다만, 저항을 연결해 주는게 느낌상 좋습니다.


실제로 전용회로를 꾸미게 되면, 입출력 전압을 측정하여 거기에 맞는 저항을 달아 주는 것이 좋겠죠?

사양은 다음과 같습니다.


- Bluetooth protocol: Bluetooth V2.0 protocol standard

- Power Level: Class2(+6dBm)

- Band: 2.40GHz—2.48GHz, ISM Band   

- Receiver sensitivity: -85dBm

- USB protocol: USB v1.1/2.0

- Modulation mode: Gauss frequency Shift Keying

- Safety feature: Authentication and encryption

- Operating voltage range:+3.3V to +6V

- Operating temperature range: -20ºC to +55ºC

- Operating Current: 40mA


* Specification : hc06.pdf





4. pin out


여러 연결 방법이 있을 수 있으나,

우선 가장 간단한 arduino nano 를 통해서 PC 와 통신을 시도해 봅니다.

Pin out 정보 입니다.


 HC-06 | Arduino Nano
-----------------------
  RXD  |      D2
  TXD  |      D3
  GND  |      GND
  VCC  |      3.3V
-----------------------



아두이노에서 받는 3.3v 전원은 조금 약한 감이 있고, 5v 를 받자니 arduino nano 가 버거울 것 같아,

외부 전원을 사용하면 안정적으로 3.3v 인가 가능할 것 같습니다.


실제로 arduino nano 의 3.3v 에 연결하면, 되었다 안되었다 불안한 동작을 보여 줍니다.





5. layout


연결 diagram 입니다.



실제로 아래와 같이 연결했습니다.



삽질한 부분은 arduino nano 와 추가 전원의 ground 는 서로 연결해줘야 하는 것이였습니다.

그렇지 않으면, 정상적으로 통신이 되지 않습니다.

Ground 는 꼭 서로 맟춰 줘야 합니다.





6. sketch


아래는 arduino nano 를 PC 와 연결 할 경우에 사용한 소스 입니다.


#include "SoftwareSerial.h"
 
#define HC06_RXD 2
#define HC06_TXD 3
SoftwareSerial bluetooth(HC06_RXD, HC06_TXD);
 
void setup(){
  Serial.begin(9600);
  bluetooth.begin(9600);
}
 
void loop(){
  if (bluetooth.available()) {
    Serial.write(bluetooth.read());
  }
  if (Serial.available()) {
    bluetooth.write(Serial.read());
  }
}





7. AT commands


HC-06 과 연결되면 AT 명령어를 통해서 상태 확인이 가능합니다. 



Arduino IDE > Tools > Serial Monitor 를 띄우고 위의 AT 명령어들을 쳐 봅니다.



통신 속도 = baud rate 는 9600 으로 해야 합니다.

HC-06 은 공장 출하 설정이 9600 bps 로 되어 있습니다.


Bluetooth 이름은 "HC-06" 이구요, ROLE 은 0, 즉 SLAVE 로 되어 있습니다.


* AT+ROLE: See role of bt module(1=master/0=slave)



Password 는 기본 "1234" 로 되어 있습니다.


통신 속도 UART 는 9600 으로 되어 있네요.

바꾸고 싶을 경우는 아래와 같이 설정하면 됩니다.


* 1 set to 1200bps

* 2 set to 2400bps 

* 3 set to 4800bps 

* 4 set to 9600bps (Default) 

* 5 set to 19200bps 

* 6 set to 38400bps 

* 7 set to 57600bps 

* 8 set to 115200bps

  ex) AT+BAUD4 will set the baud rate to 9600



다른 명령어도 다 쳐 봤습니다.





8. Windows 10 과 연결해 보기


Windows 10 에서 블루투스 장치로 연결해 봅니다.



HC-06 을 연결하면 비번을 물어봅니다.



블루투스다 보니 잘 연결됩니다.



장치관리자에서 연결된 HC-06 의 주소를 확인해 보면, 가지고 있는 HC-06 의 address 인 것을 알 수 있습니다.

동일한 장치임을 확인 할 수 있는 부분이죠.



COM 포트를 확인해 보면, 송신 port 가 COM8 임을 알 수 있네요.



시리얼 포트 리스트에도 떠 있습니다.



putty 를 이용하여 COM8 에 연결합니다.



오호라. putty 에서 타이핑 한 것은 보이지 않지만, 글씨를 타이핑 후,

"Ctrl + M, J" 를 치면 arduino IDE 의 Serial Monitor 에서 송신된 단어를 확인할 수 있습니다.



반대로, Serial Monitor 에서 글씨를 치고 Send 를 누르면, putty 화면에 나타나는 것을 확인 할 수 있어요.






9. USB UART CP2102


Serial 연결은, USB Serial 장치인 CP2102 를 통해서도 연결해 봅니다.



RXD 는 저항을 달아서 보호해 주면서, 그림과 같이 연결해 줍니다.


 HC-06 | CP2102
----------------
  RXD  |  TXD
  TXD  |  RXD
  GND  |  GND
----------------

실제 연결은 다음과 같습니다.



역시 putty 를 이용해서 확인해 봅니다.



모든 AT commands 가 잘 먹힙니다. 정상적으로 통신이 가능하네요.





FIN


HC-06 / HC-05 은 해볼 것이 여러가지 있는것 같습니다.

일단 오늘은 HC-06 의 여러가지 연결법과 AT commands 를 사용해 봤습니다.


다음은 HC-05  HC-06 을 사용하여 Master / Slave 연결 등을 활용해 볼께요.




Update - 20210124


사진 정리를 하다, 예전 경주에 놀러갔을 때, 3D 놀이공간 건물 한켠에 전자 공방에서 찍은 사진을 발견.

HC-06 / HC-05 는 bluetooth 에 있어서 널리 사용되는 모듈임을 새삼 다시 알게 되었네요.



And