아두이노 - 블루투스 | Arduino - Bluetooth
이 튜토리얼에서 우리는 다음을 배우게 됩니다:
- 아두이노에서 블루투스를 사용하는 방법
- 아두이노에서 스마트폰 앱으로 블루투스를 통해 데이터를 보내는 방법
- 스마트폰 앱에서 블루투스를 통해 아두이노로 데이터를 받는 방법
- 블루투스를 통해 스마트폰 앱에서 아두이노를 제어하는 방법
이 튜토리얼의 범위:
- 아두이노는 스마트폰 앱과 데이터를 주고받습니다. 두 아두이노 간의 블루투스를 통한 통신은 다른 튜토리얼에서 소개될 예정입니다.
- 이 튜토리얼에서는 HC-05 블루투스 모듈을 사용합니다. 이 모듈은 널리 사용되며 인기가 있습니다.
- Android/iOS 앱 중 어떤 것을 사용해도 됩니다. 이 튜토리얼에서는 Android용 블루투스 시리얼 모니터 앱을 시연용으로 사용할 것입니다.
- 스마트폰 앱에서 아두이노에 연결된 무엇이든 제어할 수 있습니다. 이 튜토리얼에서는 예시로 LED와 서보 모터를 다룰 것입니다.
이 튜토리얼은 클래식 블루투스(Bluetooth 2.0) 사용에 관한 것입니다. 블루투스 저에너지 - BLE (Bluetooth 4.0)를 찾고 계시다면, 이 비슷한 튜토리얼을 참고하세요: 아두이노 - 블루투스 저에너지
준비물
1 | × | Arduino Uno | Amazon | |
1 | × | USB 2.0 cable type A/B | 쿠팡 | Amazon | |
1 | × | HC-05 Bluetooth Module | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Optional) 9V Power Adapter for Arduino | Amazon | |
1 | × | (Recommended) Screw Terminal Block Shield for Arduino Uno | 쿠팡 | Amazon | |
1 | × | (Recommended) Breadboard Shield For Arduino Uno | 쿠팡 | Amazon | |
1 | × | (Recommended) Enclosure For Arduino Uno | Amazon |
HC-05 블루투스 모듈에 관하여
HC-05는 시리얼 블루투스 모듈입니다. 시리얼에서 블루투스로 변환하는 역할을 합니다.
- 시리얼 RX 핀에서 데이터를 받아서 페어링된 장치(예: 스마트폰)에 블루투스를 통해 데이터를 전송합니다.
- 블루투스에서 데이터를 받아서(페어링된 장치로부터) 시리얼 TX 핀으로 데이터를 보냅니다.
더 구체적으로, Arduino가 스마트폰 앱(Android/iOS)과 통신하는 맥락에서:
- 아두이노는 시리얼/소프트웨어시리얼 핀을 통해 HC-05 블루투스 모듈에 연결됩니다.
- HC-05 블루투스 모듈은 스마트폰 앱과 페어링됩니다.
- 아두이노는 시리얼/소프트웨어시리얼로 데이터를 보내는 것만으로 스마트폰 앱에 데이터를 전송합니다.
- 아두이노는 시리얼/소프트웨어시리얼로 데이터를 읽는 것만으로 스마트폰 앱에서 데이터를 수신합니다.
- 아두이노에서는 특별한 블루투스 코드가 필요하지 않습니다.
핀배열
HC-05 블루투스 모듈에는 6개의 핀이 있습니다:
- 활성화/키 핀: 이 핀은 데이터 모드(LOW 설정)와 명령 모드(HIGH 설정) 사이를 전환하는 데 사용됩니다. 연결되지 않은 경우 기본적으로 데이터 모드입니다.
- VCC 핀: 전원 핀, 이 핀을 공급 전압의 +5V에 연결하세요.
- GND 핀: 전원 핀, 이 핀을 전원 소스의 GND에 연결하세요.
- TX 핀: 직렬 데이터 핀, 이 핀을 아두이노의 RX 핀에 연결하세요. 블루투스를 통해 수신된 데이터가 직렬 데이터로 이 핀을 통해 전송됩니다.
- RX 핀: 직렬 데이터 핀, 이 핀을 아두이노의 TX 핀에 연결하세요. 이 핀에서 수신된 데이터는 블루투스로 전송됩니다.
- 상태: 상태 핀은 기판에 있는 LED에 연결되어 있으며, 블루투스가 제대로 작동하는지 확인하기 위한 피드백으로 사용할 수 있습니다.
그러나 기본 기능을 위해서는 HC-05 블루투스 모듈의 4개 핀만을 사용해서 아두이노에 연결하면 됩니다.
HC-05 블루투스 모듈에는 또한 두 개의 내장된 구성 요소가 있습니다:
- LED: 모듈의 상태를 표시합니다.
- 2초에 한 번씩 깜박임: 모듈이 커맨드 모드로 진입했습니다.
- 반복해서 깜박임: 데이터 모드에서 연결을 기다리는 중입니다.
- 1초에 두 번 깜박임: 데이터 모드에서 연결 성공
- 버튼: 작동 모드(데이터 또는 커맨드 모드)를 선택하기 위해 키/활성화 핀을 제어하는 데 사용할 수 있습니다.
작동 원리
HC-05 블루투스 모듈에는 두 가지 작동 모드가 있습니다:
- 데이터 모드: 페어링된 장치와 데이터를 교환하는 데 사용됩니다.
- 명령 모드: 매개변수를 구성하는 데 사용됩니다.
다행히도 HC-05 블루투스 모듈은 구성 없이 기본 설정을 사용하여 아두이노와 함께 작동할 수 있습니다.
HC-05 기본 설정
Default Bluetooth Name | “HC-05” |
---|---|
Default Password | 1234 or 0000 |
Default Communication | Slave |
Default Mode | Data Mode |
Default Data Mode Baud Rate | 9600, 8, N, 1 |
Default Command Mode Baud Rate | 38400, 8, N, 1 |
블루투스 시리얼 모니터 앱에 대하여
Bluetooth Serial Monitor 앱은 아두이노 IDE의 직렬 모니터와 비슷한 사용자 인터페이스를 가진 모바일 앱입니다. 이 앱은 블루투스를 통해 아두이노와 통신합니다. PC의 직렬 모니터처럼 이 앱을 통해 아두이노와 상호작용할 수 있으며, 아두이노 코드에 블루투스 모듈을 위한 특별한 코드를 추가할 필요 없이 다음 단계를 수행함으로써 가능합니다:
- Arduino를 HC-05 Bluetooth 모듈에 연결하십시오
- 스마트폰에 Bluetooth Serial Monitor App을 설치하십시오
- 앱을 열고 HC-05 Bluetooth 모듈과 페어링하십시오
이제 아두이노 IDE의 시리얼 모니터처럼 아두이노에서 데이터를 송수신할 수 있습니다. 기존의 아두이노 코드를 수정할 필요도 없고, 새 아두이노 코드에 블루투스 코드를 추가할 필요도 없습니다.
선연결
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
배선 테이블
Arduino Pins | HC-05 Bluetooth Pins |
---|---|
RX (Pin 0) | TX |
TX (Pin 1) | RX |
5V | VCC |
GND | GND |
Enable/Key (NOT connected) | |
State (NOT connected) |
※ NOTE THAT:
아두이노 코드에서 Serial 객체를 다른 Serial1, Serial2, ... 또는 사용 가능한 경우 SoftwareSerial로 변경하여 다른 아두이노 핀을 사용할 수 있습니다.
블루투스 프로그래밍 방법
블루투스 전용 코드는 필요 없습니다. 시리얼 코드를 사용하기만 하면 됩니다.
아두이노가 스마트폰의 블루투스 앱으로 데이터를 전송합니다
스마트폰의 블루투스 앱으로 아두이노에서 데이터를 보내려면 다음 아두이노 코드를 사용해야 합니다:
이 예제에서는 매초마다 “Arduino here, command me!”를 아두이노에서 스마트폰의 블루투스 앱으로 보낼 것입니다.
사용 방법
- 스마트폰에 블루투스 시리얼 모니터 앱을 설치하세요
- 위의 배선도대로 HC-05 블루투스 모듈을 아두이노에 연결하세요
- 위의 코드를 복사하여 아두이노 IDE에서 열어주세요
- 아두이노 IDE에서 Upload 버튼을 클릭하여 아두이노에 코드를 업로드하세요. 코드를 아두이노에 업로드하는데 실패할 수도 있습니다. 그런 경우, 블루투스 모듈의 TX 및 RX 핀을 분리한 다음 코드를 업로드하고 다시 RX/TX 핀을 연결하세요.
- 아두이노 IDE에서 시리얼 모니터를 열어주세요
- 스마트폰에서 블루투스 시리얼 모니터 앱을 열어주세요
- 클래식 블루투스 모드를 선택하세요
HC-05 블루투스 모듈과 페어링하세요.
안드로이드 앱에서 결과를 확인하세요.
아두이노 IDE의 시리얼 모니터에서 결과를 확인하십시오.
아두이노 IDE의 시리얼 모니터와 안드로이드 앱에서 보이는 데이터가 동일하다는 것을 알게 될 것입니다.
블루투스 앱이 아두이노로 데이터를 전송합니다
아래 코드는 다음 작업을 수행합니다:
- Bluetooth 앱이 데이터를 Arduino로 전송합니다.
- Arduino가 데이터를 읽고 응답을 Bluetooth로 다시 전송합니다.
사용 방법
- 위의 코드를 복사하고 Arduino IDE로 열기
- Arduino IDE에서 Upload 버튼을 클릭하여 코드를 Arduino에 업로드하기
- Arduino IDE에서 시리얼 모니터 열기
- Android 앱을 열고 이전 예제와 유사하게 HC-05 블루투스 모듈과 페어링하기
- 연결 후, Android 앱에서 "LED ON" 또는 "LED OFF"를 입력하고 "SEND" 버튼을 클릭하기
- 아두이노는 데이터를 수신하고 시리얼 포트에 응답을 출력합니다. 이 데이터는 블루투스 앱에 전송됩니다.
- 안드로이드 앱에서 결과를 확인하세요.
아두이노 IDE의 시리얼 모니터에서 결과를 확인하세요.
아두이노 IDE의 시리얼 모니터와 안드로이드 앱에 있는 데이터가 동일하다는 것을 확인할 수 있을 것입니다.
스마트폰 앱을 통한 블루투스로 LED 제어 - 아두이노 코드
아래의 아두이노 예제 코드는 Bluetooth Serial Monitor App에서 두 가지 명령어("ON"과 "OFF")를 받아 내장 LED를 켜고 끄는 기능을 수행합니다.
Arduino controls LED via Bluetooth/BLE 튜토리얼에서 지침을 더 자세히 볼 수 있습니다.
스마트폰 앱을 통한 블루투스로 서보 모터 제어 아두이노 코드
아래의 아두이노 코드는 블루투스 시리얼 모니터 앱으로부터 각도 값을 받아 서보 모터의 각도를 제어합니다.
Arduino가 Bluetooth/BLE를 통해 Servo Motor를 제어하는 방법 튜토리얼에서 더 자세한 지침을 확인할 수 있습니다.
Bluetooth Serial Monitor 앱이 유용하다면 Play Store에서 5성급 평점을 부탁드립니다. 감사합니다!
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.