아두이노 2대로 블루투스 통신
아두이노 두 대 간 상호간 통신을 통해 데이터를 서로 주고 받을 수 있는 방법이 있다.
바로 블루투스 모듈인 BlueTooth module(HC-05 또는 HC-06)을 이용하면 된다.
다르게 이야기해서 아두이노 RC Car가 있고, 이를 유선이 아닌 무선으로 제어하고자 할 때
블루투스 모듈을 이용하면 제어가 가능하다.
우선 두대의 아두이노 + 블루투스 모듈 서로간 기본 통신법에 대해 다루고자 한다.
차 후에는 RC카에 적용하여 무선으로 제어해보고자 한다.
해보면 알겠지만 블루투스 모듈 제어가 다소 까다롭다.
영상처럼 단번에 되지 않을 것이다.
절차와 조건이 잘 맞아야 하니 차분하게 글과 영상을 보면서 따라해본다면 문제가 생겨도 충분히 해결할 수 있을 것이다.
블루투스 모듈은 크게 통신 규격 버전에 따라 '2.0버전 모듈'과 '4.0버전 모듈'이 있고,
저전력으로 동작되는 4.0 BLE(HM-10) 등이 있다.
그리고 2.0모듈(혹은 2.0 이하 버전)) 중에서는 크게 HC-05와 HC-06 모델이 대표적이다.
이번에 다룰 블루투스는 2.0 제품군이고, 그 중에서 HC-05 모듈을 중심으로 다루고자 한다.
HC-06 모듈도 방법적으로 조금의 차이가 있겠지만, HC-05 모듈을 잘 다루어 본다면, 크게 어렵지 않을 것이다.
>> BT(BlueTooth) Module 설명:
그리고 중요사항으로 HC-05 모듈과 HC-06 모듈의 초기 설정값(공장 초기값)은 아래와 같다.
(단, 펌웨어 버전에 따라 다를 수 있음
HC-05와 HC-06의 외관상 큰 차이점은, 외부 버튼 스위치가 있고 없고의 차이가 있다.
또한 핀수가 각각 6핀과 4핀이다.(HC-06이 6핀도 있음)
HC-05 모듈은 기본 슬레이브로 설정되어 있지만 AT명령어 모드에서 마스터로 변경이 가능하지만,
HC-06 모듈은 슬레이브 모드만 지원한다.
** 주의해야 할것은 서로 통신하기 위해서는 하나는 마스터(Master), 하나는 슬레이브(Slave)로 설정되어야
페어링(연결)되면서 통신이 가능해지낟.
따라서 블루투스 모듈끼리 통신을 위한 회로를 구성할 때는 기본적으로 HC-05모듈 하나가 있어야 한다.
그런데, HC-06 모듈의 펌웨어 버전이 1.7이상에서는 AT 명령으로 마스터 모드 설정이 가능한데,
펌웨어 3.0 이상에서는 전송옵션(시리얼모니터 설정)도 Both NL & CR 로 변경되었다.
[** HC-05 모듈은, 최근에 출시되는 제품의 경우 펌웨어 버전이 3.0버전으로 출시되고있다. 2017년 6월 기준]
모듈에 따른 블루투스 통신 방법은
1. 05 <-> 05
2. 05 <-> 06
3. 06 <-> 06 이런 형태로 가능하다.
[HC-05 Specification]
- 칩셋: CSR BlueTooth chip, BlueTooth V2.0 표준 프로토콜 사용
- 주파수: 2.4GHz ~ 2.8GHz ISM band
- Serial UART 통신속도 : 4800 ~ 1382400Bps 지원
- 입력전압: 3.6V ~ 6V
- 페어링 거리: 최대 10M (장애물 및 조건에 따라 짧아짐)
- 전력 : +3.3DC 일일때 50mA
- 소모전류: 통신시 (30~40mA), 대기시(8mA)
- 동작온도: -20도 ~ 40도
- Password(Pin Code): 1234 (default)
[코드 작성시 아래 통신속도에 구분에 주의할 것: HC-05 기준이며 펌웨어 버전에 따라 달라질 수 있음]
- 블루투스 통신속도(default): 9600bps
- AT 명령어 모드 통신 속도(default): 38400bps
[HC-05 마스터 모드 설정 방법]
- 회로 연결:
먼저 아래 연결도를 참고하여 연결하여야 한다.
다만 주의해야 할 것은 블루투스 모듈의 Rx 단자에 입력되는 신호의 레벨은 3.3V이어야 한다.
하지만 아두이노 포트의 출력은 5V레벨이기 때문에 3.3V레벨로 다운시켜 입력한다.
여기서는 가장 손쉬운 레벨변환 방법인 1kΩ 저항과 2kΩ 저항을 이용한 전압 분배 방법을 이용한다.
===
HC-06 (AT-Command)
AT → OK (동작 테스트)
AT+VERSION (Firmware Ver 확인)
AT+BAUD4 (Default: UART Buadrate 9600)
AT+Namename (장치명을 name으로 변경)
AT+PINxxxx (PIN 번호를 xxxx로 변경)
AT+ROLE=M (장치를 Master Mode로 변경, 변경 후 Reset 필요)
AT+ROLE=S (장치를 Slave Mode로 변경, 변경 후 Reset 필요)
'Firmware & Embedded > Components' 카테고리의 다른 글
Interrupt control (0) | 2022.11.21 |
---|---|
Pull-up & Push-down (0) | 2022.11.21 |
DC Motor (0) | 2022.11.16 |
L9110S (Motor Driver Module) (0) | 2022.11.16 |
Joystick module (0) | 2022.11.08 |