[WblueBot 1/3] 블루투스 TTL과 CMOS간 레벨변환 보드만들기, HC-06 블루투스 모듈설정

2013.02.05 20:46




현재 군 복무중인 상태입니다.



오랜만에 찾아 온 새 포스팅입니다.^^ 아두이노 스토리 카페에서 공구로  블루투스 슬래이브 모듈 HC-06을 구매했는데요..

사용에 앞서서 블루투스 모듈과 컴퓨터 혹은 컨트롤러 보드와의 통신을 위해서는 통신 전압레벨의 변환이 필요 해서 TTL < > CMOS 레벨변환 지그를 만들었습니다.


 사진찍을 때 마다 저 각도로 찍는데....ㅎ  저 45도 각도에서 찍은 사진이 제일 마음에 듭니다.^


레벨 변환보드 설계 및 회로도



AVR의 경우 UART통신을 할 때 5V레벨의 전압으로 High,Low로 구분지어 통신을 합니다.

그런데 HC-06의 경우에는 (5V 에도 버티는지는 잘 모르겠으나.. ) 3.3V의 CMOS레벨으로 통신을 하는데요.. 이에 따른 문제는 통신선을 AVR과 그대로 연결하면 고장이 나게 됩니다.

따라서 CMOS < > TTL 간의 통신레벨을 변환할 필요가 있었는데... 스마트폰 어플리케이션으로  

시뮬레이션 후에 위와 같이 회로를 설계했습니다.

간단하게 회로에 대해 설명하면 D1은 실수로 케이블을 반대로 연결했을 시에 전원이 들어오지 않도록 해둔 안전용 정류다이오드이고, 블루투스 모듈의 RXD측은 R2와 R4가 1 : 2 로 저항 분압되어

모듈측에 RXD에는 3.3V레벨로 스윙 (High-Low간 변화) 하게 됩니다.

D2와 D3는 AVR컨트롤러 보드에서 입력하는 전원이 최대 6V까지 입력될수 있어, 저항 분압을 해도 3.8V 정도까지 상승할 우려가 있어, 3.3V의 +10% 이내인 3.6V이상 올라갈수 없도록 3.6V급 제너다이오드를 연결해 두었습니다.

이 외에 LED1, LED2는 각각 LED1은 전원입력상태 확인용, LED2는 블루투스 연결 확인용 입니다.


완성된 블루투스 모듈 사진




앞 사진에서 느껴보지 못한 고급스러운 느낌인가요 ^^; (?) 전면부 모습입니다.

아쉽게도 사진은 이 것 밖에 없네요..



HC-06 블루투스 모듈 설정


이제 실제 통신에 이용하기 위해서 블루투스 모듈에 기본적인 설정이 필요했습니다.

- 통신속도 설정 필요

- 블루투스 핀코드 설정

- 블루투스 장치 이름 변경



앞서 CP2102로 만들었던 USB to UART변환장치와 블루투스 모듈간에 연결해줍니다.

통신선은 크로스 연결되어야합니다.

AVR or UART Device RXD ---- Bluetooth TXD

AVR or UART Device TXD ---- Bluetooth RXD


모듈에 따라 다르지만 일부 종류의 경우 본인을 기준으로 나가는 것이 TX 들어오는 것이 RX로 되어있는 것을 확인했습니다.^


연결을 완료했다면 이제 하이퍼터미널이나 기타 시리얼 통신용 프로그램을 실행합니다.

저는 하이퍼터미널을 사용했고, 설정 순서는 다음과 같습니다.


1. 하이퍼터미널 실행 후 가장먼저 새 연결을 만들어줍니다.





2. 다음은 연결에 사용할 모뎀을 USB to UART로 변환된 COM포트를 선택해줍니다.


 이 포트는 컴퓨터마다 숫자가 다를 수 있습니다. 장치관리자의 포트에서 확인 할 수 있습니다.





3. 블루투스 통신방식/속도에 맞게 포트설정을 변경해 줍니다.


HC-06의 공장초기 통신속도는 9600bps이고, 데이터비트는 8 비트, 스톱비트 1 비트, 흐름제어는 없음입니다.





4. 통신설정을 마쳤습니다. 이제 통신테스트인 AT명령을 날려봅니다.


 하이퍼터미널을 자세하게 설명하지 않았지만 속성에서 입력되는 텍스트를 화면에 표시하는 옵션을 체크해 두어야 화면에 문자가 입력이 됩니다.


AT명령을 보냈을 때 OK가 수신된다면 설정이 가능한 상태입니다.





5. 이제 원하는 설정값을 AT명령어로 보내줍니다. ( 메모장 AT명령 복사 )


 예를 들어 스마트폰에서 블루투스를 검색했을 때 내 장치가 Bluetooth로 검색되도록 하고 싶다면 AT+NAMEBluetooth로 명령을 날려주면 됩니다.

자세한건 아래의 HC-06에서 지원하는 3 가지 명령을 참고하세요.


1. .Baud rate 변경 

Sent : AT+BAUD1 

receive : OK1200 

Sent : AT+BAUD2

receive : OK2400


- baud rate 값 

1---------1200 

2---------2400 

3---------4800 

4---------9600 

5---------19200 

6---------38400 

7---------57600 

8---------115200 


- Baud rate 설정은 전원 OFF시 저장할수 있습니다.

2. 블루투스 이름 변경

Sent : AT+NAMEdevicename

receive : OKname 


- 디바이스 이름은 사용자가 정하는데 디바이스 이름으로 검색되어진다. 

- 디바이스 이름 설정은 전원 OFF시 저장할수 있습니다.

3. Pincode 변경 

Sent : AT+PINxxxx

receive : OKsetpin 


- xxxx 는 설정되는 pin code 값입니다. 

- PIN code 설정은 전원 OFF시 저장할수 있습니다.


메모장에 입력해둔 AT 명령을 복사해서 ....





6. 이제 원하는 설정값을 AT명령어로 보내줍니다. ( 하이퍼터미널에 명령 붙여넣기 )




 명령을 보냈을 때 OK혹은 OKsetname, OKsetpin, OK통신속도 등으로 수신이 된다면 설정이 정상적으로 등록된 상태입니다.  나머지 AT명령도 다음과 같이 설정해 줍니다.






설정을 마친 스마트폰 블루투스 검색 샷입니다.ㅎㅎ

블루투스 모듈 공급이 늦어져서 포스팅이 한참 늦어졌네요.. 이제 다시 분발해서 포스팅하겠습니다.

변환회로를 꾸렸으니, 몇몇장치를 더만들면 조만간 완성작을 만날 수 있을지도 몰라요!!

BinGoon AVR/AVR 작품, Project , , , , , , ,

  1. Blog Icon
    핫핫홋홋

    안녕하세요 여러가지 글로 도움을 참 많이 받고 있습니다.
    이번 글을 보다 한가지 궁금한게 있어 문의 드립니다.
    블루투스 모듈이 기본 설정 대로 사용하고자 한다면 따로 하이퍼터미널로 설정 변경 없이
    바로 atmega에 연결하여 사용하여도 동작이 잘 되는건가요?
    꼭 블루투스 모듈 이름 및 핀 코드를 변경해줘야 제대로 사용이 가능한지 알고 싶습니다!

  2. 안녕하세요. 답변이 늦어져서 죄송합니다. 스마트폰이 고장나서...
    일단 블루투스 모듈을 판매하시는 분이 동작확인을 하기 위해서 초기 설정을 하실 텐데요. 그걸 질문하셔서 물어보셔야 할 것 같습니다. 저는 공동구매 했을 때 9600bps에 핀코드는 0000, 이름은 Bluetooth로 설정해서 왔었거든요. 그건 판매자분에게 확인이 필요해 보입니다. 만약 그냥 부품만 받게되면, USB to RS232c 장비로, 블루투스 모듈의 RX핀과 RS232C TX핀, TX핀과 RX232C RX핀과 GND를 공통으로 연결하고, 블루투스 모듈에는 전원을 공급하신후에 이 포스팅의 하이퍼 터미널 설정을 따라 오시면 되겠습니다.^^ 그럼 도움되는 답글이 되었기를 바랍니다.^^

티스토리 툴바