아두이노 블루투스 2.0 HC-06 사용하기
안녕하세요! 이번 포스트에서는 새로운 프로젝트에 이용할 블루투스 제품인 HC-06을 간단히 다뤄볼까 합니다. 자동차 관련 프로젝트를 진행하다 보니 속도, pwm 값 등 자동차와 관련된 데이터를 받아 봐야 하는 경우가 많은데요, 값을 받아보거나 수정해야 할 떄 일일히 다시 연결하고 수정해야 하는 것에 많은 번거로움을 느끼게 됩니다. 떄문에, 무선으로 자동차를 조종하는 것이 더 편리할 거라 생각하게 되었고, 결과적으로 블루투스를 사용해야겠다는 결심을 하게 되었습니다.
왜 블루투스 2.0?
이전 프로젝트에 사용했던 HC-10 모듈을 사용할까 봤더니 블루투스 4.0 BLE를 지원하는 모델이라 표준적인 장치가 정해져 있지 않아 새로 프로그램을 짜야 사용할 수 있었고 아두이노 IDE에서도 지원을 하고 있지 않아 시리얼 모니터, 플로터 등을 바로 사용할 수 없는 단점이 있었습니다. 그래서 쉽게 연결해 사용할 수 있는 블루투스 2.0 모듈을 사용하기로 하였습니다. 마침 가지고 있는 모듈이 HC-06이어서 이 모듈에 대해 살펴보겠습니다.
HC-06 스펙
- 통신 방법: 블루투스 2.0 무선 시리얼 통신
- 동작 범위: ~10M
- 동작 전원: 3.6 ~ 6V
- 사용 전력: ~30mA
- 모듈 크기: 3.6 x 1.5 cm
- 기본 이름: linvor
- 페어링 번호: 1234
HC-06 핀 배치
- VCC : 아두이노 5V
- GND : 아두이노 GND
- RX : 수신 (아두이노의 TX 역할을 하는 핀에 연결)
- TX : 송신 (아두이노의 RX 역할을 하는 핀에 연결)
회로도
HC-06이라고 이름이 붙어 있더라도 사용하는 전압이 서로 다르게 회로가 꾸며진 경우가 있으므로 전원을 연결할 때 주의하여야 합니다. 전원과 데이터 송수신 모두 5 볼트로 작동하는 모듈들도 있고, 3.3 볼트에서만 동작하는 모듈도 있는데, 제가 사용한 모듈은 전원은 5볼트, 데이터 수신 및 송신은 3.3볼트를 사용하는 것이었습니다.
이 모듈듈 TX에서 아두이노로 신호를 보낼 떄는 아두이노가 3.3볼트를 HIGH로 인식하기에 별 문제가 없지만, 아두이노에서 모듈의 RX로 신호를 보낼 때는 모듈이 5볼트를 감당하지 못하게 되면서 문제가 생기게 됩니다. 때문에 아두이노의 TX 역할을 하는 핀과 모듈의 RX 핀을 연결할 때 5볼트 신호를 3.3볼트 신호로 바꾸는 회로를 구상해야 하는데요, 저는 아래 회로도에서 볼 수 있듯 1K옴과 2K옴 저항을 사용하여 볼티지 디바이더를 만들었습니다.
HC-06 설정
설정 코드
아래 코드를 아두이노에 올리고, 시리얼 모니터를 연 후 AT 코멘드를 입력하여 HC-06을 설정하면 됩니다. 처음 시리얼 모니터를 열 때는 line ending은 없음, 속도는 9600 baud로 설정해야 합니다.
AT 커멘드
많은 명령어가 있지만 자주 사용하는 명령어를 아래와 같이 정리해 보았습니다.
설정 | 명령 | 반환값 | 기본값 | 설명 |
통신 테스트 | AT | OK | 통신이 되고 있는지 확인 | |
이름 변경 | AT+NAMEname | OKsetname | linvor | 장치의 이름을 name으로 변경 |
속도 변경 | AT+BAUDn | OK보레이트 (예: OK1200) | 9600 | n에 해당하는 속도로 보드의 속도 변경 |
PIN 설정 | AT+PINxxxx | OKsetpin | 1234 | 페어링 비밀번호를 xxxx로 변경 |
AT+BAUD 뒤에 바로 이어서 숫자를 주면 장치의 통신 속도를 설정할 수 있습니다. 숫자에 해당하는 보레이트를 아래 표에 정리해 보았습니다. 기본값은 9600 baud로 설정되어 있습니다. 가능하면 빠른 통신 속도로 설정하여야 많은 데이터를 주고 받을 수 있지만, 아두이노의 SoftwareSerial
라이브러리가 57600 baud 이상은 지원하지 못한다는 한계가 있으므로 프로젝트에 맞는 적절한 통신 속도를 선택하여야 합니다.
AT+Baud 파리미터 | 보레이트 |
1 | 1200 |
2 | 2400 |
3 | 3600 |
4 | 4800 |
5 | 19200 |
6 | 38400 |
7 | 57600 |
8 | 115200 |
사용 방법
기본 설정을 완료했다면 블루투스를 사용할 수 있는 상태가 됩니다. 블루투스를 사용해주기 위해서는 우선 컴퓨터에서 블루투스 기기와 연결을 해야 합니다. 저는 맥 오에스를 쓰고 있어서 이를 기준으로 설명 드리겠습니다. 아두이노에 전원을 연결한 후, 맥 오에스의 시스템 환경 설정에서 블루투스 패널을 열면 다음 그림과 같이 linvor라는 이름의 장치를 찾을 수 있습니다.
처음 연결할려면 Pair 버튼을 누릅니다. 이 때 맥 오에스에서 기본으로 사용하는 페어 코드인 0000과 다르기 때문에 옵션을 누른 후 다음과 같이 기본 페어 코드인 1234를 입력하고 페어링을 합니다.
페어링이 성공하면 아래와 같이 ‘connected’ 상태로 전환됩니다.
여기까지 진행한 후 아두이노의 port를 보면 아래 그림과 같이 linvor라는 이름을 포함한 포트를 찾을 수 있습니다. 이를 선택한 후 시리얼 모니터나 시리얼 플로터를 열면 블루투스를 통해 데이터를 주고 받을 수 있습니다.