[Bluetooth] Bluetooth 통신 방식 정리 (Classic/LowEnergy)
카테고리: Server
일상생활에서 블루투스는 꽤 흔한 단어가 되었습니다. 블루투스란 무엇일까요?
블루투스(Bluetooth)란?
블루투스는 기기를 서로 연결하여 정보를 교환하는 근거리 무선기술(10M 이내)의 표준을 뜻합니다. 간단하게 말하면, 근거리에서 유선이 아닌 무선으로 통신을 할 수 있는 기술을 말합니다. 이 기술이 나오기 전까지는 유선으로 기기를 연결하여 통신해야 했습니다.
블루투스에는 마스터
와 슬래이브
의 개념이 있습니다. 마스터는 기기를 연결하는 주최이고, 슬레이브는 마스터에 연결되어 각종 신호를 주는 기기 입니다. 즉, 마스터가 클라이언트
, 슬레이브가 서버
라고 이해하면 됩니다.
블루투스의 종류
블루투스에는 2가지 종류가 있습니다. 블루투스 클래식
과 블루투스 저전력
입니다. 특히, 블루투스 저전력
은 Bluetooth Low Energy, 줄여서 BLE 라고 많이 부릅니다.
블루투스 클래식 (Bluetooth Classic)
블루투스 클래식이란, 기존의 블루투스 통신 방식의 초기 표준으로, 주로 오디오 전송, 파일 전송, 키보드 및 마우스 연결 등의 용도로 사용됩니다. 안정적인 데이터 전송과 높은 대역푝이 필요한 애플리케이션에 적합합니다.
연결방식으로는 기기를 무선으로 1대1 로 지속적으로 연결하여 통신합니다. 그래서 시리얼 포트 방식이라고도 합니다. 사용가능한 프로토콜로는 A2DP, HFP, RFCOMM 등이 있습니다.
블루투스 저전력 (Bluetooth Low Energy)
블루투스 저전력 통칭 BLE 는 Bluetooth 4.0 부터 도입된 기술로, 저전력 소비를 목표로 설계 되었습니다. 주로 센서 데이터 전송, IoT 기기와의 통신 등에 적합합니다.
연결방식으로는 브로드캐스팅 방식과 연결 이라는 두가지 방식으로 서로 통신할 수 있습니다. 브로드캐스팅은 연결을 하지 않는 (Connectionless) 방식이며, 주변의 장치들에게 자신의 존재를 광고(advertizing) 하여 주기적으로 데이터를 전송하거나 수신받는 방식 입니다. 대표적으로 iBeacon과 같은 비콘 장치가 해당됩니다.
반면에 연결 방식은 양방향 또는 많은 양의 데이터를 전송할 때 적합합니다. 이 방식은 일반 블루투스 2.0처럼 두 장치간에 일대일로 연결한 후 데이터를 전송하므로, 브로드캐스팅 방식에 비해 훨씬 안전합니다. 이 방식을 사용하는 장치는 광고신호를 스캔하다가 연결을 초기화하고, 연결되면 일정 주기를 두고 주기적인 데이터를 교환합니다.
여기에는 주변장치(Peripheral)과 중앙장치(Central)의 개념이 있습니다. 간단하게 주변장치가 슬레이브 노드, 중앙장치가 마스터 노드라고 생각하면 됩니다. 또한 주변장치가 서버, 중앙장치가 클라이언트 라고 생각하면 됩니다.
블루투스 4.0 BLE의 프로토콜 스택 구조는 다음과 같습니다. 블루투스 1.0, 2.0 에서는 SPP(Serial Port Profile) 을 통해 시리얼 통신이 가능했지만, 4.0으로 넘어오면서 SPP 는 기본적으로 지원하지 않고, GATT 프로파일을 이용하여 통신해야 합니다. (예전자료들이 많아 이것때문에 삽질을 많이 했습니다.)
(왼쪽이 BLE 스택, 오른쪽이 Classic 스택)
GATT(General Attribute Profile)은 ATT(Attribute Protocol)을 이용하여 장치 사이에 데이터를 전송하는 방식을 결정하는 서비스 프레임워크입니다. ATT는 서비스(Service)와 특성(Characteristic) 이라는 개념을 사용하여 어떤 데이터 즉, attribute 를 다른 장치에게 보여주도록 합니다.
Profile 과 UUID란?
Profile 이란
프로파일은 서비스와 특성을 모아놓은 것입니다. 서비스와 특성은 룩업테이블에 저장되는데, 이 테이블은 16비트 ID를 포함한 항목들을 저장하게 됩니다. 클라이언트에서는 해당 블루투스 기기를 찾을 때, 서비스들을 찾고, 필요한 서비스 안에서 필요한 특성을 찾아야 합니다. 영어로는 Service, Characteristic 이라고 합니다.
UUID 란
UUID (Universally Unique Identifier) 의 약자로, 전역적으로 고유한 식별자를 나타내는 128비트 값입니다. 특정 객체, 장치, 데이터 등을 고유하게 식별하기 위해 사용되며, 블루투스, 데이터베이스, 파일 시스템 등 다양한 분야에서 널리 활용됩니다.
UUID의 구조는 일반적으로 다음과 같습니다.
123e4567-e89b-12d3-a456-426614174000
UUID는 이름에서 볼 수 있듯이, 전 세계적으로 고유한 값 생성이 보장이 됩니다. 정말 낮은 확률로 같은 UUID 가 생성될 수 있지만, 무시할 수 있을만큼 낮기 때문에 신경쓰지 않습니다.
블루투스에서는 각 서비스, 특성, 디스크립터를 고유하게 식별하는데 사용됩니다.
서비스(Service) 와 특성(Characteristic)
여기서, 서비스는 데이터를 논리적인 단위로 나누고 특성들을 가집니다. 각 서비스는 UUID를 가집니다. 예를들어 Heart Rate Measurement
서비스는 0x180D
라는 16비트 UUID를 가지며, Heart Rate Measurement
, Body Sensor Location
, Heart Rate Control Point
라는 세 가지 특성을 가집니다.
클라이언트에서는 사용하고싶은 서비스의 특성을 찾아내어 연결해야 합니다.
댓글 남기기