기본 콘텐츠로 건너뛰기

 

BLE란?

Bluetooth 4.0부터 새롭게 포함된 저전력 통신 기술


말 그대로 저전력 통신기술!

BLE라는 말 그대로 저전력을 최우선시하는 통신 기술로 wibree 라는 이름으로 개발되었으나 블루투스의 명성을 이용해서 빠르게 저변을 확대했다. 사실 기술적으로 블루투스와 BLE는 다른 것인데, BLE가 불루투스의 이름도 쓰며 성장했다. 

블루투스와 BLE의 기술 조합을 기준으로 Classic(BT) 과 Smart(BLE), Smart ready(BT+BLE) 로 분류된다. 

즉, Classic은 기존 블루투기술만 지원하고, Smart는 BLE만 지원하고, Smart Ready는 기존의 BT와 BLE 기술을 모두 지원한다는 뜻이다. 보통 스마트폰이나 웨어러블 기기엔 둘 다 지원되는 원칩을 사용하는데, 굳이 Smart ready라고 표현은 잘 안한다.

장단점

기존 블루투스Classic 에 비해서 전력 소모를 1/10 정도로 낮췄다고 한다. 저전력을 위해 음성 데이터 전송을 지원하지 않고 전송속도도 매우 느리다. 

저전력에 집중!!

                                    [블루투스와 BLE 스펙비교]

BLE 기술 얕게 알아보기

2가지만 기억하자

2가지 모드가 있다. Advertise(Broadcast) Mode와 Connection Mode. 매우 단순하고, 무선 통신을 아는 사람에겐 너무 친숙한 개념이다. 우리 말로 쉽게 표현한다면, 탐색 모드와 전송 모드 정도가 좋을 것 같지만 정식 명칭이 아니므로 영어를 사용하자. 이것만 알아도 큰 그림 그리는 데는 문제가 없다.

Advertise(Broadcast) Mode

두 기기가 무선 통신을 하려면 서로의 존재를 알아야 한다. 누군가는 자신의 존재에 대해서 알리는 신호 Advertising Packet를 보내고 누군가는 그것을 찾아서 연결을 시도하는 과정이 Advertise Mode에서 이루어 진다.

여기서 중요한 것이, BLE에서 Advertising Packet의 특징이 데이터가 매우 작다!

Advertising Packet신호를 하루 종일 일년 12달 자신을 알리는 신호를 쏘고 있는 것이 바로 비콘 Beacon 이다.

비콘은 상대가 받던 말던 Advertising Packet을 쏘기만 하면 되고, 최대 50m거리에서 작동 할 수 있다고 한다. 사용 환경과 제품 성능에 따라 차이가 있지만 작은 버튼 셀 배터리로도 1~2년 동안 사용할 수 있다고 한다.

비콘의 진화와 핵심 기술

비콘(beacon)은 근거리에 있는 스마트 기기를 자동으로 인식하여 필요한 데이터를 전송할 수 있는 무선 통신 장치이다.비콘 위키백과

Advertising Packet에 어떤 데이터를 어떻게 전달하는지에 대해서는 몇몇 회사에서 저마다의 규격을 정하고 이름을 붙였다. 애플에서 만든것이 iBeacon 이고, Radius Networks에서 만든 AltBeacon, 구글에서 공개한 URIBeacon 도 있다. 

물론, Advertising Packet 이 한 종류만 있는 것은 아니고, Scan Request와 Scan Response 로 추가 정보를 주고 받는 기능을 구현 할 수 있다.

Connection Mode

Advertise Mode 에서 알게 된 기기 중에 하나를 선택해서 1:1 로 연결하는 것이 Connection Mode 이다. Connection Mode 로 전환 되고 나서는 서로 타이밍을 맞춰서 데이터를 주고 받으며, 이전 모드에서 진행했던 과정은 더 이상 필요 없다. (Advertising과 Scan)


이미지 - http://microchipdeveloper.com/ble:bm70-ble-connection-states


그 뒤는, 이제 본격 적으로 데이터를 주고 받으면 된다. 어떤 데이터를 주고 받고 어떻게 다루면 되는지는 얕게 여거서는 다루지 않고, 관련 링크를 소개하는 것으로 대신 한다.

데이터 전송 속도가 워낙 느리기 때문에 실제 데이터 통신은 BT Classic을 이용하거나 WiFi기술을 이용하기도 한다.

초간단정리

  1. 블루투스랑 BLE는 원래 전혀 다른 기술이다. 블루투스를 지원한다고, BLE를 지원하는 것은 아니다!
  2. BLE는 저전력이 핵심이다! 데이터 전송 속도도 느리고, 한번에 전달하는 양도 적다!
  3. BLE는 2가지 모드가 있는데, Advertise Mode에서 Advertise Packet 신호만 쏘는 것이 비콘 Beacon이다.
  4. Connection Mode에서는 블루투와 달리 1:1로 연결된다. Peripheral and Central

댓글

이 블로그의 인기 게시물

2 files found with path 'lib/x86_64/libc++_shared.so' from inputs: 오류 해결 방법

안드로이드스튜디오로 앱을 개발하는 과정에서 플러그인, 외부 라이브러리를 추가하다 보면 "2 files found with path 'lib/ x86_64 /libc++_shared.so' from inputs: "과 같은 오류를 만날 수 있다. 'lib/x86_64/libc++_shared.so' 파일이 2개의 라이브러리에서 참조되어 발생하는 문제로 컴파일 환경에 따라 플랫폼 부분은 변경되면 나타날 수 있다 app수준의 build.gradle 파일에 다음과 같이 처리하면 관련 문제를 깔끔하게 처리 가능하다. android { ... packagingOptions { pickFirst 'lib/ x86 /libc++_shared.so' pickFirst 'lib/ x86_64 /libc++_shared.so' pickFirst 'lib/ arm64-v8a /libc++_shared.so' pickFirst 'lib/armeabi-v7a/libc++_shared.so' } ... } * 실제 내 앱소스내 코드임 * 위와 같이 컴파일 환경에서 제공하는 플랫폼별 참조를 전부 한번에 처리하는게 관련 오류를 원천 차단할 수 있는 방법이다.

안드로이드 개발자모드 활성화 방법

안드로이드 개발자 옵션 기능 (비)활성화 하는 방법을 소개드립니다. 안드로이드 기종의 스마트폰에서는 설정에 들어가보면 개발자 옵션이 있는데요. 안드로이드 스튜디로를 통한 개발 앱 배표, 스마트폰을 설정 및 테스트를 하기 위한 기능이지만 개발자 분들 뿐만 아니라 일반유 저 분들도 스마트폰의 설정을 위해서 기본적으로 사용하게 되기도 합니다. 그런데 기본적으로는 스마트폰 초기 설정에서 개발자 옵션이 숨겨져 있는데요. 설정에 들어가도 보이지 않기 때문에 별도로 활성화를 시켜야지 메뉴가 생기게 됩니다. 그럼 바로 안드로이드 개발자 옵션 (비)활성화 방법을 소개 시켜드릴게요.   안드로이드 개발자 옵션 활성화, 비활성화 ※스마트폰 실행후에 톱니바퀴 아이콘을 눌러서  설정 으로 들어가줍니다.  ※설정에서 제일 하단에 있는 개발자 옵션으로 들어갈 수가 있는데요.    활성화를 하지 않은 상태라면 휴대전화 정보가 맨 하단에 있습니다.    휴대전화 정보 를 터치를 해줍니다.                  [아직 안드로이드 개발자 옵션이 비활성화된 상태입니다.] ※ 휴대전화 정보에서는 아래의  소프트웨어 정보  메뉴를 선택해줍니다. ※ 사용하고 있는 스마트폰의 소프트웨어 정보 페이지가 나오게 되는데요.    그중에서  빌드번호 를 눌러서 개발자 옵션을 활성화 시킬 수가 있습니다.     연속으로 눌러줘야되는데요.     손가락으로 연타해서 누르게 되면 개발 설정완료 4단계 전입니다. 3단계 전입니다.    2단계 전입니다. 1단계 전입니다.라고 나오게 되고요.   ※ 마지막에  “개발자 모드를 켰습니다.” 가 나오면 활성화가 완료 된 것입니다.   ※ 이제 설정으로 들어가주시면 휴대전화 정보 밑에 개발자 옵...

안드로이드 액티비티의 시스템 UI, 뷰 영역 제어

ActivityMainBinding    activityMainBinding = ActivityMainBinding.inflate ( getLayoutInflater ( ) ); activityMainBinding.getRoot ( ).setSystemUiVisibility (    //안전한 시스템 UI 레이아웃을 유지하도록 지정    //뷰가 시스템 UI의 변경으로 인해 크기나 위치가 변해도 안정된 레이아웃을 유지할 수 있다.    View.SYSTEM_UI_FLAG_LAYOUT_STABLE |           //뷰가 내비게이션 바가 표시되는 영역까지 확장    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION      //뷰가 상태바가 표시되는 영역까지 확장    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN      //내비게이션 바를 숨겨, 사용자의 터치나 제스처로 내비게이션 바가 나타나지 않도록 한다.    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION     // 상태바를 숨겨, 사용자의 터치나 제스처로 상태바가 나타나지 않도록 한다.    | View.SYSTEM_UI_FLAG_FULLSCREEN      //사용자가 액티비티의 화면 어느 곳이든 터치하면 시스템 UI가 일시적으로 표시되지만, 일정 시간이 지나면 다시 숨겨진다.    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY ); setContentView ( activityMainBinding.getRoot ( ) ); /* 결과적으로 위 ...