[블루투스 이용한 IoI 기술 동향(1)] 블루투스 4.2 기술의 전망
[블루투스 이용한 IoI 기술 동향(2)] 안드로이드에서의 블루투스 기술 및 방향
ⓒGetty images Bank
안드로이드에서의 블루투스 기술 및 방향
<그림 1>은 안드로이드에서 지원하는 블루투스 BLE의 기술에 대한 그림이다.
그림 1. 안드로이드 운영 체제에서 지원하는 블루투스 기술
웨어러블 장치들에 있어서 가장 중요한 요소는 착용하기 편하고 오래 사용할 수 있어야 한다. 안드로이드 운영 체제에서는 이를 위해서 블루투스 스마트 레디라는 기술을 정식으로 탑재하게 됐다. 주요 기술적인 특징을 살펴보면 다음과 같다.
- 극히 적은 피크전력, 평균전력 및 대기전력
- 동전 모양의 배터리로 수년간 작동할 수 있는 역량
- 저비용
- 다수 업체 간의 상호호환성
- 길어진 송수신 거리
안드로이드 운영 체제에서는 기존의 지원 방식과 마찬가지로 블루투스 저전력 기술을 이용하기 위해 android.hardware.bluetooth_le라는 설정으로 사용할 수 있도록 기능을 제공하고 있다.
마찬가지로 manifest 파일에서의 설정 방법
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />
[리스트 1. 블루투스 사용 설정]
블루투스 스마트 레디 혹은 블루투스 LE(Low Energy) 버전을 사용하기 위해서는 기존 블루투스 사용 방법과는 다르게 새로운 BluetoothManger를 클래스를 통하여 접근하게 된다. BluetoothAdapter를 통해 안드로이드 장치에 연결된 블루투스 LE 장치들을 찾아내고 연결하게 된다.
final BluetoothManager bluetoothManager =
(BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
mBluetoothAdapter = bluetoothManager.getAdapter();
[리스트 2. 블루투스 매니저의 생성]
startLeScan()을 통해 블루투스 장치들을 검색하고 검색된 장치에 대해서는 BluetoothAdapter.LeScanCallback을 통하여 세부 동작들을 구현하게 된다.
AVRCP 1.3 프로파일
블루투스 스피커와 같은 장치들이 인기를 끌고 있고 마찬가지로 블루투스를 통한 멀티미디어에 대한 강화 형태로 AVRCP 1.3이 탑재됐다. 미디어 장치의 재생 제어, 작곡자 및 미디어에 대한 메타 데이터 관리를 할 수 있도록 지원하고 있다.
프로파일
4.3 버전에서 가장 큰 변화라고 하면 다중 사용자에 대한 지원일 것이다. PC처럼 주 사용자와 게스트 사용자를 구분하고, 사용자에 따라 사용할 수 있는 앱과 권한을 제한할 수 있다는 것이다. 이러한 점은 앱 개발 시에도 사용자 프로파일에 따라 작업할 수 있는 권한을 제한할 수 있는 기능을 프로그래밍 할 수 있다는 점이다.
제한된 프로파일에 대한 접근 제어는 [리스트 3]와 같은 설정을 통해 접근하게 된다.
<application ...
android:restrictedAccountType="com.example.account.type" >
[리스트 3. 제한된 프로파일에 대한 접근]
앱 내부에서 프로파일에 따른 기능 제한을 하기 위해서는 현재 프로파일에 대해 제약 사항을 검사하고 특정 기능이 동작하지 않도록 구성할 수 있다.
UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE);
Bundle restrictions = um.getUserRestrictions();
if (restrictions.getBoolean(UserManager.DISALLOW_MODIFY_ACCOUNTS, false)) {
// 기능 제한 코드를 추가
}
[리스트 4. 프로파일 제한에 따른 프로그래밍]
위치정보 및 센서
위치정보는 현재 앱 구조에 있어 중요한 역할을 하고 있다. SNS, 체크인, 건강 관리 앱에서의 활동량 측정. 위치 정보의 활용과 정확성을 위해 다음과 같은 기능들을 강화하고 있다.
지오팬싱(geofencing) : 말 그대로 가상의 울타리를 구성하는 기능으로 앞으로 많은 활용이 기대되는 기능이다. 현재는 소프트웨어적으로 구현되고 있으며 안드로이드에서 하드웨어적으로 지원하여 소모 전류를 줄일 수 있는 기능을 제공하고 있다.
그림 4. 위치정보 제공에 대한 그림
와이파이 검색 모드
GPS를 통해 위치 정보를 찾지만 대도시 실내에서는 쉽지 않고 그것을 보완하기 위해 나온것이 와이파이를 이용한 위치 검색법이다. 이러한 기능을 강화하기 위해 와이파이에 접속하지 않고 검색된 정보를 통해 위치를 추적할 수 있는 기능을 제공하고 있다.
그림 5. 지오팬싱의 개념 그림
구글의 Eddystone
Google의 Eddystone은 크게 하드웨어 데이터 규격과 구글에서 제공하는 Beacon Server-side 플랫폼 두 가지로 구분할 수 있다. <그림 6>과 <그림 7>을 보면 Eddystone에서 추구하는 서비스의 대략적인 그림을 볼 수 있다. 애플의 iBeacon에 대응하는 비콘과 비콘 서비스라고 볼 수 있다.
그림 6. 구글의 eddystone의 서비스 개략도를 표시한 그림
그림 7. 구글의 eddystone의 서비스 개략도를 표시한 그림
<그림 8>은 구글의 Eddystone 서비스의 내부 동작 방식 및 서비스 방식에 대한 내부 구조도다. 애플의 iBeacon과 마찬가지로 Eddystone에서 전달된 정보를 바탕으로 서버와 연동하여 정보를 전달해주는 구조로 구성된다.
그림 8. 구글 Eddystone의 서비스 구조 및 내부 동작 그림
구글의 Eddystone은 크게 하드웨어 데이터 규격과 구글에서 제공하는 Beacon Server-side 플랫폼 두 가지로 구분할 수 있다.
하드웨어 측면에서 살펴보면, iBeacon은 공식적으로 iOS에서 지원하는 Beacon의 Advertising Data 규격이다. Eddystone은 Android와 iOS를 모두 지원하는 Open Protocol이다. 또한 세 가지의 데이터 패킷(Data Packet)을 지원하고 있다. 하지만 동작하는 방식은 동일하고 전달하는 데이터의 차이만 있다고 보면 되겠다.
Eddystone은 iBeacon과 비슷하게 비콘 ID를 기반으로 한 Eddystone-UID와 URL을 애드버타이징해 기존의 콘텐츠를 바로 볼 수 있도록 하게 하는 URL 방식, 비콘 내부에 있는 센서 정보와 배터리, 송신 상태 등을 모니터링할 수 있게 데이터 값을 실어보내는 Eddystone-TLM(Telemetry) 모드를 지원하고 있다.
Eddystone - UID(Frame Type 0x00)
iBeacon의 ID 영역은 총 20bytes(UUID 16 bytes, Major, Minor ID 각 2bytes)로 되어 있지만 Eddystone의 UID는 총 16bytes이며 두 영역으로 나뉘어 있다. Namespace는 UUID와 비슷하며 10bytes로 구성되어 있으며 기존의 UUID를 활용하여 사용 가능하다. UUID의 총 16bytes에서 가운데 6bytes를 제외하고 앞과 뒷부분을 붙여주어 사용한다.
UUID : 8B0CA750-E7A7-4E14-BD99-095477CB3E77 중 가운데 3영역 E7A7-4E14-BD99를 제외하면 B0CA750095477CB3E77가 된다. 나머지 6bytes는 Instance로 iBeacon의 Major와 Minor ID처럼 비콘을 구별하는 데 사용된다.
Eddystone - URL
iBeacon은 비콘의 ID를 활용하여 필요한 콘텐츠를 이미 설치되어 있는 스마트폰의 앱을 통해 전달하도록 되어 있는 반면 웹 페이지의 URL을 그대로 전달하여 웹브라우저를 통해 추가적인 앱 설치 없이 정보를 볼 수 있게 하는 장점이 있다. 이러한 URL을 브로드캐스팅할 수 있게 Eddystone에서도 URL 형식을 지원한다. ID 대신 URL scheme과 17bytes의 압축된 URL을 전달하게 된다.
UID와 URL 모드에서 공통적으로 RSSI를 통한 거리측정의 기준이 되는 측정된 Tx값을 보내게 되는데 iBeacon은 1m에서 측정된 RSSI 값을 보내게 되지만 Eddystone은 0m에서 측정한 값을 보내고 있다.
그림 9. BLE를 이용한 IoT 시스템의 구현
Eddystond - TLM
기존의 다른 비콘 모드와는 달리 TLM 모드는 실제 데이터를 실어 보내게 된다. 현재 규정된 데이터 필드는 배터리의 전압과 비콘 내부에 설치된 온도 센서의 온도 정보, 비콘의 동작(리셋) 이후 패킷이 전송되는 횟수, 비콘의 동작(리셋) 이후 0.1초 단위의 시간이 있다.
Nearby API는 Nearby Message API와 Nearby Connections API로 나뉘는데, 이중 Beacon의 애드버타이징 데이터(Advertising Data)를 전달받기 위해서 Nearby Message API를 사용하게 되며 해당 규격은 아직까지 공개되지 있지 않다. 해당 API를 지원하는 안드로이드상의 기능은 플레이스토어 서비스(Play Store service)가 7.8로 업데이트돼야 가능하다고 한다. 하지만 이는 새롭게 출시되는 단말기부터 지원하는 것이 아니라 기존의 안드로이드 버전에서도 해당 모듈만 업데이트되면 가능하므로 오픈 이후 빠른 시간 내에 적용 모델이 늘어날 것으로 예상된다.
Nearby connections API는 주로 같은 로컬 네트워크상의 디바이스들과 연결하여 멀티 게이밍(Multi Gaming)과 같은 기능을 제공하기 위해 사용한다.
Proximity Beacon API는 Eddystone 플랫폼의 일부로 비콘을 등록하고 관리하고 업데이트하기 위한 기능들을 제공하며 REST(Representational State Transfer) 인터페이스를 사용한다.Proximity Beacon API를 이용하여 등록된 비콘의 정보는 클라우드에 저장되며 아래와 같은 meta data를 포함한다.
•Advertised ID (required).
•Status.
•Expected stability.
•Latitude and longitude coordinates.
•Indoor floor level.
•Google Places API Place ID.
•Freeform text description.
또한 Proximity Beacon API를 이용하여 1024byte까지의 데이터를 첨부시키거나 기존에 첨부된 데이터를 이용할 수 있다.
마지막으로 Eddystone - TLM 를 통해 기록된 아래 정보들을 활용해 비콘의 상태를 모니터링고 아래와 같은 상황을 알려주기도 한다.
•배터리 레벨.
•전송된 패킷 수
•비콘의 동작 시간
•비콘의 온도 혹은 측정된 실내 온도
•잔여 배터리량
•설치된 위치로부터 벗어났을 경우에 대한 정보
•비정상적인 동작 정보
이런 Proximity Beacon API를 사용하기 위해서는 구글 계정이 있거나 새로 가입해야 한다.
BLE를 이용한 IoT의 구현
ULP(Ultra Low Power) RF 전문기업인 노르딕 세미컨덕터(Nordic Semiconductor, www.nordicsemi.com)는 IPv6 기반의 인터넷 프로토콜 솔루션인 nRF51 IoT SDK를 이용하여 블루투스를 이용한 IoT 장비를 개발할 수 있도록 지원하고 있다.
물론 다른 업체들도 BLE를 사용한 IoT 장비 개발을 위한 소프트웨어 개발 도구를 릴리스하고 있다.
블루투스 SIG(Bluetooth SIG)에서 이번에 새롭게 발표한 IPSP(Internet Protocol Support Profile)와 IETF(Internet Engineering Task Force)의 6LoWPAN 기술을 활용한 이 SDK는 종단간 IP 기반 통신을 가능하게 함으로써 노르딕의 nRF51 시리즈 블루투스 스마트(Bluetooth® Smart)와 IoT를 구현할 수 있도록 한다는 것이다.
이러한 솔루션은, 지금까지 서비스와 기기 간의 직접적인 통신이 가능해졌지만 서로 인지하는 데 문제가 있었던 스마트 홈, 산업 및 엔터프라이즈 자동화 애플리케이션, 물류 및 액세스 제어, 클라우드 서비스 등과 관련된 대규모, 분산형 클라우드-연결, 이종 네트워크 간의 구축을 가능하게 한다는 점에서 의미가 크다.
IP는 그 자체로 블루투스 스마트 지원 기기(Thing)가 ‘헤드리스 라우터(Headless Routers: 별도의 프로파일을 사용할 필요 없이 IPv6를 통해 직접 연결되는 방식의 라우터)’와 인터넷을 통해 서로 통신할 수 있음을 의미하며, 또한 블루투스 스마트 지원 기기(Thing)가 와이파이나 이더넷, 지그비(ZigBee), 스레드(Thread)와 같은 다른 IPv6-지원 유무선 기술을 이용해 이종 네트워크 형태로 통신할 수 있음을 의미한다.
프록시 또는 전용 인터넷 게이트웨이 브리지 기반의 다른 IoT 솔루션과 달리, nRF51 IoT SDK는 전적으로 개방형 표준에 기반하고 있고, 기기(Thing) 간의 IP 어드레스를 확장하기 때문에 헤드리스 라우터를 가능하게 한다.
이번에 발표된 버전의 프로토콜 스택은 IPSP 및 6LoWPAN 적용 레이어, IPv6 인터넷 라우팅 레이어, UDP(User Datagram Protocol), TCP(Transmission Control Protocol), 전송 레이어, CoAP(Constrained Application Protocol), MQTT(Message Queuing Telemetry Transport) 애플리케이션 레이어와 더불어 다양한 애플리케이션 예제들이 포함되어 있다. 또한 내장된 메모리는 nRF51 시리즈 SoC상에서 완벽한 프로토콜 스택을 구동할 수 있도록 해주며, 개발자들이 최종적으로 제품의 소모 전류 및 크기, 비용을 최소화할 수 있도록 해준다.
SDK와 더불어 노르딕은 라즈베리 파이(Raspberry Pi) 모델 B와 블루투스 스마트 레디(Bluetooth Smart Ready) USB 동글, 라즈비안(Raspbian) GNU/리눅스 커널 3.17.4 및 radvd 데몬(deamon)을 이용하여 IPv6 블루투스 스마트를 지원하는 헤드리스 라우터를 사용해 볼 수 있도록 소프트웨어 설정을 제공하고 있다. 이 헤드리스 라우터 설정과 새로운 nRF51-DK 및 nRF51 IoT SDK의 조합으로, 개발자들은 노르딕의 nRF51 시리즈 SoC와 함께 블루투스 스마트 기반 IoT 애플리케이션을 위한 강력하면서도 완벽한 플랫폼을 갖출 수 있다. 지금까지 IoT에 관련된 기술 동향에 대해 살펴봤다. 다음에는 위 기술들을 활용한 실제 구현 사례에 대해 살펴보도록 하겠다.
라영호 대표 _ 주식회사 테뷸라