HC-05 블루투스 모듈은 모든 Arduino 프로젝트를위한 블루투스 모듈입니다! Arduino IDE에서 연결하고 코딩하는 것은 쉽습니다. 대부분의 프로젝트에서 우리는 일반적으로 HC05를 Arduino에 연결하고이를 사용하여 휴대폰과 같은 다른 스마트 장치와 무선으로 통신합니다. 이것은 매우 간단하며 블루투스 제어 로봇, 블루투스 음성 제어, 블루투스 홈 자동화 등과 같은 많은 흥미로운 프로젝트를 구축했습니다. 그러나 두 개의 HC-05를 함께 연결해야했던 적이 있습니까? HC05를 스마트 폰에 연결하는 것은 간단하지 않으며 몇 가지 추가 단계가 필요합니다. 이 자습서는이 프로세스를 안내합니다. 바로 뛰어 들자!
필요한 재료
- 2x Arduino (모든 모델이 가능합니다. 저는 Arduino Uno R3 및 Arduino Nano를 사용하고 있습니다)
- 2x HC05 Bluetooth 모듈
- 브레드 보드
- 점퍼 와이어
- 2x 1kΩ 저항
- 2x 2.2kΩ 저항
회로도
이것이 기본 회로도입니다. 이 회로 중 2 개를 연결합니다. 하나는 마스터 용이고 다른 하나는 슬레이브 용입니다. 연결을 위해 여기서하는 일은 HC05를 Arduino에 연결하는 것입니다. HC05의 수신기 (Rx) 핀은 0V ~ 3.3V 범위에서 작동하고 Arduino는 0V ~ 5V 범위에서 작동합니다. 따라서 HC05 모듈이 손상되지 않도록 저항 (R1 및 R2)을 사용하여 전압 분배기를 만들어 Arduino의 5V 출력을 3.3V로 줄입니다.
R1에는 1kΩ, R2에는 2.2KΩ을 사용하고 있지만 R2가 R1 (R2 ≈ 2R1)의 약 두 배인 한 모든 저항 값을 사용할 수 있습니다. 마찬가지로 마스터와 슬레이브 모두에 대해 회로를 반복하면 Arduino Master Bluetooth 회로 및 Arduino Slave Bluetooth 회로 가 아래에 나와 있습니다.
HC05 모듈의 초기 구성
이것은 두 개의 HC05 모듈을 함께 연결하는 데 필요한 추가 단계입니다. HC05 Bluetooth 모듈 내부의 일부 설정을 변경해야합니다. 이렇게하려면 HC05 모듈의 AT 명령 모드 로 이동 하여 Arduino IDE의 직렬 모니터를 통해 명령을 보내야합니다. 이렇게하려면 직렬 모니터를 통해 HC05로 명령을 보내는 Arduino 코드를 작성해야합니다.
HC05 모듈을 구성하는 코드는 이 페이지의 하단에서 찾을 수 있습니다, 코드의 설명은 다음과입니다
이 코드에 SoftwareSerial 라이브러리를 추가하십시오.
#include < SoftwareSerial.h>
전송 (Tx) 및 수신 (Rx) 핀 번호를 정의합니다. 나는 Tx에 핀 2를 사용하고 Rx에 핀 3을 사용하고 있습니다.
#define tx 2 #define rx 3
Bluetooth 연결에 이름 (여기서는 configBt 사용)을 지정한 다음 SoftwareSerial 라이브러리에 어떤 핀이 Tx이고 어떤 핀이 Rx인지 알려줍니다. 구문은 bluetoothName (Rx, Tx);
SoftwareSerial configBt (rx, tx); // RX, TX
Bluetooth 모듈을 구성하기 위해 Arduino는 38400 baud의 전송 속도로 명령을 보내야합니다. 마찬가지로 Bluetooth 연결의 전송 속도도 38400 전송 속도로 설정했습니다. 전송 (Tx)을 출력 핀으로 설정하고 수신 (Rx)을 입력 핀으로 설정
void setup () { Serial.begin (38400); configBt.begin (38400); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
forever 루프 안에는 코드의 주요 덩어리가 있습니다. 여기서 아이디어는 직렬 모니터의 텍스트 상자에 입력 한 내용을 Arduino의 Tx 핀을 통해 HC05로 보내는 것입니다. 그런 다음 직렬 모니터에 HC05가 출력하는 모든 것을 표시합니다.
void loop () {if (configBt.available ()) // HC05가 무언가를 보내는 경우… { Serial.print (configBt.readString ()); // 직렬 모니터로 인쇄} if (Serial.available ()) // 직렬 모니터가 출력하는 경우… {configBt.write (Serial.read ()); // Arduino의 Tx 핀에 쓰기}}
먼저 마스터 HC05 모듈에 연결된 Arduino에이 코드를 업로드합니다. 코드를 업로드 한 후 Arduino 전원 케이블을 뽑습니다. HC05의 버튼을 길게 누릅니다. 이제 HC05의 버튼을 누른 상태에서 Arduino 전원 케이블을 연결합니다. 이제 HC05의 버튼을 놓을 수 있습니다. 이것이 HC05의 AT 모드로 들어가는 방법입니다. 이 작업을 제대로 수행했는지 확인 하려면 HC05 의 빨간색 표시등이 약 1 초마다 깜박이 는지 확인하십시오 (느리게 깜박임!). 일반적으로 HC05가 Bluetooth 장치에 연결되기 전에 빨간색 표시등이 매우 높은 빈도로 깜박입니다 (빠르게 깜박임!).
다음으로 직렬 모니터를 엽니 다 (직렬 모니터 버튼은 Arduino IDE의 오른쪽 상단에 있음). 직렬 모니터 창의 오른쪽 하단에서 아직 설정하지 않은 경우 라인 종료 설정을 "Both NL 및 CL"로 설정 하고 전송 속도를 38400으로 설정했는지 확인하십시오. 이제 직렬 모니터에 AT를 입력합니다. 모든 것이 잘되면 직렬 모니터 창에 표시된 HC05에서 "OK"를 받게됩니다. 축하합니다! HC05 모듈의 AT 명령 모드에 성공적으로 로그인했습니다.
이제 아래 표에 다음 명령을 입력하여 마스터 HC05 모듈 을 구성하십시오 .
COMMAND (직렬 모니터에 입력하고 Enter 키를 누릅니다) |
RESPONSE (직렬 모니터에 표시되는 HC05의 응답) |
기능 (이 명령의 기능은 무엇입니까?) |
에서 |
확인 |
테스트 |
AT + CMODE? |
확인 |
확인 CMODE 또는 연결 모드 ----------------------------- CMODE: 0은 슬레이브입니다. 1은 마스터 |
AT + CMODE = 1 |
확인 |
마스터 HC05를 구성 할 때 CMODE 를 1 로 설정합니다. |
AT + ADDR? |
+ ADDR: FCA8: 9A: 58D5 확인 * 이것은 나의 마스터 HC05의 주소입니다. 주소가 달라집니다! |
HC05 의 주소 를 반환합니다. 나중에 필요하므로 적어 두십시오 ! |
다음으로 컴퓨터를 다른 HC05 (슬레이브)에 연결합니다 .
COMMAND (직렬 모니터에 입력하고 Enter 키를 누릅니다) |
RESPONSE (직렬 모니터에 표시되는 HC05의 응답) |
기능 (이 명령의 기능은 무엇입니까?) |
에서 |
확인 |
테스트 |
AT + CMODE? |
확인 |
확인 CMODE 또는 연결 모드 ----------------------------- CMODE: 0은 슬레이브입니다. 1은 마스터 |
AT + CMODE = 0 |
확인 |
슬레이브 HC05를 구성 할 때 CMODE 를 0 으로 설정합니다. |
AT + BIND = FCA8,9A, 58D5 * 마스터 HC05 주소의 ":"를 ","로 바꿉니다. * 여기에서는 이전 표에서 기록해 둔 마스터 HC05의 주소를 사용하고 있습니다. 마스터 HC05의 주소를 사용해야합니다! |
확인 |
이 슬레이브 HC05가 부팅시 자동으로 연결할 마스터 HC05의 주소 설정 |
AT + BIND? |
+ 바인드: FCA8: 9A: 58D5 확인 * 이것은 나의 마스터 HC05의 주소입니다. 주소가 달라집니다! |
슬레이브의 바인딩 주소를 확인하십시오. 마스터 HC05의 주소와 일치하면 가셔도 좋습니다! |
Arduino-Arduino Bluetooth 통신 테스트
첫째, 마스터 및 슬레이브 HC05 모듈 모두에 전원을 공급합니다. 전원을 켜고 몇 초가 지난 후 HC05 모듈의 빨간색 표시등을 확인합니다.
빨간불의 깜박임 속도 |
의미 |
매우 높은 빈도로 깜박임 (빠르게 깜박임!) |
안좋다! 이는 HC05 모듈이 서로 연결되지 않음을 의미합니다! 문제를 해결할 시간입니다! |
낮은 주파수로 깜박임 (느리게 깜박임!) |
좋은! 해냈어! 하지만이 설정이 제대로 작동하는지 확인하려면 한 번 더 확인해야합니다! 어서! |
빨간색 표시등이 낮은 주파수로 깜박이면 (느리게 깜박임!) 두 HC05가 서로 연결되어 있는지 확인할 수 있지만 마스터와 슬레이브간에 데이터를주고받을 수 있는지 테스트하지는 않았습니다. 결국 그것이 여기서 주요 목적입니다.
아래 코드를 Arduino 중 하나에 업로드하십시오. 이것은 송신기 (Tx)를 테스트하는 코드입니다. 다시 송신기와 수신기 모두에 대한 전체 코드는이 페이지 하단에서 찾을 수 있습니다.
이전 코드에 따라이 코드에 SoftwareSerial 라이브러리를 추가하고 전송 (Tx) 및 수신 (Rx) 핀 번호를 정의합니다. 그런 다음 Bluetooth 연결의 이름을 지정하고 Tx 및 Rx 핀 번호를 라이브러리에 전달합니다.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
설정 기능에서 Arduino 직렬 모니터와 Bluetooth의 전송 속도를 다시 설정합니다. 이전 코드와 비교했을 때 여기에 차이가 있습니까? 우리는 9600 baud의 전송 속도를 사용하고 있습니다. 이것은 다른 Bluetooth 장치와 통신 할 때 HC05 Bluetooth 모듈 의 기본 사전 설정된 통신 전송 속도입니다. 따라서 38400 보드는 AT 명령으로 HC05 를 구성 하기 위한 것이고 9600 보드는 HC05 모듈의 기본 보드 율입니다. 마지막으로 Tx 핀을 출력으로, Rx 핀을 입력으로 구성하기 전과 같습니다.
void setup () { Serial.begin (9600); bt.begin (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
forever 루프 내에서 우리가하는 일은 HC05를 통해 무작위 값“123”을 전송하는 것입니다.
void loop () {bt.write (123); }
이 코드를 다른 Arduino에 업로드하면 수신 (Rx)을 테스트 하는 코드입니다.
이전 코드와 똑같이 SoftwareSerial 라이브러리를 구성합니다.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
설정 기능의 코드는 테스트 전송 코드 (Tx)와 정확히 동일합니다.
void setup () { Serial.begin (9600); bt.begin (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
forever 루프에서 우리는 송신하는 Arduino에서 보내는 것을 받기만하면됩니다. 수신 버퍼가 HC05에서 일부 데이터를 수신 한 경우 수신 된 모든 데이터를 직렬 모니터에 표시합니다.
void loop () {if (bt.available ()> 0) { Serial.println (bt.read ()); }}
각 Arduino에 해당 코드를 업로드 한 후 수신 Arduino에 대한 직렬 모니터를 엽니 다. 직렬 모니터에서 전송 속도를 9600으로 선택하고 라인 끝을 Newline으로 선택했는지 확인하십시오. 모든 것이 제대로 작동하면 123이 표시됩니다.
참고: 전송 및 수신 Arduino를 동일한 노트북에 연결 한 경우 도구> 포트에서 올바른 COM 포트를 선택해야합니다. 수신하는 Arduino의 COM 포트에 연결해야합니다.
모든 것이 순조롭게 진행되면 HC05 모듈을 교체하여 양방향으로 통신이 이루어 지도록하고 WE ARE DONE!