BLE (Bluetooth Low Energy)


5 분 소요

다음 글은 임베디드 개발장이 글을 참조하여 작성 되었습니다.

BLE의 출시: Bluetooth 4.0부터 지원
최대 속도: 1Mbps

BLE stack

BLE stack

Physical Layer (PHY)

RF 시스템 및 무선 전파(radio) 신호 송수신.
40개의 채널 중 0~36 채널은 data, 37~39 채널은 advertising 채널로 사용.

PHY

BLE 디바이스 간의 연결을 직접적으로 관리.
암호화, 연결 상태 및 채널 업데이트.

LL

  • Scanning: BLE 연결이 가능한 디바이스 검색
  • Advertising: Slave가 자신의 디바이스를 주변에 광고.
  • Initiating: Master가 Slave와의 통신을 시도
  • Connected: 연결 성공

추후 설명할 GAP에 의해 관리

Host-Controller Interface (HCI)

Host와 Controller가 분리되어있는 경우 두 모듈 사이의 상호작용.
BUT, 대부분의 BLE 디바이스는 단일 칩으로 구성됨. (Nordic Semiconductor 포함)

Segmentation, Retransmission & Flow Control, Encapsulation & Scheduling, Fragmentation

Security Manager (SM)

자주 연결하는 peer 사이의 보안 key를 관리하고 배포.

Attribute Protocol (ATT)

server와 client 사이의 데이터 교환에 대한 규칙 + 주고 받는 데이터의 구조를 정의.
센서의 값, 스위치의 상태, 위치 정보를 가진 디바이스를 GATT(Generic ATT) server,
해당 정보를 요청하는 디바이스를 GATT client라고 함.

Generic Access Profile (GAP)

연결 및 advertising 동작을 관리하는 최상위 레이어. 각 디바이스의 LL 상태를 결정. 서로 다른 BLE 디바이스 사이의 상호작용을 관리.

  • Central: Scanning하는 디바이스. 연결을 시도할 수 있음
  • Peripheral: Advertising 상태를 갖는 디바이스. Central 디바이스로부터 연결됨
  • Broadcaster: 연결 과정없이 Advertising 동작만 하는 디바이스. 이름과 함께 실질 데이터를 함께 전송
  • Observer: 연결 과정없이 Scanning만 하는 디바이스. Broadcaster의 정보를 얻는 등, Beacon 신호 수신 시 사용

ATT/GATT

ATT

GATT

BLE 시스템 데이터 구조는 service와 characteristic으로 표현됨.

GATT

Service: 특정 어플리케이션을 구현하기 위해 필요한 정보의 집합 Characteristic: 각각의 정보를 표현하는 데이터 집합 Attribute: 최소 데이터 유닛 Attribute table: BLE 디바이스 내의 attribute에 대한 정보가 저장되는 곳

Attribute Table

Attribute Table

각 행은 하나의 attribute를 나타냄.

  • handle: attribute의 주소 값
  • permission: service 또는 chracteristic의 접근 권한 정보
  • UUID: Universally Unique ID, GATT 데이터 성분 고유 식별자

Service

Bluetooth SIG에서는 자주 사용되는 service에 대한 UUID를 사전에 정의해둠.
(https://www.bluetooth.com/specifications/assigned-numbers/)

Attribute에 Service declaration을 통해 등록한다.

BLE Device Data Structure

GATT Server/Client

연결된 BLE 디바이스 중 데이터를 가진 디바이스가 GATT server가 되고, 데이터를 요청하는 디바이스가 GATT client가 됨

GAP GATT

BLE 무선 연결 과정 (GAP 역할)

advertising scanning

Advertising

GAP periphral가 advertising하는 것으로 연결과정이 시작됨. 근처 GAP central 디바이스에 해당 디바이스 정보를 알리는 동작. (Device Name, MAC Address, Tx Power, Data)

37~39번 채널을 이용한다. Advertising 간격은 20ms + 랜덤딜레이(0~10ms)로 한다.

Scanning

GAP central이 advertising 중인 GAP periphral 디바이스를 검색. 역시 37~39번 채널을 이용한다.

Connecting

Connecting

Peripheral 디바이스는 ADV(Advertising) 신호를 보내고, Central 디바이스의 CREQ(Connection Request) 신호를 대기한다. 해당 신호를 수신하게 되면, 두 디바이스의 연결이 시작된다.

연결 직후에는 FHSS를 사용하기 위한 호핑 코드를 포함하여, 하드웨어 및 연결에 관련된 파라미터를 교환한다(연결 주기, 타임아웃 시간 등).

Connection interval은 7.5ms ~ 4s 로 정해진다.

BLE effective throughput

BLE LL packet

LL Packet format

LL Packet format2

BLE 4.2부터 지원하는 DLE(data length extension) 기능을 사용할 경우에 244 bytes, 아닌 경우엔 최대 20 bytes 데이터를 전송 가능. 더미 패킷의 경우, Payload 및 MIC을 제외한 10 bytes, 데이터를 보내는 경우 데이터(최대 20 bytes) + 헤더 (21 bytes)가 한 패킷이 됨.

BLE 디바이스는 한 연결 주기 동안 최대로 전송할 수 있는 유효 패킷의 수가 정해져 있음. (Nordic사: 6개, Android/iOS: 4개)

BLE 5.0

  • 2x higher speed
  • 4x longer range
  • 8x increased broadcasting capacity
  • improved CSA (channel selection algorithm)

2x higher speed

통신 감도는 80% 정도 성능이 저하되지만, 다른 RF 전파 영향을 받지 않는 근거리 환경에서는 빠른 통신 속도를 달성한다.

BLE5 speed

4x Long range

LE 1M, LE 2M은 채널 코딩 없이 데이터를 전송 → 오류 탐지 및 정정을 하지 않음. 그러나 LE Coded 계층을 이용할 경우 FEC(Forward Error Correction) 과정을 포함한다. 간단히 설명하면, 신호의 길이를 늘려, 신호 감쇠로 인한 오류를 줄이는 것이다.

LE coded spec

연결 파라미터

GAP central과 GAP peripheral 사이에 주고받는 연결 파라미터.

Connection Interval

packet을 주고받는 간격. 최대 최소를 설정. GAP peripheral로부터 전달받거나 GAP central에서 임의의 값을 설정해 사용.
각 값은 7.5ms ~ 4s로, 1.25ms 간격으로 설정.

connIntervalMin(Max) = Interval Min(Max) * 1.25 ms
Interval Min(Max) range: 6 to 3200 frames where 1 frame is 1.25 ms
Interval Min shall be less than or equal to Interval Max.
(BLUETOOTH CORE SPEFICIFATION Version 5.1 | Vol 3, Part A, 4.20)

Connection Supervision Timeout

두 디바이스 간의 거리가 멀어지거나 전파 간섭으로 인해 timeout이 발생하면 연결이 끊어진 것으로 간주.

connSupervisionTimeout = Timeout Multiplier * 10 ms.
The Timeout Multiplier field shall have a value in the range of 10 to 3200.
(BLUETOOTH CORE SPEFICIFATION Version 5.1 | Vol 3, Part A, 4.20)

Slave latency

연결 상태에서 패킷 교환 주기는 최대 4s 이지만, 데이터 전송을 하지 않으면서도 연결을 끊지 않기 위해 더미 패킷을 몇 회 건너뛸 수 있도록 하는 값. 즉, GAP peripheral 디바이스에 전송할 유효한 데이터가 없는 경우, GAP cenral 디바이스에 더미 패킷을 전송하는 것을 스킵. 이를 통해, 더미 패킷 전송에 사용하는 전력을 감소 시킬 수 있음.

The Slave Latency field shall have a value in the range of 0 to ((connSupervisionTimeout / (connIntervalMax * 2))-1).
The Slave Latency field shall be less than 500.
(BLUETOOTH CORE SPEFICIFATION Version 5.1 | Vol 3, Part A, 4.20)

요약하면, \(min((Supervision Timeout / Interval Max * 2 ) - 1, 500)\)

개발 환경 구축

(https://enidanny.github.io/ble/ble-development/)

Bluetooth 5.1

Direction Finding

방향 감지 기능. 기존의 RSSI를 이용한 방식은 정확도가 떨어짐.

감지 방법

  • AoA: Angle of Arrival
  • AoD: Angle of Departure

AoA AoD

방향을 감지하기 위해서 두 node 중 하나는 다수의 안테나를 가지고 있어야 함. 단일 안테나를 가진 타겟 노드(방향을 감지하고자 하는 노드)는 CTE(Constant Tone Extension) 정보를 추가하거나 샘플링할 수 있어야 함.

CTE는 (Adv.) 패킷의 CRC 이후에 위치하는 값으로 패킷 데이터와 충돌하지 않음. 수신 노드에서 일정한(Constant) 주파수와 파장을 갖는 CTE 영역 신호를 IQ 성분으로 구분하여 In-phase와 Quadrature 신호 사이의 위상 차를 계산하여 신호 파장 정보를 이용하여 AoA를 계산함.

Advertising Channel Index

Adv. 게시 채널인 37, 38, 39 채널에 신호를 송신할 때, 순서대로 보내기 때문에, 두 기기가 송신 주기, 랜덤 지연 시간이 같게 동시에 게시하게 되면, 신호가 손상됨. 따라서, 송신 채널의 순서를 임의로 변경하는 기능을 제공.

Advertising channel index

Others

  • GATT Caching Enhancements: GATT 연결 과정에서의 attribute table 효율 향상
  • PAST(Periodic Advertising Sync Transfer): Advertising 주기 동기화 개선. Scanner 기기에서 전력 효율 증가
  • LE 연결 관련 기능 개선

Bluetooth 5.2

추가된 기능

  • EATT (Enhanced Attribute Protocol)
  • LEPC (LE Power Control)
  • ISOC (Isochronous Channels)

EATT

기존 ATT의 업그레이드 버전. 두 연결 디바이스(GATT server/client) 간의 데이터 교환을 직렬이 아닌 병렬로 처리. 여러 종류의 Application을 제어하는 경우, 각 application 별로 패킷을 병렬처리하여 평균 지연속도를 낮출 수 있음.

LEPC

수신 강도(RSSI)를 기반으로 거리에 따른 적정 송신 파워를 사용하여 전력 효율 상승.

ISOC

ISOC

LE Audio와 관련된 기술로, 여러 디바이스가 동시에 작동할 수 있도록 delay를 주는 기술. (무선 이어폰이 양쪽이 동시에 소리가 나오는 것처럼)

Bluetooth 5.3

개선된 특징

Periodic Advertising

Periodic Advertising은 broadcaster로 동작하는 장치에서 신호를 advertising할 때, 주기를 고정하는 기능. v5.3에서는 해당 패킷에 AdvDataInfo 영역을 추가하여 해당 패킷을 수신하는 Scanner가 이 영역의 값을 확인하여 이전에 수신된 패킷임을 Controller 레벨에서 감지하여 무시할 수 있도록 개선. (Application 단에서 검증하는 부하를 줄일 수 있음)

Channel Classification

기존의 FHSS는 상태가 양호한 channel map을 central이 주도적으로 정했으나, peripheral의 무선 환경도 고려하여 channel map을 결정하도록 개선.

Channel map

새로 추가된 특징

Connection Subrating 기능

보낼 데이터가 없으면 더미 패킷을 교환하는 Conn. interval 값을 정의하는데, 전송률과 전력 소모간의 trade-off 관계를 가진다.

때문에, 보낼 데이터가 많으면 Conn. interval 값을 작게 하여 전송률을 높이고, 적으면 값을 크게하여 전력 소모를 줄인다.

관련 내용에 대한 질문이나 태클을 환영합니다. 댓글 남겨주세요.



태그:

카테고리: ,

작성:

업데이트:

댓글남기기