반응형

아두이노에서 블루투트 4.0을 사용한다고 하면 보통 HM-10이나 HM-01의 복제품들(AT-09)을 사용하게 되고 가장 맣이 사용하는 연결 장비로는 스마트폰을 꼽을 수 있다. 

 

블루투스 4.0과 블루투스 클래식(또는 2.0)은 작동방식에 있어 차이가 있다. 

 

더나아가 스마트폰에 연결하는 과정에 있어 사용자에게 혼란을 줄수 있는 한가지 사항이 있다. 

블루투스 4.0 BLE 모듈을 처음 접하고 스마트폰에서 기존 블루투스 2.0의 방식으로 연결을 시도했을 때 연결이 잘 되었다면 사용자는 무슨 차이가 있는지 조차 모를 것인데... 기존 방식으론 실상 연결이 안되는 것처럼 보인다. 

 

블루투스 4.0과 블루투스 클래식(또는 2.0)의 스마트폰 연결에 있어 기본적인 차이는 블루투스 2.0(클래식)은 반드시 페어링을 통해 스마트폰과 연결이 되어야 하고 블루투스 4.0 BLE는 기본적으로 페어링 없이 연결을 지원한다는 것이다. 이 부분이 혼란을 주는 원인이다. 

 

스마트폰에 기본으로 설치되어 있는 블루투스 프로그램은 스마트폰의 블루투스를 켜는 기능, 외부 블루투스를 검색하는 기능, 그리고 검색된 블루투스와 페어링을 통해 연결하는 기능이 있다.  

 

위에서 블루투스 4.0 BLE는 페어링 없이 연결을 지원한다고 언급했다. 이게 의미하는 것은 불특정 다수가 연결을 하여 무언가(데이터를 받는 다든지 등)를 할 수 있다는 것이다. 

 

장치 옵션 및 성능에 따라 동시에 여러명이 접속할 수도 있고, 접속은 한명만 가능하지만 특정 사용자의 접속만 허락하는게 아닌 불특정 다수의 접속을 허락한다. 이러한 특징이 페어링 없이 연결 됐을 때 가능한 일들이다. 하지만 블루투스 4.0 BLE를 처음 접한 사용자는 기존의 블루투스 2.0 연결 방식에 익숙하여 스마트폰 블루투스 장치 연결 프로그램으로 검색하고 연결을 시도하게 된다. 이 떄 블루투스 4.0은 기본모드인 페어링 없이 연결로 설정 되어 있을 것이어서 페어링 통한 연결을 시도하는 프로그램의 연결을 차단하게 되고, 스마트폰 블루투스 연결 프로그램에는 장치에 의해 연결이 거부되었다는 메시지가 표시되게 되는 것이다. 그렇다면 블루투스 4.0 BLE는 페어링을 통한 연결이 안되는 것일까? 이는 모듈에 따라 비밀 번호가 있는 페어링을 통한 연결을 지원할 경우 가능하고 지원하지 않는 경우는 불가하다. 

 

필자가 보유하고 있는 AT-09의 경우는 페어링을 통한 연결은 불가하다. 

 

설명을 좀 더 단순화하여 살펴보겠다.

 

블루투스 2.0 연결

스마트폰 장치 켜기 - 외부 블루투스 검색 - 검색된 블루투스와 페어링(비밀번호 유/무) - 사용앱에서 블루투스 연결

 

블루투스 4.0 연결 

1. 블루투스 4.0 BLE의 설정이 페어링 없이 연결인 경우(기본 설정)

a. 스마트폰 장치 켜기 - 외부 블루투스 검색 - - 검색된 블루투스와 페어링 시도 - 오류 메시지 표시

b. 스마트폰 장치 켜기 - 사용앱에서 블루투스 4.0 BLE만 검색 - 블루투스 연결 

 

2. 블루투스 4.0 BLE의 설정이 비밀번호 이용 페어링 연결인 경우(특정 사용자 한명만 사용)

a. 스마트폰 장치 켜기 - 외부 블루투스 검색 - 블루투스4.0과 비밀번호 사용 페어링 - 사용앱에서 검색 불가

b. 스마트폰 장치 켜기 - 사용앱에서 블루투스 4.0 BLE만 검색  - 블루투스와 비밀번호 사용 페어링 - 블루투스 연결

 

 

 

 

 

블루투스 4.0 BLE의 비밀번호 사용 페어링의 경우 기존에 사용하던 블루투스 2.0과 같이 스마트폰 블루투스 장치 프로그램을 통해 연결을 할 수 있다(2-a의 경우). 하지만 연결되는 순간 블루투스 4.0 BLE 모듈은 장치의 연결을 위한 advertising기능을 중지하게 되고 이는 사용앱에서 블루투스 4.0 BLE 장치의 검색을 불가하게 만들어 정작 앱에서는 연결을 할 수 없게 된다.  

 

모듈에 따라 advertising 여부를 설정하는 옵션이 있을 수 있으나 특정 사용자 한명만 지속적인 연결을 하는 상황에서 다른 사용자가 접속할 수 있도록 advertising 한다는 것 자체는 이치에 맞지 않게된다.

 

다시 한번 언급하지만, 블루투스 4.0 BLE는 블루투스 2.0의 기능을 향상시킨 업그레이드 버전이 아니라 사용 용도가 다른 별개의 제품으로 취급해야 한다. 

 

블루투스 2.0은 사용자 한명의 지속적인 연결과 데이터 전송 및 수신을 목적으로 하였다면 블루투스 4.0 BLE는 불특정 다수의 단속적인 연결, 즉 데이터 전송 및 수신 시에만 연결하고 다음 사용자를 위해 연결을 끊는데 적합하게 만들어 졌다. 이렇게 함으로써 배터리로 구동되는 장치의 경우 전력 소모를 줄일수 있게된다. 하지만 한번에 전송할 수 있는 패킷의 양도 극도로 줄여놓았다(20byte 임, 모듈의 펌웨어에 따라 다를 수 있음).

 

"potentiometer control"이라는 스트링을 한번에 보내지 못하고 20 바이트인 "potentiometer contro" 까지 보내고 "l"을 나누어 보내게 된다. 

 

자체 배터리가 아닌 외부 전원을 사용하는 환경과 같이 블루투스 모듈의 전력 소모가 큰 문제가 되지 않는 상황이라면, 사용자 한명의 지속적인 연결을 위해서는 블루투스 2.0(클래식) 모듈이 더욱 적당하다고 할 수 있다. 

 

블루투스 4.0 BLE의 비밀번호를 사용한 페어링 연결은 불특정 다수의 접속을 차단하고 허용된 사용자만 이용할 수 있도록 하기 위함이다. 하지만 이 기능은 블루투스 4.0 BLE의 특징인 불특정 다수의 접속을 허용하는 기본적인 기능에 추가적인 기능으로 봐야 할 것이다. 따라서 모듈에서 지원을 해줘야 사용할 수 있는 기능이고 사용자는 사용 용도에 맞게 필요한 기능을 지원하는지 모듈 구입전에 충분히 살펴 보는게 필요하다.  

 

필자가 테스트한 비밀번호 사용한 블루투스 4.0 BLE와의 연결은 Esp32 Dev 보드의 블루투스 BLE 기능을 사용 하였다. 

 

HM-10은 모듈이 없어 테스트 해보지 않았으나 만약, 비밀번호 페어링이 지원 된다면 ESP32 BLE의 비밀번호 페어링과 같은 방식이 될거 같다.

 

아래 동영상에서 블루투스 2.0 연결과 블루투스 4.0 오류 메세지 및 연결의 차이를 확인 할 수 있다.

 

BLE 연결시 아래 블루투스 BLE 앱을 사용하였다. 

arduino bluetooth controller PWM - 아두이노 원격제어 안드로이드 앱 버전 3.5 다운로드

arduino bluetooth controller PWM 매뉴얼

안드로이드 버전업에 따라 안드로이드 특정버전에서만 와이이파이 및 블루투스 연결이 가능합니다.

(*** 와이파이 연결은 안드로이드8 [갤럭시S7]이하 버전에서만 작동합니다 ***)

(*** 블루투스 연결은 안드로이드10 이하 버전에서만 작동합니다 ***)

 

1. HC-06이용 블루투스 2.0 연결 및 페어링

 

 

2. AT-09 블루투스 4.0 BLE 모듈의 블루투스 2.0 연결방식 사용시 오류 메세지

 

 

3. AT-09 블루투스 4.0 BLE 모듈의 연결 및 아두이노 원격제어 시연

 

 

4. 블루투스 4.0 BLE의 비밀번호 연결 페어링 시연를 위한 ESP32 BLE의 일반 연결

 

 

5. ESP32 BLE의 비밀번호 페어링 연결

 

 

상기 영상에서 비밀번호 이용 페어링의 경우 한번 페어링이 되고 나면 스마트폰이 ESP32에 등록되고 재 연결시 비밀번호를 묻지 않고 연결되었다. 

 

블루투스 4.0 BLE는 우선 연결이 되면 접속을 위한 장치명의 노출(advertising)을 끄게되고, 다른 사용자가 검색시 장치명이 노출이 안되게 된다. 이는 모듈에 따라 또는 옵션 설정에 따라 그 여부가 결정이 되게 되며, 이러한 기능 때문에 사용앱에서 블루투스 4.0 BLE의 장치명이 노출되지 않을 수 있다. 따라서  블루투스 4.0 BLE의 경우 사용앱에서 블루투스 장치를 켜고 검색후 연결하는게 가장 좋을거 같다.  

 

* ESP32 보드의 블루투스는 HM-10계열의 모듈과 다르게 자체에 기능이 내장되어 있어, AT 명령어 기능이 없고 자체 라이브러리를 통해 옵션등을 설정해 주어야 한다. 아두이노 IDE 환경에서 코딩시 상기 보드의 라이브러리가 블루투스 BLE의 비밀번호 사용 연결에 대해 공식 지원하는 것은 아니다(ESP-IDF 환경에서는 지원하는듯 하다). 

 

최신 업데이트 유료앱

https://postpop.tistory.com/175

 

ADUCON - Arduino wireless remote control application

Arduino remote control app using a wireless module available in Arduino. Bluetooth 2.0 Classic / 4.0 BLE : HC-05, HC-06, HM-10, AT-09, BT05, ESP32, etc. Wi-Fi : ESP01, ESP8266 NodeMcu, ESP32, etc. https://play.google.com/store/apps/details?id=com.tistory.p

postpop.tistory.com

 

 

관련 글

[arduino] - 블루투스 4.0 BLE, 스마트폰 연결과 페어링(pairing), AT-09

[arduino] - 블루투스 4.0 BLE 기초 용어

[arduino] - 블루투스 4.0 BLE 이용 아두이노 및 ESP32 원격제어

[arduino] - ESP32 블루투스 4.0 BLE, 비밀번호(pin code) 이용 페어링 연결

 

 

+ Recent posts