-
BLE 통신의 핵심은 타이밍에 있다
- 저전력을 목표로 설계된 프로토콜이기 때문에 에너지 효율을 극대화하기 위해 통신 타이밍을 정밀하게 관리한다.
- Advertising Phase에서의 타이밍
- advertising 간격이 짧을수록 장치가 빠르게 발견될 가능성이 높지만 전력 소모가 증가할 수 있다.
- BLE는 이 간격을 20ms ~ 10.24초 범위에서 설정할 수 있도록 한다.
- Connection Phase에서의 타이밍
- 연결이 설정되면 Connection Interval(연결 간격)과 Slave Latency(슬레이브 지연)가 통신 타이밍을 제어한다.
- Connection Interval
- 주요 타이밍 매개변수로 데이터 패킷 교환 간격을 정의한다.
- 7.5ms ~ 4초 이며 짧으면 데이터 교환이 빨라지지만 전력 소모가 증가하고, 길면 전력 효율이 증가하지만 응답 속도가 느려진다.
- Slave Latency
- 주변 장치가 Connection Interval 중 일부를 건너뛸 수 있는 횟수를 정의한다.
- 주기적으로 데이터 교환이 필요하지 않은 상황에서 전력을 절약할 수 있다.
- 실시간 응답이 중요한 애플리케이션(예: 스마트워치 알림)에서는 짧은 Connection Interval과 낮은 Slave Latency를 설정한다.
- 전력 효율이 중요한 애플리케이션(예: 환경 센서 데이터 전송)에서는 긴 Connection Interval과 높은 Slave Latency를 설정한다.
- Channel Hopping의 타이밍
- BLE는 통신 간섭을 줄이기 위해 채널 홉핑(Channel Hopping) 방식을 사용한다.
- 이를 위해 40개의 채널(37개의 데이터 채널 + 3개의 광고 채널)을 이용하며 주기적으로 채널을 변경한다.
- 홉핑 패턴과 타이밍이 정확히 동기화되지 않으면 통신이 실패할 수 있다.
- 타이밍의 정확성을 보장하는 기술 = Clock Synchronization (클럭 동기화)
- BLE 장치는 Clock을 기준으로 서로 동기화하여 패킷 교환 타이밍을 동기화한다.
- 이는 Event-Driven Communication를 사용하여 정해진 이벤트(예: advertising, 데이터 교환) 따라 동작하고, 이벤트가 발생하지 않을 때는 저전력 상태로 전환되는 방식이다.
-
타이밍은 크게 연결 전과 연결 후로 나뉜다.
- 연결 전
- Connection 이전 디바이스는 3개의 Advertising Channel(37, 38, 39)을 이용해서 데이터를 주고 받는다.
- 이 3개의 Channel을 자신만의 time interval로 hopping하는 것
- 서로의 hopping 규칙이 일치하지 않기 때문에 Channel이 서로 엇갈리는 경우가 발생할 수 있다.
- 예를 들어, Advertiser는 1번 Channel에 Advertising Packet을 보낸다고 가정할 시, 동일한 시간에 Scanner가 3번 Channel에 대해 Scanning을 하고 있다면 데이터 전달은 이뤄지지 않는다.
- ... in order for the Central to discover the Peripheral, the Peripheral’s advertisement must coincide with the Central’s scanning window and frequency
- 그러나 이러한 hopping이 빠르게, 그리고 자주 일어나기 때문에 (언젠가는 그리고 결국에는) 두 디바이스가 같은 Channel에 대해 Advertising과 Scanning을 시도하게 되며 최종 적으로는 통신이 이뤄진다.
- 연결 후
- Advertising이 종료되고 각 디바이스는 Central, Peripheral의 역할을 수행한다.
- Connection을 개시한 기기는 Central이 된다.
- Advertiser는 Peripheral이 된다.
- 두 디바이스는 엇갈렸던 hopping 규칙을 통일시킨다.
- 이후 같은 채널로 꾸준히 hopping하며 Signal을 주고 받을 수 있게 된다.
- 이는 두 디바이스 사이의 Connection이 끊어질 때까지 지속된다.