Github Page

2/06/2026

BLE Channel Sounding (정리 중, 추후 보완)

1. BLE CS(Channel Sounding) 

글을 작성한지 너무 오래되었는데, 일단 게시 후 추후 아래 순서 및 글도 전부 수정

Channel Sounding 이해 하기 위해서 간단히 관련 부분 자료를 링크 

RF Mixer 와 I/Q Mixer 이해 
RF Mixer 동작원리 

RF RTLS 의 기본개념 과 TI BLE CS(Channel Sounding) Demo 분석 
TI BLE CS Demo 분석이며, TI 문서가 좋음 

Nordic BLE CS(Channel Sounding) Demo 분석


1.1 BLE 와 WIFI 차이 

BLE는 WIFI 처럼 기본적으로 OFDM을 사용하지 않으며, 대신에 Channel Hopping 을 하여 이를 해결한다. 
간단히 말해 FDM 대신에 TDM(Time Division Multiplexing) 방식으로 Time Slot으로 이를 해결한다는 것이다. 

BLE의 경우, 
자체가 전력소비를 최대한 줄이기 위해서 IFFT / FFT를 사용하지 않기 위해서 라고도 한다. 
참고로 WIFI 는 OFDM 기반으로 IFFT/FFT 사용함

구분 Wi-Fi BLE
Channel 구조 ✓ OFDM 사용 (Multiplexing) (
(QAM/등)
✕ OFDM 미사용 (Channel Hopping)
(GFSK / ASK 기반)
Channel Bandwidth 1 Channel
(20 / 40 / 80 MHz)
1 MHz Channel 단위
FFT / IFFT ✓ 필수사용 ✕ 사용없음 (저전력 위해)
Channel 정보 CSI를 통해
주파수 응답을 한 번에 획득
Channel Hopping +
시간 누적을 통해 정보 구성



1.2 BLE CS Range Resolution 확인


  • FMCW Radar 의 기본이해 
1.2  Range Max (Maximum Range) 
1.3 Range Resolution 
Radar 기본원리를 이해하면, 쉽게 이해가능
Range Resolution 까지만이라도 이해하고 오자.

  • BLE CS Range(Distance) 의 Max 
9.2. Distance estimation based on phase and amplitude information
https://www.bluetooth.com/wp-content/uploads/Files/Specification/HTML/Core-60/out/en/architecture,-change-history,-and-conventions/architecture.html#UUID-a8d03618-5fcf-3043-2198-559653272b1b

Distance Estimation Based on Phase-Based Ranging (PBR)
BLE CS Channel 확인 
0~78ch까지 존재  Min:15 Ch, Max: 72 Ch (1MHz)

BLE CS Channel 확인 
 상위 공식들이 너무 어려울 거 같아 아래와 같이 Radar 와 같이 비교해서 쉽게 이해해보도록 하자. 

  • FMCW Radar Max 과  BLE CS Range Max 비교 
ΔR = c / (2 * B)       // 2는 RTT 즉 왕복  
     c = 3×10⁸,3e8 m/s (빛의 속도)
     B = 1MHz (Bandwidth of BLE CS)

즉 상위 공식대로 보면, 1 Ch 는 측정 왕복한계거리(왕복최대거리)이며,  150m이며, 이 거리가 넘어가면, 10m 인지 160m 인지 측정이 모호 해진다.
Radar 의 경우,  Sample 의 갯수 기반으로 FFT SIZE가 정해져, 각 단위가 정해진다.

 
상위 BLE CS 9.2 공식과 Radar Range Resolution 공식 동일하다. 
다만, Radar는 Sweep bandwidth 중요, BLE CS 통신이므로 Bandwidth 

  • BLE CS Range Resolution 
각 Bandwidth 별 Range(Distance) Resolution 
  1. 1 Ch   = 1MHz    = 150m        =  150m
  2. 2 Ch   = 2MHz    = 150/2m     =  75 m 
  3. 3 Ch   = 4MHz    = 150/4m     =  37.5m
  4. 72 Ch = 72MHz  = 150/72m   =  2.08m 

상위와 같이 계산을 해봐도, 이미 거리 해상도 정밀도는 정해져 있다고 본다.
하지만, 이제 이걸 어떻게 더 향상을 시키는 지에 대해 알아보자. 
어떻게 보면 이게 핵심 기술이다.


1.3 BLE CS Range(Distance) 측정보완   

BLE CS 에서 주파수 hopping 해서 사용한다고해도 Max 72ch 이므로, 최대 거리 해상도는 정해져 있다.  
Bandwidth 2MHz로 변경해도, 이미 BLE Sweep bandwidth 는 정해져 있어서 별 차이가 없다. 

  • 거리해상도(Range Resolution)  보완 측정 
  1. BLE CS RTT 이용 
  2. MUSIC 알고리즘 

상위에 부족한 Range Resoution을 상위 2개를 더해서 보완해서 15cm~ 10cm 까지 향상을 시키는 걸로 알고 있다. 
이외 더 있다면, 그 부분은 더 알아 보도록 하겠다. 


WIFI Sensing Array 
ESP32 1개 를 총 8개 Array 로 MUSIC 알고리즘 적용 
나도 아직 완벽히 이해를 못했지만, 각 공분산 형태로 계산을 해서 보정을 해나가는 것로 알고 있음 

  • RTT(Round Trip Time) 측정 
Channel Sounding Packet Format

CS_SYNC 의 기반으로 계산 


Distance Estimation Based on Round-Trip Time (RTT)
RTT는 간단히 생각해서 아래 Time r을 버리고 ToF 2개를 구하는 것임 
https://docs.silabs.com/rtl-lib/latest/rtl-lib-channel-sounding-fundamentals/#distance-estimation-based-on-round-trip-time-rtt

 
  • MUSIC 알고리즘 확인 
TI 문서를 보면, BLE CS 에서 MUSIC 알고리즘을 사용 
 https://www.ti.com/lit/an/swra791/swra791.pdf


  
2. BLE CS 구조 사용 


FSK(GFSK)

ASK


BLE CS Block Modulation Role
CS_SYNC GFSK Time / Frequency Synchronization
CS_TONE ASK Phase Measurement


  • BLE CS Procedure
Ini
https://docs.silabs.com/rtl-lib/latest/rtl-lib-channel-sounding-fundamentals/#bluetooth-channel-sounding-procedure


BLE CS Packet Format 
  

CS Packet 

Not OFDM , 이거 대신 주파수 Hopping 즉 TDM 


BLE CS 소개 

BLE CS 토론 및 설명 

BLE Spec 

BLE 의 LO Phase 차이 보정 


2.1 BLE CS PBR(Phase-based Ranging) 이해 

FMCW의 1 Chirp 
FM기반의 Ramp 신호 1 Chirp 

Radar의 FM Chirp하고 개념은 거의 비슷하며, 
즉 Phase 기반으로 시간을 Ramp 신호에 반영을 CS Tone으로 만들어 내는 것이다. 

  • FMCW Radar 와 BLE CS Tone 비교  
  1. PBR Tone 의 Ramp (Phase 기반)
  2. FMCW 의 1 Chirp ( Frequency 기반)


CH   Tone         Frequency     Phase 변화 
Ch1  Tone1       f                      
Ch2  Tone2       f
Ch3  Tone3       f
Ch4  Tone4       f 

72 ch 가능 
1MHz 까지 가능

다만, WIFI 처럼 OFDM을 사용하지 않고, CS SYNC 와 CS TONE(ASK)로 보낸다고 한다.
즉, Sweep Frequency 에서 각 주파수 시작 위치 Frequency hopping(TDM)해서 각 채널을 만들어 보내는 것이다. 

72MHz bandwith로 한계 이를 어떻게 극복하나 

TI RF Switch (Antenna Switch)
아래와 같이 θ(theta)는 2개의 Phase 차이 이며, 이를 시간의 Delay 생각하면 
BLE CS에서는  Channel Hopping으로 하므로, Antenna Switch는 반드시 θ(theta)보다 빨라야 한다. 
https://dev.ti.com/tirex/explore/node?isTheia=false&node=A__AQ0TYkLXd7cPWtNUtMqjSw__com.ti.SIMPLELINK_ACADEMY_CC13XX_CC26XX_SDK__AfkT0vQ__LATEST



2.2 BLE CS(Channel Sounding) MODE 

TI BLE Channel Sounding 
- MODE1/2/3/4





QAM 대신 BPSK 사용  (TI BPM과 비슷)
즉 QAM은 시간에 따라 정확한 Phase를 하기가 힘든 구조이며, QPSK는 가능은 하나 복잡함 
그래서 BPSK 즉 180도 기반으로 사용 

TI BLE Channel Sounding 
-  Appendix A 


2.3  BLE AoA 

sin(theta)로 하지만, 동일한 CS TONE을 RX에서 받아 2 개의 Phae 차이를 구분해서 한다.
하지만, 여기에 차이가 있다. 

BLE Antenna는 Switch 하는데, 이게 Radar 같으려면, theta 보다 더 빨리 Switch 해야 한다.
Radar Switch를 안하겠지만, BLE는 Tranceiver는 Switch를 하므로 이 부분 추후 

Real Time Localization System (RTLS) based on Bluetooth® Low Energy

Antenna Switching in Channel Sounding

각 Antenna 의 Phase 차이로 Spatial Frequency 파악 가능 

1/02/2026

Github Pages/Mkdocs/ReadMe 정리2

1. Mkdocs 와 Github 문서정리 

아무리 생각을 해보도 Github Pages로는 Mkdocs가 가장 적절한 것으로 판단이 되어진다.
여러 개를 써봤지만, 이렇게 깔끔하게 내 취향을 좋게 맞춰주는게 많지 않을 듯하다.

Why
Markdown 문서 기반으로 Web hosting이 쉽게 해주기 때문이다.

Limitations
다만 기술 문서 관점에서 다시 평가하면,
reStructuredText(.rst) 중심의 Sphinx가 더 적합한 선택으로 보인다 (Sphinx도 Markdown 지원함)
Doxygen + Breathe + Exhale 의 조합이 가장 낫을 듯하다. 
여기에 Call Flow도 넣으면 더 좋고 (이외에 PDF, ePUB 등) 

  • Github 와 Mkdocs
현재 Github의 Markdown과 Mkdocs가 가장 적절하게 운영할 수 있는 것 같으며, 최근 변화에도 그런 것 같다.   

  • ReadTheDoc 사용 (Sphinx 와 mkdocs)
현재도 ReadTheDoc를 무료로 사용하고 있으며, 이 사이트는 Sphinx 와 Mkdocs 둘 다 지원

  • Readme 와 ReadtheDocs 가격비교 
ReadTheDoc 괜찮지만, 아래의 Readme도 한번 사용해봐야 겠다. 무료로 써 본 다음에 결정 

Readme 가격 
무료로 쓰려고 했으나, 실패

ReadtheDocs 가격 
현재도 사용중이며, 다만 서버가 간혹 문제가 발생하는 경우가 발생하지만 무료로 이것만으로도 만족^^



1.1  Mkdocs 의 설치 

mkdocs는 구글로 검색을 하면 쉽게 다 알 수 있으며, 작성 방법도 너무 쉬우므로, 
아래와 같이 각 Link만 연결하도록 한다. 

Mkdocs 관련설명


  • Mkdocs 의 Plugin (Mkdocs 문서 to PDF)

  • Mkdoc 의 기본 Manual 
mkdocs의 기본 Manaul 이므로 당연히 필독!

  • Mkdocs Material Manual
Material 세련되게 사용하고 싶다면, 아래의 사이트는 전체 다 세부적으로 읽어보는 것을 추천 
다만, 일반 Markdown 방식과 호환 안되는 경우가 있으므로 Material Theme 용으로만 사용. 
Material Convention (Symbol) 알아두고, 각 아이콘을 기억 
Github Action 기반의 Github Pages 설정 (개선을 하시면 더 좋고)
세부설정-Material Setup 부분 반드시 확인 
(색상/Fonts/Lanuage/logo, Google Analytics 등 )
세부설정-Icon 과 좀 더 세련된 박스 제공 
세부설정-markdown table도 더 세련되게 
세부설정-icon/emoji도 좀 더 세련되게 
세부설정-Material Plugins 기능들 (다양함, Blogs처럼 사용가능)

  • Python 기본설치 
Python 기반으로 기본설치 
$ pip install mkdocs                           // Python mkdocs 설치 
$ pip install pymdown-extensions               // markdown extension 


Mkdocs 설정관련내용 (Python 설치 및 설정)
쉽게 설명을 해주고, 자주 업데이트 해주셔서 감사하다. 

  • mkdocs theme 설치 
$ pip install mkdocs-material                  // mkdocs theme
$ pip install mkdocs-material-extensions       // mkdocs theme
$ pip install mkdocs-rtd-dropdown              // mkdocs theme 

  • Mkdocs 의 Themes
상위 이외에 다양한 Themes 이 존재하므로 설치해서 사용 
현재 material만 꾸준히 Update되고 있으며, 이것을 사용하는게 맞을 것 같지만, 이상하게 더 readthedocs가 더 끌린다. 

  • 기타 Plug 설치 
$ pip install mkdocs-mermaid2-plugin           // mermaid2 
$ pip install mkdocs-with-pdf                  // mkdoc to pdf

PDF의 경우, 현재 한글이 완벽히 지원되지 않음 주의! 
PDF의 경우, 현재 Browser에서 직접 인쇄를 이용하여 인쇄하는게 가장 낫을 듯 싶다. 

1.2  mkdocs File 구성 

Github 쉽게 공유되어지며, 아래와 같이 구성한다. 

$ tree
docs
└── index.md    


1.3  mkdocs 관련설정 

참고만 하고, 실제는 좀 더 세련되게~~ 사용해야지 (Google Analytics도 사용하고)

mkdocs.yml (theme: marterial)




mkdocs 의 material mkdocs.yml 예제 

mkdocs 의 material의 세부변경사항 이해 


mkdocs 의 theme 
readthedocs 와 rtd-dropdown 
  
mkdocs 의 theme 종류 

  • mkdocs 의 Chart/Images, Tables, and Graph 
MkDocs GLightbox 
plantuml-markdown
mermaid2 
charts 
Markdown blockdiag 
drawio-exporter 

mkdocs 의 pdf 와 epub

docgen 


2. GitHub Pages 자동연동 

Github Action 으로 쉽게 Github Pages에 연동이 가능하므로, 다양하게 사용이 가능하다.
Google Analytics 본인 직접 설정도 가능하다.
언어도 2개 이상도 다 지원가능하며, 다양하게 사용가능하다.
다만 언어를 2개 사용하면, 골치 아픈게 2개의 언어로 다 따로 작성을 해야해서~ 

  • 나만의 Profile 완성 
세부내용은 상위와 많이 다르나, Marterial Manual을 보면서 수정을 하면, 쉽게 할 수 있다고 생각한다.