이전글 - [Android App BLE] #1 개발 환경 문제 해결하기
다음을 주로 참고하여 작성하였습니다.
Bluetooth Low Energy on Android, Part 1
저는 안드로이드 앱 개발자는 아닙니다. 그저 단순한 앱 몇개 만들어 본게 다지요. 사실 이번 안드로이드 개발 시리즈글도 쓸 재주가 없는데, 마땅한 자료 검색이 안되어 하나씩 해보면서 기록하기 위해 시작합니다.
Bluetooth Classic이라고 예전부터 사용하던 블루투스 관련 앱 내용은 많이 있습니다만, Bluetooth Low Energy (BLE) 또는 Bluetooth 4.0이라고 하는 녀석에 대한 자료는 희귀합니다. 또 그중에서도 약간의 버전 차이가 있는지, 최신 내용과 맞지 않는 부분이 있었습니다.
그중에 아래와 같은 주~옥같은 글을 찾았습니다.
그냥 소스만 덩그러니 있는 것보나 이렇게 하나씩 따라 해볼 수 있게 만들어져 있는 글을 보니 너무나 기쁩니다! 이번 시리즈글은 위 내용을 많이 참고하여 설명할 거 같은 기분입니다.
Bluetooth Low Energy?
Bluetooth Low Energy라고 불리는데, 줄여서 BLE라고 하겠습니다. 블루투스의 버전별 차이는 다음표에 잘 나타나 있습니다.
출처: http://blog.naver.com/PostList.nhn?blogId=windi97
가장 큰 특징은 위 표에서도, 또 Low Energy라는 의미에서도 드러났듯이 저전력입니다. 자료에 의하면 Bluetooth Classic 대비 1/10 수준으로 소비 전력을 낮췄다고 합니다. 소비 전력이 낮아졌으니 배터리 소모가 적어지니 오랫동안 동작하는 장치의 통신에 많이 쓰이게 됐습니다. 또 다른 특징은 기존의 클래식에서는 데이터와 음성 모두 지원했는데, BLE에서는 음성지원은 안되고 데이터만 지원됩니다.
- 전력을 1/10, 1/100 수준으로 낮춤
- 데이터만 지원함
찾다보니 보다 상세하게 비교해 놓은 자료가 있어서 공유합니다.
출처: http://www.chipsen.com/
BLE 관련하여 새로운 용어들이 참 많이 나옵니다. 아래 자료가 매우 잘 정리되어 있으니 참고하시면 되겠습니다.
Bluetooth Low Energy(BLE) 파헤치기
여기서는 BLE 개념 정립보다는 개발에 초점을 맞추겠습니다. 특히 개발하면서 발생하는 문제점들을 해결하는데 초점을 맞추려고 합니다. 사실 BLE의 개념을 알고서 개발해도 되지만, 모른채로 개발동 가능합니다. 선택의 문제겠지요.
BLE 용어 및 개념
BLE관련 용어를 몇 개 짚어 보려고 합니다. 특히 개발과 관련하여 개념 정립이 필요한 내용 위주로 정리해 보겠습니다.
Peripheral 과 Central
출처: https://blog-kr.zoyi.co/bluetooth-low-energy-ble/
우리는 주로 스마트폰을 이용해서 블루투스 장치에 접속합니다. 여기서 스마트폰이 Central이 되고, 블루투스 장치가 Peripheral, 즉 주변장치가 됩니다. 한가지 짚고 넘어갈 부분은 주변장치가 서버 역할을 하고, Central이 Client 역할을 합니다. 얼핏 생각하면 이상해 보이지만, 주변장치가 서비스를 제공하는 서버의 역할을 합니다. 예를 들어 온도 센서와 같은 주변장치는 스마트폰이 온도 정보를 요청하면 온도값을 제공하게 됩니다. 나중에 코딩할 때도 이와 같이 주변장치를 서버로, 스마트폰을 클라이언트로 간주하고 진행할 것입니다.
주요 용어들
참고: https://medium.com/@avigezerit/bluetooth-low-energy-on-android-22bc7310387a
출처: https://www.bignerdranch.com/blog/bluetooth-low-energy-part-1/
- Generic Attribute Profile (GATT) - Generic Attribute Profile to define how to exchange data using predefined attributes.
- 가트. BLE에서 데이터 송수신을 위한 특성 프로파일. 하나의 장치는 여러 프로파일을 가질 수 있음.
- Central: the Computer/Tablet/Mobile device, also referred as GATT client. Scans, requests and uses the data given by the peripheral.
- 센트랄. GATT 클라이어트로 스마트폰이나 태블릿을 가리킴. 서버가 제공하는 데이터를 요청하고 사용하는 주체
- Peripheral: the device broadcasting the data, also referred as GATT server. The data is structured as definitions of how to interact with it’s ‘database’.
- 주변장치. 주로 센서와 같은 장치로 데이터를 브로드캐스팅하는 장치. GATT 서버가 됨.
- Characteristics: definition of the data divided into declaration and value. Using permission properties (read, write, notify, indicate) to get a value.
- 특성. 데이터를 읽거나 쓰거나 알림등 데이터 통신을 위한 특성 정의. 만약 장치가 쓰기 특성을 제공하지 않으면 쓰기 기능을 사용할 수 없음.
- Services: set of provided features and associated behaviors to interact with the peripheral. Each service contains a collection of characteristics.
- 서비스. 특성들의 집합.
- Descriptor: an optional attribute nested in a characteristic that describes the specific value and how to access it.
- 디스크립터. 특성안에서 설정하는 부가적인 특성.
- UUID: Universally Unique ID that are transmitted over the air so a peripheral can inform a central what services it provides.
- 범용 고유 번호. 기기들의 고유 번호를 나타내는 것과 다른 의미임. 여기서는 장치가 제공하는 특성들마다 고유의 ID를 부여하여 통신하는데 사용되는 개념임.
어째 오늘은 개발은 안하고 개념만 알아봤네요. 그래도 개발을 하는데 최소한의 도움은 되리라고 봅니다. 그럼 다음은 권한 설정 및 화면 구성을 알아보겠습니다.
오늘의 실습: BLE에 대해서 구글링 해보세요.