BLE 통신을 하기 전에 통신 스케줄에 대해 이해하고 가면 좋다.
BLE의 물리 계층 먼저 간단하게 짚고 간다.
BLE는 2.4GHz 대역을 사용하며, (2.402 GHz ~ 2.4835 GHz) : 2 MHz 간격으로 40개 채널로 구성된다.
Advertising 채널은 37, 38, 39 (2402 MHz, 2426 MHz, 2480 MHz)를, Adaptive Frequency Hopping 방식을 사용한다.
📌 실내 측위 (Indoor Positioning)
Advertiser은 송신부, Scanner는 수신부라고 생각하면 편하다. 실내 측위 프로젝트는 따로 기기 간 연결을 필요로 하지 않고, Device discovery 모드만 사용한다.
실내 측위에 간략히 설명하자면, Advertiser가 모든 방향으로 Advertising 패킷을 브로드캐스팅하면, 수신 받는 Scanner는 패킷에 대한 RSS(수신신호세기)를 얻을 수 있다.
알려진 Log distance path loss model을 이용해 RSS로 거리를 구할 수 있다. 그리고 최소 3개 이상의 거리가 있으면, 삼변 측량을 통해 위치를 구하는 방식이다.
📌 BLE device discovery
아래 그림은 통신(device discovery) 스케줄에 대한 도식이다.
- Ad = advertiser
- Sc = scanner
- ch = channel
Advertising은 advertising interval, advertising delay라는 값을 가진다.
위 도식은 advertising delay가 0인 상태로 가장 빠르게 많은 패킷을 전송한다고 볼 수 있다. 그러므로 advertising interval 동안 패킷을 지속적으로 송신한다. 특징으로 한 advertising interval 동안 패킷을 채널을 37, 38, 39로 변경해가면서 전송한다.
Scanner는 scan window, scan interval이라는 값을 가진다. scan window는 실제 패킷을 받는 시간이며, scan interval은 반복되는 횟수이다.
그러므로 scan window는 scan interval보다 큰 값을 가질 수 없다. 특징으로 scan window는 한 채널에 대해서만 열린다.
ex) Advertiser가 37, 38, 39 채널에 대한 패킷을 보냈다 하더라도, Scan window의 채널이 37이라면, 37에 대한 패킷만을 받을 수 있다.
📌 Android
안드로이드 BLE 개발 공식 문서를 보면 Scan window, Scan interval, channel은 변경하지 못하고, mode로 선택할 수 있다.
- Ta = advertising interval
- Ts = scan interval
- Ds = scan window
안드로이드 개발에서는 전력 소모에 따라 모드를 나눠 놓았다.
도식으로 간단히 표현할 수 있다.
🔗Low Power
🔗Balanced Power
🔗Low Latency
scan interval이 길면 길수록, 수신 받을 수 있는 패킷의 양은 늘어나지만 전력 소모는 크다.
scan interval이 짧으면 짧을수록, 수신 받을 수 있는 패킷의 양은 줄어들지만 전력 소모는 작다.
📊PDR (Packet Delivery Ratio)
Low power mode < Balanced mode < Low latency
📊Power efficiency
Low power mode > Balanced mode > Low latency
당연히 애플리케이션에 알맞은 모드를 사용하는 것이 좋다. 하지만 실내 측위의 같은 경우 PDR에 따라 성능을 크게 차지하므로, Low latency 모드를 사용하는 것이 더 좋다.
'💡Project > ✅ BLE Indoor Positioning' 카테고리의 다른 글
[BLE 실내 측위 프로젝트] 6. RSSI 변동을 해결하기 위한 이동 평균 필터 (0) | 2024.11.25 |
---|---|
[BLE 실내 측위 프로젝트] 5. BLE Beacon의 RSSI 값에서 거리를 계산하는 방법 (feat.log distance path los (0) | 2024.11.24 |
[BLE 실내 측위 프로젝트] 4. BLE advertising packet 기본 구성 (0) | 2024.11.24 |
[BLE 실내 측위 프로젝트] 3. Flutter BLE Scan Demo Program, RSSI monitoring (0) | 2024.11.24 |
[BLE 실내 측위 프로젝트] 1. Flutter_blue 설정 (feat.안드로이드12 권한 이슈) (0) | 2024.11.24 |