아두이노 프로젝트에서 무선 통신을 구현할 때 자주 사용되는 HC-06 블루투스 모듈은 그 편리함과 저렴한 가격으로 인기를 끌고 있습니다. 이 모듈을 활용해 아두이노와 다른 장치 간의 통신을 간편하게 구현할 수 있지만, 설정과 관리를 위한 AT 명령어 사용법에는 주의가 필요합니다.
HC-06 블루투스 모듈 연결하기
HC-06 블루투스 3.0 버전은 아두이노 블루투스 모듈 중 가장 인기가 있습니다. 이는 최근 블루투스 4.0 (예: HM-10)의 LE 방식이 아닌, 시리얼 방식의 코딩으로 통신이 가능하기 때문입니다.
HC-06 모듈의 기본 연결 방법은 다음과 같습니다
- VCC: 5v 혹은 3.3v
- GND: GND
- TXD: 디지털 2번 핀
- RXD: 디지털 3번 핀
RX와 TX 연결시 주의할 점은 RX는 TX로, TX는 RX로 연결되어야 합니다. SoftwareSerial을 선언할 때 순서를 조정함으로써 혼란을 피할 수 있습니다. 연결 테스트는 AT 명령어를 통해 가능합니다.
아두이노 코드 예제
#include <softwareserial.h>
const int nPin_BTTx = 2; //전송
const int nPin_BTRx = 3; //수신
SoftwareSerial BTSerial(nPin_BTTx, nPin_BTRx); // RX, TX
void setup() {
Serial.begin(9600);
BTSerial.begin(9600);
Serial.println("START");
}
void loop() {
if (BTSerial.available())
Serial.write(BTSerial.read());
if (Serial.available())
BTSerial.write(Serial.read());
}
AT 명령어의 중요성
- AT 명령어를 통해 블루투스 모듈의 설정을 변경하거나 상태를 확인할 수 있습니다.
- 하지만 펌웨어 버전에 따라 AT 명령어의 형식이나 동작 방식이 다를 수 있습니다.
펌웨어 버전에 따른 AT 명령어의 차이
Version : 1.8 의 AT 명령어
- AT+NAME -> AT+NAMEMYMOS1 -> "MYMOS1"로 블루투스 이름 변경
- AT+PIN -> AT+PIN1234 -> 1234 로 블루투스 비밀번호 변경 (최대 4자리 숫자까지 가능)
- AT+ROLE -> AT+ROLE=M -> 블루투스 모듈을 마스터로 변경. 슬레이브는 S
Version : 3.0 의 AT 명령어
- AT+NAME -> AT+NAME=MYMOS1 -> "MYMOS1"로 블루투스 이름 변경
- AT+PIN -> AT+PSWD=1234 -> 1234 로 블루투스 비밀번호 변경 (최대 4자리 숫자까지 가능)
- AT+ROLE -> AT+ROLE=1 -> 블루투스 모듈을 마스터로 변경. 슬레이브는 0
AT 명령어 사용 시 주의사항
- 때로는 AT 명령어에 대한 응답이 없을 수 있으므로, 이 경우 블루투스 전원을 리셋하거나 다른 통신 테스트 앱을 활용하는 것이 좋습니다.
- AT 명령어를 입력할 때 줄 바꿈 설정에 주의해야 합니다. 명령어 입력 창에서 줄 바꿈 설정을 "Both NL & CR"로 변경해야 할 수도 있습니다.
테스트에 사용하는 블루투스앱
HC-06 모듈에서는 AT 명령어가 가끔 응답하지 않을 때가 있습니다. 이럴 경우 블루투스 앱 SPP를 사용하여 통신 테스트를 진행하면 잘되는걸 볼 수 있는데 때로는 블루투스의 전원을 리셋하는 것이 도움이 되었습니다. AT 명령어는 하드웨어 버전에 따라 달라질 수 있는데, 펌웨어 버전이 달라서 AT 명령어에 대한 응답 방식도 변경 되었습니다.
먼저 AT를 쳐서 OK가 뜨지 않을 땐
줄을 입력하는 방식을 바꿔야 합니다. 보통은 line ending 없음으로 선택되어 있으나, 안되면 Both NL & CR로 변경을 해야 한답니다. 이러한 이유는 역시나 펌웨어의 버전 차이 때문입니다.
실제로 AT 명령어를 실행 했을 때 OK 가 뜨고 난 뒤, AT+VERSION으로 명령어를 날리니 3.0버전이라고 나오네요. 그러면 기존에 있는 AT 명령어는 다 바뀐단 의미가 되겠네요.
결론
아두이노와 HC-06 블루투스 모듈을 연결하여 무선 통신을 구현하는 것은 간단하지만, AT 명령어 사용 시 주의가 필요합니다. 특히 펌웨어 버전에 따른 차이를 잘 알고, 적절한 명령어를 사용하여 모듈을 설정하는 것이 중요합니다.
'Language > Arduino' 카테고리의 다른 글
[아두이노] 스마트팜을 위한 ESP32 사용 방법 (0) | 2021.03.31 |
---|---|
[아두이노] 보조배터리만들기 아두이노 외부전원으로도 사용가능하지요. (0) | 2019.02.13 |
아두이노 회로설계 툴 프릿징 Fritzing 사용해보기 (0) | 2019.01.28 |
[아두이노] 조도센서 디지털 HS-CDSM 으로 빛 테스트 하기 (0) | 2019.01.23 |
[아두이노] 토양수분센서 값 알아내기 HS-Soil Moisture Sensor (0) | 2019.01.22 |