아두이노 - BLE | Arduino - BLE
이 튜토리얼에서는 다음을 배우게 됩니다:
- 아두이노에서 Bluetooth Low Energy (BLE) 기술을 사용하는 방법
- BLE을 통해 아두이노에서 스마트폰 앱으로 데이터를 보내는 방법
- BLE을 통해 스마트폰 앱에서 아두이노로 데이터를 받는 방법
- BLE을 통해 스마트폰 앱에서 아두이노를 제어하는 방법
이 튜토리얼의 범위:
- 아두이노와 스마트폰 앱 간의 BLE를 통한 데이터 교환. 두 아두이노 간의 BLE를 통한 통신은 다른 튜토리얼에서 다룰 예정입니다.
- 널리 인기 있는 HM-10 블루투스 저에너지 모듈의 사용.
- 안드로이드에서 Bluetooth Serial Monitor 앱의 시연, 그러나 어떤 안드로이드/iOS 앱도 사용할 수 있습니다.
- 스마트폰 앱을 통한 아두이노에 연결된 다양한 장치의 제어, 예시로는 LED와 서보 모터가 포함됩니다.
이 튜토리얼은 특히 블루투스 로우 에너지(BLE, 블루투스 4.0)에 대해 다루고 있음을 알려드립니다. 클래식 블루투스(블루투스 2.0)에 대한 정보를 찾고 계시다면, 비슷한 튜토리얼 아두이노 - 블루투스를 참고해 주세요.
준비물
1 | × | Arduino Uno | Amazon | |
1 | × | USB 2.0 cable type A/B | 쿠팡 | Amazon | |
1 | × | HM-10 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 |
HM-10 블루투스 모듈에 대하여
HM-10은 시리얼을 블루투스 저에너지로 변환하는 기능을 하는 시리얼 BLE 모듈입니다. 다음과 같은 작업을 수행합니다:
- 시리얼 RX 핀에서 데이터를 받아 BLE를 통해 스마트폰과 같은 짝이 맞는 장치로 전송합니다.
- BLE에서 데이터를 받아(짝이 맞는 장치로부터) 시리얼 TX 핀으로 보냅니다.
특히, 아두이노를 사용하여 스마트폰 앱(안드로이드/iOS)과 통신할 때 다음과 같은 일이 발생합니다:
- 아두이노는 시리얼/소프트웨어시리얼 핀을 통해 HM-10 블루투스 모듈에 연결합니다.
- HM-10 블루투스 모듈은 스마트폰 앱과 페어링됩니다.
- 아두이노는 시리얼/소프트웨어시리얼로 데이터를 보내 스마트폰 앱에 데이터를 전송합니다.
- 아두이노는 시리얼/소프트웨어시리얼에서 읽어 스마트폰 앱으로부터 데이터를 받습니다.
- 아두이노에서 추가적인 BLE 코드는 필요하지 않습니다.
핀아웃
HM-10 BLE 모듈에는 6개의 핀이 있습니다:
- BKR 핀: 모듈의 동작을 제어하는 핀입니다. 초보자라면 이 핀은 무시하세요.
- RX 핀: 직렬 데이터 핀으로, 이 핀을 아두이노의 TX 핀에 연결하세요. 이 핀에서 받은 데이터는 Bluetooth로 전송됩니다.
- TX 핀: 직렬 데이터 핀으로, 이 핀을 아두이노의 RX 핀에 연결하세요. BLE를 통해 수신된 데이터는 직렬 데이터로서 이 핀을 통해 전송됩니다.
- GND 핀: 전력 핀으로, 이 핀을 전원 소스의 GND에 연결하세요.
- VCC 핀: 전력 핀으로, 이 핀을 공급 전압의 3.3V에 연결하세요.
- STATE 핀: 작동 상태를 나타냅니다:
- 대기 모드에서 깜박임 - 500ms 펄스 반복;
- 연결 상태에서 켜짐 - 고 수준.
- 우리는 오직 4개의 핀을 사용해야 합니다: VCC, GND, RX, TX
- 일부 제조업체들은 단 4개의 핀만으로 HM-10을 생산합니다.
※ NOTE THAT:
블루투스 시리얼 모니터 앱에 대하여
Bluetooth Serial Monitor 앱은 Arduino IDE의 시리얼 모니터 모습을 모방한 모바일 애플리케이션입니다. Arduino 스케치에 추가 코드 없이 Arduino 보드와 Bluetooth를 통한 통신을 가능하게 합니다. 사용하기 위해서는 다음 단계를 따르세요:
- 아두이노를 HM-10 블루투스 모듈에 연결하세요.
- 스마트폰에 블루투스 시리얼 모니터 앱을 다운로드하고 설치하세요.
- 앱을 열고 HM-10 블루투스 모듈에 연결하세요.
이러한 단계를 완료하면, 기존 아두이노 코드를 수정하거나 블루투스 특정 코드를 추가할 필요 없이, 아두이노 IDE의 시리얼 모니터를 사용하는 것처럼 아두이노에서 데이터를 보내고 받을 수 있습니다.
선연결
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
배선 테이블
Arduino Pins | HM-10 Bluetooth Pins |
---|---|
RX (Pin 0) | TX |
TX (Pin 1) | RX |
5V | VCC |
GND | GND |
BKR (NOT connected) | |
STATE (NOT connected) |
※ NOTE THAT:
아두이노 코드는 Serial 객체를 Serial1, Serial2 또는 SoftwareSerial(사용 가능한 경우)과 같은 대안으로 교체함으로써 다른 핀을 사용할 수 있습니다.
블루투스 프로그래밍 방법
전문적인 블루투스 코드가 필요하지 않고, 시리얼 코드만 필요합니다.
아두이노가 스마트폰의 블루투스 앱으로 데이터를 전송합니다
아두이노 보드에서 스마트폰의 블루투스 앱으로 데이터를 전송하려면 다음의 아두이노 코드를 사용할 수 있습니다. 이 예제는 아두이노에서 스마트폰 앱으로 매 초마다 "Arduino here, command me!"라는 메시지를 보내는 것을 보여줍니다.
사용 방법
코드를 사용하고 아두이노 보드를 BLE를 통해 스마트폰에 연결하려면 다음 단계를 따르세요:
- 스마트폰에 블루투스 시리얼 모니터 앱을 설치하세요.
- 제공된 배선도에 따라 HM-10 블루투스 모듈을 아두이노 보드에 연결하세요.
- 아두이노 IDE를 열고, 위에 제공된 코드를 복사한 다음 아두이노 보드에 업로드하세요. 코드를 업로드할 수 없는 경우, 블루투스 모듈에서 TX 및 RX 핀을 분리한 후 코드를 업로드하고 다시 RX/TX 핀을 연결하세요.
- 아두이노 IDE에서 시리얼 모니터를 엽니다.
- 스마트폰에서 블루투스 시리얼 모니터 앱을 열고 BLE 모드를 선택하세요.
스마트폰을 HM-10 블루투스 모듈과 페어링하세요.
안드로이드 앱에서 결과를 관찰하세요.
아두이노 IDE의 시리얼 모니터에서 결과를 관찰하세요.
단계를 따르고 코드를 실행하면, 아두이노 IDE의 시리얼 모니터와 안드로이드 앱에 표시되는 데이터가 일치하는 것을 관찰할 수 있습니다.
블루투스 앱이 아두이노로 데이터를 전송합니다
아래 코드는 다음 작업을 수행합니다:
- 블루투스 앱에서 아두이노 보드로 데이터를 보내세요.
- 아두이노 보드는 수신된 데이터를 읽은 다음 블루투스 기기로 응답을 보냅니다.
사용 방법
아두이노와 안드로이드 앱에서 코드를 사용하는 방법은 다음과 같습니다:
- 아두이노 IDE를 열고 위에 제공된 코드를 붙여넣으세요.
- Upload 버튼을 클릭하여 코드를 아두이노 보드에 업로드하세요.
- 아두이노 IDE에서 시리얼 모니터를 엽니다.
- 안드로이드 앱을 열고 이전 예제에서 제공된 지침을 사용하여 HM-10 블루투스 모듈과 페어링하세요.
- 연결되면, 안드로이드 앱에서 "LED ON" 또는 "LED OFF"를 입력하고 "SEND" 버튼을 누르세요.
아두이노 보드는 데이터를 받아 시리얼 포트에 응답을 출력할 것입니다. 이 데이터는 블루투스 앱으로 전송될 것입니다.
안드로이드 앱에서 결과를 확인하세요.
아두이노 IDE의 시리얼 모니터에서 결과를 확인하세요.
위의 단계를 완료하면 아두이노 IDE의 시리얼 모니터와 안드로이드 앱에 표시되는 정보가 같다는 것을 알게 될 것입니다.
스마트폰 앱을 통한 BLE로 LED 제어를 위한 아두이노 코드
다음 아두이노 예제 코드는 블루투스 시리얼 모니터 앱을 통해 받은 “ON” 및 “OFF” 명령을 사용하여 내장 LED를 켜고 끕니다.
Arduino가 블루투스/BLE를 통해 LED를 제어하는 방법 튜토리얼에서 더 자세한 지침을 확인할 수 있습니다.
아두이노 코드 - 스마트폰 앱을 통한 BLE로 서보 모터 제어
다음 아두이노 코드는 블루투스 시리얼 모니터 앱에서 각도 값을 받아 서보 모터의 각도를 제어합니다.
Arduino controls Servo Motor via Bluetooth/BLE 튜토리얼에서 더 자세한 지침을 볼 수 있습니다.
Bluetooth Serial Monitor 앱이 유용하다면 Play Store에서 별 5개를 부탁드립니다. 감사합니다!
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.