본문 바로가기
iOS랑 친해지기

[iOS] BLE / CoreBluetooth 정리 (Swift)

by 데브킹덕 2023. 12. 28.

BLE란??

- Bluetooth Low Energy

- 전력 소비를 보완하는 저전력 블루투스

- 통신 속도보다는 전력 소모를 줄이는 것에 초점을 맞춤

- Bluetooth4.0에 특화된 기술임

 

 

BLE를 이용한 디바이스 종류

 

1. Bluetooth Smart (BLE, 단일 모드)

- 단일 모드, 듀얼 모드 디바이스들과 통신 가능

- BR/EDR만 지원하는 디바이스는 불가

- 심박수 모니터  등

* BR/EDR(기존 블루투스) - 블루투스 1.0부터의 무선 표준 규격

 

 

 

2. Bluetooth Smart Ready(BR/EDR/BLE, 듀얼 모드)

- BR/EDR만 지원하는 디바이스도 통신 가능

- 블루투스와 단일모드 디바이스들로부터 데이터를 받아 유용한 정보로 변환 

- 스마트폰, PC, TV 등

 

BLE 방향에 따른 종류

1. Advertise Mode (방송 모드)

- 주변 모든  디바이스에 편도로 시그널을 보냄

- Advertiser : 주기적으로 비접속 패킷을 받고 싶어 하는 Observer에게 주기적으로 패킷을 보내는 디바이스 

- Obeserver: 비접속 패킷을 받고 싶어 주기적으로 스캐닝 하는 디바이스 

 

 

2. Connection Mode (연결모드)

- 양방향으로 두 디바이스 사이 패킷을 주기적으로 교환함

- Central은 연결을 요청하고 데이터를 요청하며, Peripheral은 연결 요청을 수락하고 데이터를 제공함

 

* 스마트워치는 Advertise mode로 주변 디바이스들에게 자신의 존재를 알리거나, Connecting mode에서 다른 장치와의 연결을 유지하며 데이터를 주고받을 수 있음.

 

 

CoreBluetooth란??

- Core Bluetooth 프레임워크는 iOS 및 Mac 앱이 Bluetooth 저에너지 무선 기술이 탑재된 장치와 통신하는 데 필요한 클래스를 제공합니다

결국 BLE를 쉽게 사용할 수 있도록 애플에서 지원하는 프레임워크임

* 정확히는 BLE 및 BR/EDR("Classic")장치와 통신 하는 프레임워크로 정의 하고 있음

 

 

 

 BLE protocol stack 

- BLE를 가능하게 하는 소프트웨어 계층의 구성임

*GATT, ATT, L2CAP 외에도 지원함

 

 

GATT (Generic Attribute Profile) : 일반 속성 프로파일

- 애플리케이션 사이에서 데이터가 어떻게 조직되고 교환되는지 정의

- BLE 프로토콜 스택의 주요 인터페이스 역할

 

ATT (Attribute Protocol) : 속성 프로토콜

- 기기에 의해 제시된 속성을 기반으로 하는 클라이언트/서버 비보존형 프로토콜

 

L2CAP (Logical Link Control and Adaption Protocol) : 논리적 링크 제어 및  적용 프로토콜

- 소프트 웨어 적인 상위, 하위 계층의 데이터 통신 연결 지원

 

 

 

 

 

Core Bluetooth 보기 전 필요한 지식 4가지

Central = 제어하는 중앙장치

Peripheral = 연결하려는 주변 장치

Service = 주변 장치에서 제공하는 서비스임

Characteristic = 서비스 특성임

 

 

 

 

1-1) 모든 Bluetooth 저에너지 통신에는 중앙 장치(Central)와 주변 장치(Peripheral)라는 두 가지 주요 플레이어가 관여

 중앙 장치는 일반적으로 주변 장치가 제공하는 정보를 사용하여 특정 작업을 수행함.

 

ex ) 보일러(주변 장치)와 핸드폰 앱(중앙 장치) 연결하여 주변 장치가 온도 설정 등 작업 수행

 

 

 

 

 

1-2) Peripheral(주변기기)는 보유한 데이터 중 일부를 광고 패킷 형태로 브로드 캐스팅함

* 광고 패킷: 이름 및 주요 기능 등의 정보 데이터를 묶은 것임

* 브로드 캐스팅: 네트워크에서 한번에 여러 대의 장치에 데이터를 보내는 방식 (ex:Advertise mode)

 

 중앙 장치는 주변기기를 discover(검색)할 수 있고 connect(연결 )요청 할 수 있음

 

 

 

 

1-3) Peripheral(주변기기)는 하나 이상의 서비스 및 유용한 정보 포함

아래 그림에서는 

Service로 심장박동수

특성으로 심박계와 신체 센서 위치를 포함

 

 

1-4) 주변 장치 와 중앙 장치가 연결되면 전체 범위의 서비스와 특성을 검색 가능해진다고 함

Core Bluetooth 에서는

CBCentral이 중앙 장치(Central) 역할을 함

CBPeripheral이 주변 장치(Peripheral) 역할을 함

CBCenteralManager는 주변 기기를 검색, 연결하고 관리하는 객체이며 Central을 생성하고 관리함

 

 

 

 

1-5)  1-3의 Service와 Characteristic을 CoreBluetooth에서는 다음과 같이 제시한다고 함

Service -> CBService

Characteristic -> CBCharacteristic

1-6) CBPeripehralManager는 MAC, iOS 기기를 BLE Peripheral로 동작시키고 서비스 및 특성을 제공

 

1-7) CBMutableService는  iOS기기에서 Peripheral 역할을 하는 경우 서비스의 특성을 정의하고, 구성하는데 사용됨

CBMutableCharacteristic는 BLE 특성을 정의하고, 동작 기능을 설정할 때 사용됨

 

 

 

 

 

 

정리해보면

BLE는 저전력 블루투스이다.

Central은 중앙 기기,

Periphera는 주변 기기,

Service는 주변기기에서 제공하는 서비스,

Characterisitic은 주변기기에서 제공하는 특성이다.

iOS에서 이를 지원하는 프레임워크는 Core Bluetooth이다.

 

Central,Periphera,Service,Characterisitic

앞에 CoreBluetooth 약자인 CB만 붙이면

iOS에서 사용할 수 있다.

 

CBCentralManager를 이용하여 Central을 관리 할 수 있다.

추가로 iOS나 Mac OS에서  Periphera 역할을 하는 장치를 만들고 싶으면

CBPeripheraManager로 관리 할 수 있다.

 

 

 

 

구현 영상

https://github.com/DevKDuck/BLEAPP

 

GitHub - DevKDuck/BLEAPP: BLE 관련 연습

BLE 관련 연습. Contribute to DevKDuck/BLEAPP development by creating an account on GitHub.

github.com