2022년 6월 8일 수요일

블루투스 HC-05사용하기



이번에는 블루투스 모듈 HC-05 2개로 서로 통신을 해보자.

이번에 블루투스 통신을 해보고 싶어서 인터넷을 찾아보니 HC-05, HC-06 이라는 모듈을 많이 사용하는걸로 보여지고 가격도 꽤 저렴해서 한번 자료조사를 해봤다. HC-05는 Master,Slave 기능이 둘다 되고 HC-06의 경우 Slave만 된다고 한다.

(어떤 글에서는 HC-06도 버젼에 따라서 Master,Slave둘다 된다고 하기도 한다.)

그리고, 통신 속도와 STATE상태 핀이 나와있냐 안나와있냐가 조금 다르다.

HC-05 : 38400,N,8,1 , 통신 마지막에 추가 Data("Both NL&CR")가 있다.

HC-06 : 9600,N,8,1 , 통신 마지막에 추가 Data가 없다.

여기서 추가 Data의 경우 통신 Tool에서 지원이 되면 Both NL&CR 을 선택해주면 되고, 없다면 사용자가 직접 넣어줘야 한다. 이 부분은 모듈 셋팅시 마지막에 항상 넣어줘야 하고, 셋팅완료후 모듈간에 통신을 할때는 있으면 통신 창에서 라인이 바뀌어서 나오고 없으면 그냥 데이타가 이어서 보여진다. 그리고, 통신 속도의 경우 사용자가 셋팅시 명령어로 통신 속도를 바꿔줄수 있는데 이는 사용자가 통신할때 통신 속도이지 블루투스 모듈 셋팅을 할때는 통신속도를 HC-05 (38400)으로 해줘야 한다.

우선 둘다 Master,Slave가 가능한 HC-05를 두개 인터넷으로 주문을 하고 드뎌 도착했다. HC-05나 HC-06이나 기본 셋팅법은 동일하니 이 내용을 참고하여 HC-06사용시 활용하면 된다. HC-06과 HC-05 셋팅 명령어가 다른 부분을 확인.






보드 앞을 보면 패턴 안테나가 있고, 뒷면을 보니 사용자가 사용가능한 핀들이 친절히 표시되어있다.

여기서 사용자가 사용할 핀들은 RXD,TXD,GND,VCC이고 모듈 셋팅을 해주기 위해서 EN핀을 사용해야 한다. 모듈 셋팅시 High가 되어있어야 셋팅이 가능하고, 셋팅이 끝나고 사용할때는 EN핀을 OPEN으로 해두면 된다.

PC로 셋팅을 하기 위해서 집에 있는 보드를 찾아보니 USB to UART통신 컨버터가 있어서 이 보드를 이용해서 PC와 연결해보기로 했다.
















위와 같이 2개를 만들었다. 이제 PC에 저 USB단자를 연결해서 셋팅해보자.













왼쪽 그림과 같이 EN핀 High를 주고 셋팅을 하였다.

여기서 오른쪽 그림의 LED가 모듈 상태에 따라서 켜지는 속도가 달라지는것을 알수있다.

1. LED 깜빡이는 속도가 3초간 ON/OFF : EN핀 High로 줬을때 모듈을 셋팅할수 있는 상태. 모듈 셋팅을 위해서는 이 LED상태를 확인하자. 참고로 EN핀을 사용하지 않을때는 전원을 넣기 전에 모듈에 있는 스위치를 누르고 있다가 전원 넣고 2~3초후에 스위치에서 손을 띄고 사용해도 된다. (근데, 누군가 스위치로 셋팅시 Full로 셋팅을 못한다는 이야기도 있어서 우선 확실히 하는걸로 선택했다)

2. 셋팅후 둘이 페어링이 되면 약 2초간 OFF에서 빠른 속도로 2번 ON이 되고 다시 OFF됨. (이 순서로 반복되면 2개의 모듈이 연결이 잘 됐다고 보면 된다.)

3. 연결이 안됐을때는 Slave는 지속적으로 빠른 속도로 LED가 깜빡이고 Master는 LED가 2번과 같이 반복하는데 좀더 빠르게 동작하는 걸로 보여진다.

이제 PC에 연결하였을때 연결된 PC Port를 확인하고, 통신 프로그램을 이용하여 셋팅을 먼저 해보자. 여기서는 http://blog.daum.net/pg365/276 이라는 블로그에서 친절히 자기가 개발한 프로그램을 올려주셔서 이 프로그램을 사용해봤다.








프로그램을 실행하여 Connect를 누르고 Serial 셋팅을 하였다. 연결 포트와 통신 속도 38400을 선택.








이후에 AT , at 대소문자 구분은 안하는걸로 보여진다. 이 명령어를 보냈을때 OK라는 데이타가 와야 셋팅이 가능한 상태가 된다. 위에 이야기 했듯이 오른쪽 종료 버튼 위에 보면 뒤에 붙이기 (\r\n) 을 넣어주었다.

아니면 통신 Tool에서 (both nl&cr)을 선택해주는게 있다거나 Hex로 0x0D,0x0A를 주면 된다.

1. both nl&cr

2. 0x0D 0x0A

3. \r\n

위 3가지모두 동일한 데이타를 전송하는거다. 이는 모듈 셋팅할때 필요하다.










위와 같이 at 라는 데이타를 보내면 OK가 모듈에서 데이타가 와야 한다. 이제 모듈과 PC가 연결이 되었고, 명령어로 셋팅을 할수 있다. 가끔 통신을 하다보니 그전 상태가 뭔가 안좋을때는 OK가 아니라 ERROR:[0]이라는 문구가 오는데 다시 정상적인 데이타를 보내면 OK가 온다.





버전을 확인하는 명령어를 보냈더니 2.0 버젼과 날짜가 오고, OK가 온다.

이리 저리 셋팅을 처음하는거라 한대는 Master로 하고, 다른 한대는 Slave로 해서 2개의 HC-05 끼리 통신을 시켜보니 서로 페어링이 안돼서 처음부터 다시 셋팅을 해봤다.

한대는 Master로

at

at+init

at+role=1

at+pswd=2345

at+uart=9600,0,0

at+cmode=1

또다른 한대는 Slave로 at+role = 1 을 '0' 으로 바꿔서

at

at+init

at+role=0

at+pswd=2345

at+uart=9600,0,0

at+cmode=1

각순서대로 설명하면

at (기본 연결됐는지 확인용)

at+init (기존 통신 연결상태를 모두 지우는 명령)

at+role=1 ( '1'로주면 Master, '0' 주면 Slave)

at+pswd=2345 (패스워드)

at+uart=9600,0,0 (통신속도)

at+cmode=1 (모든 Address장비와 통신)

위와 같이 순서대로 셋팅을 해서 EN핀을 다시 OPEN해주고 2개의 USB를 PC로 연결하니 페어링은 되어서 LED가 주기적으로 2번 깜빡이는게 보인다.

다시 통신 창을 열어서 데이타를 주고 받아보니 된다.






한쪽은 \r\n을 넣어주고, 한쪽은 안넣어주고 서로 데이타를 주고 받을때 통신창에 나타나는 메세지가 어떻게 다르게 보여지는지 알수 있다.

HC-05명령어를 더 보고 싶으면 하기 사이트에 들어가면 된다.

http://www.linotux.ch/arduino/HC-0305_serial_module_AT_commamd_set_201104_revised.pdf

아래 보면 AT Command에 \r\n 을 주라는 내용도 있다.











HC-05, HC-06의 명령어 참고시 다른 사이트도 많고, 하기 사이트에도 있다.

https://blog.naver.com/wararat/220457318826

http://www.martyncurrey.com/arduino-and-hc-06-zs-040/

이상으로 HC-05 블루투스 모듈을 이용하여 통신하는걸 해봤다.

FPGA관련 정보, 영상 신호 이론, 하드웨어 관련 더 많은 정보는 하기 네이버 블로그에 있습니다. https://blog.naver.com/zaszas2345



댓글 없음:

댓글 쓰기