Github Page

레이블이 RF-WIFI인 게시물을 표시합니다. 모든 게시물 표시
레이블이 RF-WIFI인 게시물을 표시합니다. 모든 게시물 표시

10/29/2025

Nordic BLE Channel Sounding

1. Nordic BLE Channel Sounding 

RF-RTLS(TI Channel Sounding)
RTLS의 이해 필요 와 이전 TI BLE Channel Sounding 참고 (아참 Beacon 기반이 아님,주의)
각 Chip 제조사 별로 나중에 각 비교를 해보자. 

RF Radar 와 RF Communication 비교 
Range 측정은 Radar 1개 가능하지만, RF Communication 최소 2개 이상 필요 



  • BLE 6.0 BLE Channel Sounding 소개 
글을 읽어보면, BLE 6.0 Key Feature이며, PBR을 이용하여 거리 감지 가능하다. 
처음에는 자료가 못 구해서, 이게 Beacon 기반인 줄 착각했다. (Beacon 암호화 <-이곳에 꽂혀서)
쉽게 설명하면, BLE Channel을 생성하여, Sound 즉 일종의 Tone(PBR) 신호를 보내서 Radar처럼 거리를 감지하는 기술이다.  
물론 좀 확장되면, Radar 처럼 AoA도 가능할 것이지만, 매번 BLE Demo에는 빠져있다. 
RF 통신 기반이므로, 당연히 기기는 2개 이어야 가능하다. 

  • BLE 의 Nordic Channel Sounding Demo
아래 Nordic Demo를 보면, AoA까지는 안되는 듯하며, Range만 즉 거리만 가능한 것 같다.  


  • Nordic BLE Channel Sounding 
BT/BLE를 개발을 해본 사람이라면, 모르는 회사는 아닐 듯하다.
저번에 TI BLE Channel Sounding 데모를 보고, AoA 언급을 한 것 같은데, Noridc도 아직 AoA는  안될 듯하다.



  • Nordic 3rd Party Product 
관련 제품 군들을 나중에 이곳에서 찾아 보자 


  • Nordic BLE Channel Sounding 
  1. BLE Chip 정보 와 EVM 확인 
  2. 내가 가지고 있는 nRF7002DK는 안됨 
아래는 Initiator /Reflector 이며, 아래 이해하려면 우선 상위 이전 RTLS의 TI BLE Channel Sounding부터 이해하고 각 역할을 좀 더 보도록하자.

Initiator 

Reflector 
  https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/samples/bluetooth/channel_sounding_ras_reflector/README.html

  • Nordic 의 BLE Channel Sounding
  1. Ranging Service Specification  각 확인 
  2. Ranging Profile Specification  각 확인 
  3. IFFT SIZE 즉 Sampe 갯 수 확인 
    1. Inverse 사용하는 이유는 보통 신호복구 


  • Nordic BLE Channel Sounding TEST Result
Anthena 4개이면, AoA도 될 듯한데, 언급이 없으며, 문서를 좀 자세히 읽어 보면, 각 Anthena를 Switch를 진행을 한다.
아직 AoA / AoD에 대한 언급 아직 없다. 



2. Nordic BT/BLE Tools

BLE를 다시 개발하면, 그 때 다시 사용해보도록 하겠으며, 항상 Nordic Tool들은 추천한다. 

보통 nRF Connect Tool 가장 많이 이용하지 않나 싶다. 
관련 BLE Profile 분석 확인 
ESP32로 BLE 개발을 해도, 필요하다. 

  • Mobile 용 BT/BLE Tools
  1. nRF Connect Device Manager : 각 Profile 분석/ Scan 기능 부터 다양하게 제공 
  2. nRF Edge Impuse 지원: Edge AI(TinyML)
https://docs.nordicsemi.com/category/nrf-tools


   

  • Nordic BT/BLE Tools
개인적으로 너무 좋으며, 이외 다양하게 최근에 다양하게 제공을 해주는 듯하다. 
나도 나중에 다시 개발을 할 경우, 다시 써보고 나서 말을 하는 것이 좋겠다. 
  1. nRF Sniffer의 경우, 나중에 Wireshark와 연결되는 지 확인 
    1. 왠지 Wireshark과 될 듯하다. 
https://docs.nordicsemi.com/category/nrf-tools



nRF 관련 Tool 
이게 더 Mobile 과 Desktop 같이 나오니 더 편하게 Download 가능할 듯하다.

BLE Sniffer 
나중에 이 부분은 가능하다면, 비교를 해보도록 하겠다. 
  https://novelbits.io/bluetooth-low-energy-ble-sniffer-tutorial/


2.1 BLE Sniffer 과 Wireshark

Wireshark는 Ethernet /USB/ WIFI 비롯하여 거의 pCap만 되면, 거의 된다.
꼼수로 기존 것을 이용해서 본인이 만들어도 좋다. 

  • ESP32 BLE Sniffer
참고로, WIFI Sniffer도 별도로 만드는 것도 가능 한듯하다. (별도로 테스트를 안 해봄) 


2.2 WIFI Sniffer 와 Wireshark

WIFI와 BLE는 항상 거의 같이부터 다니므로, 이 부분도 같이 기술을 하도록 한다. 

  • ESP32 Wireshark(WIFI)
EspressIF Manual은 전제는 PC의 WIFI가 monitor 모드가 지원될 경우이다. (착각하시지 마시길)
PC의 WIFI의 경우, Driver에 따라 동작 모드가 제한이 있으므로 반드시 확인하시길 
특히, Broadcom WIFI는 제공을 안 하며, 제공하지 않는 칩 제조사도 많다. 


WLAN
참고로, 상위내용을 더 설명하면, 각 WIFI의 경우, MLME로  걸쳐서, Ethernet2로 나오는 경우가 많다.
각 세부 사항을 알고 싶다면, WIFI Driver 내부까지 알아야 하며, 각 칩 제조사의 WIFI Driver는 대충알아야 할 듯하다. 
(요즘 WIFI Driver 직접 개발하지 않아 잘 모르겠으나, 예전에는 다 달랐으며, 아래참조)


  • ESP32 WIFI Sniffer
본인이 ESP32에서 Sniffer 직접 만들어서, tcpdump를 이용해서 적용 하는 방법도 존재한다. 
ESP32 WIFI 의 경우, 거의 모든 WIFI 기능을 마음대로 제공해서, 최적의 Sniffer가 아닐지 생각이 쉽다. 
(솔직히 이렇게 WIFI를 마음대로 Control하게 해주는 곳은 Chip 제조사 거의 본 적이 없는 듯하다)
나중에 시간이 되면, 이것을 만들도록 하겠다. 

6/14/2025

RF RTLS WIFI Sensing Array

1. WIFI Sensing 과 RTLS

RF Communication 과 RF Radar 비교 

WIFI Sensing 
설명이 잘되어 있음 

RF Radar  
FMCW 의 Radar 를 이해 와 Anthena 이해


2. WIFI Sensing Array 

Radar의 Cascade 처럼, 각 Clock을 맞추어 여러 ESP32 기반으로 Anthena 구성 후, 이를 Radar 처럼,  
WIFI Sensing Array 가 어떻게 동작하는지 이해가 되지 가 않아 정리만 한다.

개인적으로 RTLS 관련 사항을 보다가, 이걸 보고 많이 충격이었으며, 
많은 부분이 이해 안 가지만, 아래와 같이 간단히 정리하면서 더 지켜보도록 하겠다. 
이유는 WIFI 뿐만 아니라, C-V2X/BLE/5G 에도 관심이 있기 때문이다. 


2.1 H/W Boards 구성 

  • Radar Antenna 구조이해 
TI Radar 의 Antenna 구조 와 Virtual Array 자료분석 
Radar부분을 이해하면 쉽게 이해가 가능하다 


  • Sensor Board (2.5GHz 기반으로 Antenna 설계) 
  1. λ / 2 antenna spacing (60mm)
  2. 8×RHCP ceramic patch antennas 
  3. U.FL / SMA (not placed) reference signal input
2.5Ghz  Lamda/2 를 구하면,  Lamda = (3e8/2.5e9)/2  = 0.12m= 120mm -> Lamda/2 = 60mm

Patch 안테나도 사용별도 사용하는 듯하다. 

https://espargos.net/setup/

  • Controller Board 
  1. U.FL / SMA (not placed) reference signal output
분명히 Controller Board가 각 Clock 싱크도 관여를 할텐데, 이 부분도 알 수 있다 추후~~
RF Calibration 과 밀접하므로 이 부분은 WIFI Clock Sync에서 자세히 알아 보도록하자. 

  • ESP32 의 구성 설명 
처음에는 ESP32(WIFI)는 내부에 I/Q Mixer 가 없는 줄 알았으나, 아닌가 보다, 
이 부분 때문에 ESP32 Reference Design Guide 부터 각 Datasheet 여러 부분을 봤는데, 아래 내용은 없다.

  • WIFI Sensing Array(8)x4 확장 구조 
ESP32x8 개 WIFI Sensing Array를 4개 씩 묶어서 더 확장하여 사용한다. 
  1. Sensor Board(WIFI Sensing Array)
  2. Control Board 
    1. Clock + Phase Reference Generator: PA가 있음 (WIFI Phy?)
    2. -3dB : 아마 50옴 일듯 (Signal Reflection 제거)



  • WIFi Sensing Array x 4 확장 Python 소스 
Sensor Board(8 WIFI Sensing Array)x4
32=  8x4개로 묶어서 상위와 같이 구조로 구성 



  • ESP32의 외부 Phy 확장사용여부 파악  (PA/LNA)
PA를 외부에서 연결되어 공급해서 하는 것 같은데 좀 이해가 되지 않아, 내부 이미 PA가 있을텐데, 구조가 좀 이해가 되지 않아, 
외부에 별도의 Phy(Tranceiver)를 가 있는 회로도 or 구조도 가 있나 해서 구해봤는데 인터넷에서 찾았다.

https://www.crowdsupply.com/bison-science/esp32-m1-reach-out




2.2 WIFI Clock Sync

  • TI Radar Cascade 구조 및 분석
Radar에서 Cascade에서 Clock Sync가 중요하므로 이 부분 참조 

각 Clock 동기화이며, 추후 이 부분 좀 더 자세히 

  • Clock distribution
기본 8개로 ESP32 로 WIFI Sensing Array 구성 
https://www.youtube.com/watch?v=sXwDrcd1t-E


  • Clock distribution and Phase Sync 
처음에 PLL로 Sync로 맞추는 지 알았더니, 1개 Refrence ESP32 WIFI 로 각 Phase Sync를 별도로 맟춘다.
즉 Phase Sync 맞추기 위해서 별도로 1개 필요하지만, 나중에 TEST 시 필요가 없는 듯 (Power on/off 할 때마다 왠지 필요 할 듯 하다)
  • Calibration Python 소스 


2.3 WIFI 의 RTLS  

  • RF RTLS 와 BLE의 Channel Sounding 
TI Demo BLE5.x Channel Sounding 의 경우, Radar 처럼 1개가 아니라 2개의 BLE Device 로 Range를 측정 (가장 비슷하니라 본다?)   
  1. TDOA(Time Difference of Arrival)  
  2. AoA(Angle-of-Arrival)
  3. AoD(Angle of Departure)

  • RF Radar 와 RF Communication(WIFI/BLE) 비교
MIMO의 AoA를 이해하고 Antena 구조도 이해 


  • TDOA  Python 소스 
TDOA(Time Difference of Arrival)  
TDOA를 좀 깊게 보면, 기본이 삼각측량이 기반인 것 같으며, 최소 3/4개 이상의 Anchor 기반으로 측정하는 듯하다.
또한 2개 가지고는 위치파악은 힘들 것 같으며, 3개 사용하면 삼각측량이며, 4개 사용하면 좀 더 정확해질 것이다. (아마 3D?)
현재 여기서 데모를 보면, Anchor를 여러개 사용했을 때만 사용하는 듯 하다 

  • AoA Python 소스 
AoA(Angle-of-Arrival) 각 Phase 차이를 어떻게 보는지 이며, 이것을 어떻게 사용하는지가 가장 궁금하다. 
Phase over Time으로 하면, 각 Packet 도착시 Phase 차이 시간축으로 보느냐?
Phase over Space으로 하면, 각 Packet 도착시 Phase 차이 공간축으로 보느냐? 

  • TDoA/AoA 기반으로 동작기반의 MUSIC 알고리즘 사용
이미 각 시간들을 시간 오차를 계산을 한 듯 하다(TDoA)
각 위치가 있으니 ESP32 위치 배열이 있으니 (AoA)
내가 이상하게 느끼는 것은 수직(Angle-Elevation)은?
https://www.youtube.com/watch?v=sXwDrcd1t-E

  • Demo 확인 
TDOA(Time Difference of Arrival)  의 Anchor는 4개 사용 ( 이부분 보다 AoA?)
AoA(Angle-of-Arrival) 사용 
근데,AoD(Angle of Departure)의 언급이 없어  이부분 사용여부도 좀 궁금? 
https://www.youtube.com/watch?v=sXwDrcd1t-E




2.4 WIFI Sensing Array 관련 내용

  • 상위 개발 사이트
상위 관련 사이트 

아래를 봐도 동시에 WIFI  8 Channel 의 CSI 로 I/Q 시그널 기반으로 분석 하는 듯 하다 
https://espargos.net/setup/


  • WIFI Sensing Array Experiment Setup
  1. Experiment Setup :  RADAR의 Reflector 와 비슷
  2. Receiver Array Setup :  공개 
  3. Point Cloud :  거의 4D RADAR 와 비슷하게 할 거 같은데, 

  • Github 기반 소스 
Github 의 Python 기반으로 각 테스트 소스 제공 


  • 추후 반드시 다시 봐야 할 것
일단 아래의 알고리즘 부터 동작 원리를 이해를 해야 할 듯하다 
이외 아직 아래 부분들은 이해를 못해 링크만 

Channel Chartering 
나중에 시간이 되면 , 더 보도록 하겠으며, 이를 링크만 

MUSIC(Multiple Signal Classification)
Anthena Arrary로  신호 방향을 추정하는 알고리즘 

11/14/2024

RF Radar 와 RF Comm. 비교

1. RF Radar 정보    


Radar 시장분석 과 TI Radar 문서자료구성 


저번에 RF관련된 자료
이전에 RF에 관련된 자료수집했으나, 글을 아직 미완성이며, 추후?? (자료만 보자)


1.1 관련용어들 

RF가 아니더라도, 통신(Communication) 과 방송시스템(NTSC,PAL)을 배웠으면, 금방 이해하기 빠르다.
Radar 와 비교하기전에, 기본적인 것들은 알고 들어가자.

  • Modulation
Analog 신호 or Digital Data를 전송하는 방법으로 세부내용은 아래 wiki
  1. AM(Amplitude Modulation) 
  2. FM(Frequency Modulation)
  3. PM(Phase Modulation)

  • Division/Multiplexing
즉 상위에서 Modulation을 했으면, 이를 합치고, 분할하는 방법
  1. TDM(Time Division Multiplexing)
  2. FDM(Frequency Division Multiplexing)

  • Radar의 역사와용어



2. RF 의 Anthena 구조 

RF Communication(WIFI/BLE/4G) 와 Radar의 공통점 과 다른 점을 간단히 비교해보도록 하자. 

  • SISO/SIMO/MIMO
RF에서 Anthena 부분이며 Input은 TX, Output RX 각 용어들은 Anthena 갯수에 따른 구조라고 생각하면 된다. 
  1. SISO(Single Input Single Ouput)            : 1 TX  - 1 RX
  2. SIMO(Single Input Muptiple Output)      : 1 TX, -  x RX 
  3. MIMO(Mutiple Output Multiple Output) : x TX  -  x RX

  https://en.wikipedia.org/wiki/MIMO



2.1 MIMO-WIFI(RF-Comm.) 

WIFI통신에서 MIMO의 기술은, 여러 SubCarriers 에서 QAM (Data)기반으로 OFDM으로 1 채널을 생성한다. 
그리고, 1개 이상의 채널되면, 안테나 갯수에 따라 동시 송수신 가능하다고 생각하면 될 듯 하다.

물론 세부적으로 들어가면, 상위내용들이 각 WIFI Spec에 따라 다 다를 것이며, 간단히만 비교한다.

  • Channel 의미 와 Bandwith
2.4GHz 의 Channel 의 갯수 Bandwith는 20MHz 이며, 보통 HT20으로 사용(확장도가능) 
QAM(1 ~ n Subcarriers) -> OFDM = 1 Channel 

 https://en.wikipedia.org/wiki/IEEE_802.11g-2003

  1. 1x1 SISO   : 1개 Channel Bandwith 사용하며, HT20/40 Bandwith 확장가능(ESP32도 아마될 듯)
  2. 2x2 MIMO : 2개 Channel Bandwith를 동시 사용가능 
  3. 4x4 MIMO : 4개 Channel Bandwith를 동시 사용가능 
물론, 802.11g에서는 MIMO가 안되는 것 같으며, 상위 예제일 뿐 각 아래의 Spec에 가서 보시길 




2.2 MIMO-FMCW Radar 

  • FMCW의 기본이해 
세부내용은 TI사이트에 가도 있으며, 아래부분에서 이해하자 
상위 통신처럼 Digtal Data 전송이 아니라, TX 와 RX 차이를 Analog로 분석.

TI의 FMCW 기본으로 이해 한 후, SIMO/MIMO -> AoA 다시 보도록하자.


  • AoA(Angle of Arrival)
최소 Anthena 2개 이상으로 Phase 차이를 이용하여 위치(Angle) 파악하는 개념이며 Virtual Array 구성방법이다.
즉 Anthena 설계를 이해하는 중요한 요소이다. 
DOA(Direction of Arrival Estimation)이라고 하며, RX Channel에서 가능하며, Phase 차이이용하여 삼각함수로 각 Angle 위치 파악한다.
  1. 좌,우 Angle: Azimuth  , 최소 2개 RX에서 좌/우,수평  Phase 차이 
  2. 상,하 Angle: Elevation , 최소 2개 RX에서 상/하, 수직 Phase 차이 


  • AoA(Angle of Arrival) 기본용어 
  1. lamda: Wavelength 의 길이, 즉 Radar의 Center Freuqency의 길이 
  2. theta:  Angle의 입사각? 
  3. d : Anthena 사이의 거리   (보통 lamda/2) 
  4. d * sin(theta): Anthena 사이거리에  삼각함수 이용하여 길이 (아래그림 참조)
  5. omega: ( (2*phi) / lamda ) * d * sin(theta)  -> Lamda 기반 Phase(위상) 차이 

AoA 기본 전제조건 
  1. 물체가 좌측 위치 일 경우 (좌측기준의 +theta, 우측기준 -theta)
  2. 물체가 1개 일 경우
  3. 물체의 움직임이 없음 
  4. MIMO 부터 Virtual Array 가능 

  • AoA-SIMO-1-TX 와 4-RX 경우 
거리 d 가 동일, dsine(theta) 동일하게 증가하고, omega도 동일하게 증가 (RX1,RX2,RX3,RX4)
즉 RX1 Phase 0이고, RX4 Phase 차이 -> 3 omega

https://www.ti.com/lit/an/swra554a/swra554a.pdf

  • AoA-SIMO-1-TX 와 8-RX 경우 (omega 기반 Phase 차이확인)
상위와 동일하게 최대 Phase 차이가 7omega 까지 된 상 
RX1 과 RX8 Phase 차이 7 omega 이지만, Max Phase 차이 있을텐데, 이 부분 추후에~~
https://www.ti.com/lit/an/swra554a/swra554a.pdf

  • AoA-MIMO-2-TX 와 4-RX 경우 (omega 기반 Phase 차이확인)
TX1 과 TX2 의 거리 4d 이며, TX도 Phase 차이가 존재하여, RX에 아래와 같이 구성된다. 
아래 TI 문서에 빨간색 TX2일 것이며, 문서오류  
  1. RX1-TX1: 0             ->  기준으로 Phase 차이 0 (좌측물체)
  2. RX2-TX1: 1 omega
  3. RX3-TX1: 2 omega
  4. RX4-TX1: 3 omega
  5. RX1-TX2: 4 omega   (TX1,TX2 의거리 4d x omega)
  6. RX1-TX2: 5 omega
  7. RX1-TX2: 6 omega
  8. RX1-TX2: 7 omega   ->  RX1-TX1 과 RX1-TX2의 7 omega Phase 차이 
2 x 4 = 8  Virtual Array 생성
https://www.ti.com/lit/an/swra554a/swra554a.pdf

  
즉 Angle-Azimuth  Virtual Array 계산쉽다.

  
  • AoA-MIMO-3-TX 와 4-RX 의 Virtual Array 
TX1 와 TX3  거리         4d
TX1 와 TX2  거리         sqrt(4+1)d
각 RX1 부터 거리간격   1d 
Virtual Array 구성은 총 12 Array로 아래와 같이 구성  
  1. Angle-Azimuth(수평) 파악 가능  (상위에서 쉽게 이해)
    1. TX1-RX1 : 0 omega  ->기준 Channel Phase 차이 0 (좌측물체)
    2. TX1-RX2 : 1 omega
    3. TX1-RX3 : 2 omega
    4. TX1-RX4 : 3 omega
    5. TX3-RX1 : 4 omega  (TX1,TX3 의거리 4d x omega)
    6. TX3-RX2 : 5 omega
    7. TX3-RX3 : 6 omega
    8. TX3-RX4 : 7 omega
  2. Angle-Azimuth(수평) 파악 가능 (TX1 과 TX2 거리 간단히 계산?)
    1. TX2-RX1 : sqrt(4+1) * 1 omega  -> Calibration 용으로 사용?
    2. TX2-RX2 : sqrt(4+1) * 2 omega
    3. TX2-RX3 : sqrt(4+1) * 3 omega
    4. TX2-RX4 : sqrt(4+1) * 4 omega  
  3. Angle-Elevation (수직) 파악
    1. TX2-RX1,TX2-RX2,TX2-RX3,TX2-RX4: 0 -> 기준 Channel Phase 0, (상위물체)
    2. TX1-RX3,TX1-RX4,TX3-RX1TX3-RX2 : 1 omega 

방향은 기준 Channel을 어디로 하는지가 중요하며, 그 기반의 Phase 차이를 이용하여 방향알기 때문에 설정은 DSP 엔지니어 마음인 것 같다.
상위 TX2-RX1도 기준채널로 하면, TX2-RXx Line만 Azimuth도 각 Phase offset은 omega 되니, 측정가능하다.



https://www.ti.com/lit/an/swra554a/swra554a.pdf

  • AoA-MIMO-2-TX 와 4-RX 의 Virtual Array 
물리적 안테나 구조(Physical Anthena Array)  Fig(a) 와 Fig(b)  2개는 다르다. 
하지만, Fig(a) 와 Fig(b) 의 Virtual Array 구성은 동일하다 
오직 Angle-Azimuth(수평)만 파악가능 
  1. Fig(a)의 경우, 상위와 거의 동일 TX1 과 TX2 사이 4d라서 상위 동일 구성 
  2. Fig(b)의 경우, TX1 과 TX2 1d 이고 대신 RX가 2d 이므로 한칸 건너서 구성  

https://www.ti.com/lit/an/swra554a/swra554a.pdf


  • Anthena Array 기본설계 개념 와 이해 
상위를 제대로 이해를 했다면, 물리적 안테나 Array 구성도 쉽게 이해가 될 것이다.
TI 에서 Cascade된 Anthena 구성도 상위를 이해를 하면 쉽게 이해가 가능하다. 
  


  • Antena gain vs Angle
  1. FoV , 각도에 따른 LNA의 Amp 값 확인 
  2. Range FFT Size 확인 
https://www.ti.com/lit/an/swra553a/swra553a.pdf


  • Division/Multiplexing
FMCW Radar도 FM(1Chirp) Multiplexing/Division이용하여 다중화를 한다.
이미 Modulation FM을 사용하니, FDM는 사용 못하고, TDM 과 BPM을 사용한다고 한다.
  1. TDM: 이미 총 FM(1Chirp) 갯수는 정해져 있으며, 각 Time을 나누어서 사용 
  2. BPM: 아직 이해가 안되지만, 일단 개념은 위상 180차이를 해서, 동시에 받겠다는 것임
  3. 개인생각: Bandwith를 나누고, 통신처럼 Channel 구성해서 TDM으로 해도 더 나을 듯 한데, 이것은 없음 (싱크 문제?)
Bandwidth 10Ghz이면, 각 2GHz 나누고, Chirp Slope Time을 증가시켜서 FFT Size에서도 문제없게?


3. RF Communication 과 Radar 비교 

RF 통신(Commuincation) 과 Radar를 간단히 비교하고 차이를 알아보도록 하자.

  • RF Comm. 와 Radar 비교 
  1. WIFI/BLE/4G/5G  :  거리 1D, 편도거리 
    1. 통신은 2개의 개체가 있어야 통신가능 
    2. Digital Data 전송가능 
    3. RTLS(Real Time Location System) 기능이용 (추후에 다시 설명?,아직 개발중?)
      1. AoA를 이용 (Phase 기반으로 측정, Radar 와 거의 유사)
      2. 거리측정 도입이 되어 RSSI기반으로 가능 
      3. 이외 다양함 (LTE의 경우, Cell 기반의 RSSI 값과 삼각측량방법, RTT시간 등.) 
  2. Radar:  거리 2D, 왕복거리 
    1. Radar는 센서이므로  TX 와 RX(반사파) 에 차이를 Analog 신호 분석 
    2. Digital Data 전송 불가능 
    3. FMCW Radar 센서분석 
      1. Range - 거리측정 가능
      2. Doppler - 속도측정 가능 
      3. Angle - 방향측정가능 (SIMO,MIMO 일경우 부터 가능)
      4. 카메라와 확장 (영상 과 확장 Spartial Resolution 결합) 

최근 TI의 BLE 6.0 데모를 보면, Channel Sounding 나오는 것을 보면 AoA까지는 안되는 듯 하며, Range 측정까지만 (이 부분은 추후별도 설명 )

기술적으로 RF통신에서 RTLS를 통해, Radar 처럼 구현을 하려고 함 

3/29/2022

ESP32 WIFI 관련자료 정리

1. WIFI의 관련정보의 정리 

최근에 WIFI MCU를 하게되어 이전에 정리했던 WIFI 자료와 다 같이 정리하기로 했다. 
그리고, 자꾸 WIFI 관련문제사항들이 발생하여, WIFI 원인분석이 필요한 부분들은 간단히 정리한다. 

WIFI 사용되어지는 용어정리 
WIFI에서 사용되어지는 기본적인 용어와 관련내용을 간단히 정리


1.1 WIFI Layer 2 와 WIFI Driver 정보 

WIFI Driver를 분석하고 내용알려면, 대충은 Layer2는 어떻게 동작하는지는 알아야한다. 
그리고, WIFI Driver 역시 각 Chip Vendor마다 지원되는 기능도 다르다. 
이전에는 Full Mac/Soft Mac 으로 WIFI Chip 어디까지 Control하느냐에 따라 이를 구분하고, 또, 지원되는 모드도 다 달라서 사용하기가 좀 그랬다.  
사실 요즘 WIFi Driver를 거의 잘 보지를 못해서 현재는 잘모르겠으며, 오래전에 정리한 것을 링크만 연결한다. 

WIFI Layer2 와 Ethernet Encapsulation
WIFI의 핵심인 Layer2 Packet 종류와 관련내용들 정리
이부분을 더 알고 싶다면, 돈을 내시고 IEEE 802.11 협회에 가입하셔서, Spec을 보시길 권장하며, 나도 옛날꺼 밖에 없으며, 이것도 지인을 통해 얻은 것이다. 

Linux WIFI Driver 관련정리 
옛날에 대충정리해서 지금보니 엉망이라 다시 정리를 해야 할 것 같다. 

Linux WIFI Tool 이용 
별로 쓸모가 없을거 같으나, 일단 Linux의 Tool 사용을 위해서 참고만 하자


1.2 WIFI 2.4G Channel 관련자료 

가장 많이 사용하는 WIFI의 2.4G 대역의 Channel을 간단히 알아보고 혼선 및 특징을 알아보자. 
더불어 요즘 WIFI 2.4G이외에 다른 ISM Band도 추가해서 사용하는데, 관련부분도 좀 알아보자. 

WIFI Wiki
역시 Wiki가 설명이 잘되어있으며, 정말 감사하다 

  • WIFI 2.4GHz (802.11b/g/n/ax 나라별 사용하는 Channel) 
각 Channel의 간격은 5MHz 이지만, Ch14만 12MHz
WIFI Bandwith는 보통 20MHz/40MHz로 각 AP에서 HP를 통해 설정가능 
ChannelF0 (MHz)Frequency
range
(MHz)
North
America
[3]

Japan
[3]

India
[4]
Most of
world
[3][5][6][7]
[8][9][10][11]
124122401–2423YesYesYesYes
224172406–2428YesYesYesYes
324222411–2433YesYesYesYes
424272416–2438YesYesYesYes
524322421–2443YesYesYesYes
624372426–2448YesYesYesYes
724422431–2453YesYesYesYes
824472436–2458YesYesYesYes
924522441–2463YesYesYesYes
1024572446–2468YesYesYesYes
1124622451–2473YesYesYesYes
1224672456–2478NoBYesYesYes
1324722461–2483NoBYesYesYes
1424842473–2495No11b onlyCNoNo


WIKI설명을 보면 
간섭의 보장 받기 위해서 2MHz는 Guard band로 사용한다고 하며, 보통 16.25 ~ 22MHz 사이로 사용한다고 한다. 
하지만, WIFI 와 LTE는 OFDMA방식이므로, 아래와 같이 Channel 간의 중복을 허용한다. (궁금하시면, OFDM 보시길)
  1. Ch6 Center Frequency:  2437 -  (22/2) = 2426 으로 Ch4의 1Mhz가 부족 
  2. Ch6 Center Frequency:  2437 + (22/2) = 2448 으로 Ch8의 1Mhz가 부족  
  https://en.wikipedia.org/wiki/List_of_WLAN_channels

Overlap되지 않는 Bandwith는 아래와 같다하며, 
좌측 20MHz 기반으로 중간을 보면 1/5/9/13으로 사용

https://en.wikipedia.org/wiki/List_of_WLAN_channels

WIFI 2.4G Channel 간섭문제 


ISM Band 
ISM Band는 주로 Industrial/Scientifc/Medical 목적으로 무료로 사용가능한 주파수 대역을 말한다
나의 경우, ISM Band는 LoRa나 TI의 Simplicity를 통해 알게되었는데, 400/900MHz 대역만 있는줄 알았는데, 아래를 보니, 아니였다. 
최근 IoT RF에 해당하는 프로토콜의 관련주파수 대역이기도 하다. 

ISM Band 와 LoRA 
좀 이상한게, LoRA Gateway 경우는 800MHz 대역을 분명 사용한 걸로 기억을하는데, 이 부분은 나중에 Semtech Datasheet를 다 확인해 봐야겠다. 
내 기억으로는 LoRA Gateway의 경우 1개의 SX1301로 2개의 SX1257(Transciever) Control 한다. 
이유는 동시에 여러 Channel Bandwith(200MHz)를 확보하기 위해서 두개 사용한 걸로 기억한다. 
만약, LoRA device로만 사용한다면, Transciver 한개면 충분하다. 


2. ESP32 의 WIFI 자료분석  

ESP32에서 제공하는 WIFI의 기능들을 간단히 알아보도록 하자. 

  • ESP32 WIFI Guide 
ESP32 WIFI Feature들을 간단히 정리해서 알아보자. 
  • Support station-only mode, AP-only mode, station/AP-coexistence mode : 각 3개모드 제공 (STA/AP/AP+STA)
  • Support IEEE 802.11b, IEEE 802.11g, IEEE 802.11n and APIs to configure the protocol mode (802.11bgn 지원 및 Configuration 가능)
  • Support WPA/WPA2/WPA3/WPA2-Enterprise and WPS : 암호화 부분 거의 제공 
  • Support AMPDU, HT40, QoS and other key features: WIFI Layer 2관련내용으로, Bandwith, QoS 관련내용 
  • Support Modem-sleep: Power Management 기능 
  • Support the Espressif-specific ESP-NOW protocol and Long Range mode, which supports up to 1 km of data traffic: ESP사 전용 Protocol로 Lora 같이 ISM Band 사용할거 같음(LR)
  • Up to 20 MBit/s TCP throughput and 30 MBit/s UDP throughput over the air
  • Support Sniffer: Smart Config 때문에 필요(WIFI STA/AP+STA) 
  • Support both fast scan and all-channel scan:  fast scan은 좀더 알아봐야 할거 같음 
  • Support multiple antennas: MIMO???
  • Support channel state information: 이 부분은 좀더 확인 


2.1 ESP32 의 WIFI 관련정보 

  • ESP32 WIFI 성능개선법 
ESP32의 경우 기본적으로 LWIP 와 WIFI를 연결하여 사용되어지며, 각 Buffer도 세부조절이 가능하다. 
한마디로 적절하게 설정해서 성능을 향상하라는 것이며, 아래의 각 설정에 대해서 세부적으로 알아보도록하자. 
각 설정에 따른 성능표를 제공하고 있으므로, 이를 참조하자.  

  • ESP32 WIFI PSRAM기반의 Buffer 설정 
WIFI Buffer를 PSRAM을 사용한다고 하는데, 각 설정하는 법과 성능확인 
WIFI Buffer를 Static or Dynamic 설정인데, 동적할당도 문제가 생기면 동일하게 한계는 있는 것 같다. 
WIFI Buffer 와 LWIP Buffer 는 밀접한 관계이므로 각 설정을 알아두도록하자 

  • WIFI STA 의 Beacon Timeout 
ESP32의 WIF STA일 경우 WIFAP가 살아있는지 확인을 위해서 60개 becaons을 받아 AP의 존재여부를 확인하는데, 
이때,  Layer 2의 Beacon이 Timeout이 발생한다면, Layer 2의 Probe Reqeust를 보내 확인 AP의 연결상태를 확인한다는 내용이다. 
결론적으로  WIFI STA 주기적으로 Beacon을 받고 Timeout 되며 Probe Reqeust로 재확인하고 실패하면, WIFI STA는 DISCONNECTED로 됨 

  • ESP32 Low-Level TX API 
ESP32에서 제공해주는 Layer2의 Management Packet 사용가능한 API
beacon/probe (request/response)/action/Qos 지원

  • ESP32의 WIFI STA의 Scan방식 
WIFI STA일 경우, Active/Passive Scan 다 지원하며 default가 active scan 방식이라며, 각 다양한 Scan방식을 확인 가능
  1. All-Channel Background Active Scan
  2. All-Channel Background Passive Scan
  3. All-Channel Foreground Active Scan
  4. All-Channel Foreground Passive Scan
  5. Specific-Channel Background Active Scan
  6. Specific-Channel Background Passive Scan
  7. Specific-Channel Foreground Active Scan
  8. Specific-Channel Foreground Passive Scan 

  • ESP32 WIFI Channel State Information
Channel 상태 정보라고 하는데, Sub carrier를 같이사용하여 이용하는 것 같다.  

  • ESP32 의 WIFI AP 설정 
AP를 설정할 경우, Channel은 Country Code에 의해 변경되어지며, 이는 미국/유럽 및 나라마다 사용하는 채널이 조금씩 다름 

  • WIFI HT20/40
WIFI의 Bandwith 설정 


ESP32에서 제공하는 WIFI/BT의 RF Calibration 


ESP WIFI Mesh
ESP에서 제공해주는 기능으로 Mesh기능으로 추후에 이부분을 개인적으로 좀 더 해보도록하겠다. 


2.2 ESP32 WIFI Sniffer Mode

ESP32에서 WIFI Sniffer를 사용하는 이유는 아래의 SmartConfig 기능이 때문일 것이다.

  • WIFI SmartConfig 란?
TI에서 개발되어진 WIFI Provisiong 특허기술이라고 하며, 최근 회사에서 사용해서 알게되었다.
보통 WIFI STA 의 경우,  WIFI AP에 접속하려면, SSID/PW 정보를 WIFI STA에서 직접 입력 후 이를 Provisiong, 즉 암호화해서 전달해준다.
WIFI STA에서 Provisiong은 Layer 2부터 변경해서 하는데, 상위 특허기술은 내 생각에는 획기적이라고 생각들었다. (역시 TI, 특허도 오픈하고) 

ESP32, SmartConfig가 지원되는 WIFi STA 되면,  WIFI AP 접속을 다른 WIFI STA에서 쉽게 제어가능하다. 
ESP Touch 의 Android 앱을 설치한 후 핸드폰(WIFI STA)에서 UDP로 SSID/PW를 Broadcast전송하다.
이를 ESP32가 Sniffer Mode에서 상위 UDP기반의 SSID/PW를 받아 WIFI Provisiong 진행한다.


SmartConfig (WIFI Provisioning)


SmartConfig 필수 조건사항 
  1. ESP32 or ESP8266:  ESP32의 WIFI STA Mode 설정과 WIFI Sniffer Mode 지원
  2. Android (WIFI STA Mode)기기: ESP Touch App 설치 

ESP Touch APP과 ESP32 동작순서  
  1. ESP Touch APP  SSID/PW 입력 , 이 정보를 UDP 전송 
  2. ESP32은 WIFI STA/Sniffer 기능으로 상위 UDP 정보(SSID/PW)획득
  3. ESP32은 받은 SSID/PW기반으로 WIFi STA Provisiong 진행 
  4. ESP32의 WIFI STA 은 WIFI AP 접속완료  
한마디로 Provisiong 전에 UDP로 몰래 빼어보내고, 이 정보 받아 실제 WIFI Provisiong 진행한다는 것이다. 
https://www.espressif.com/en/products/software/esp-touch/overview

ESP32 SmartConfig (Sniffer기능 필수), WIFI STA으로 가능 

ESP32 SmartConfig 소스 
아래의 소스를 보면 동작원리를 대충알게되어진다. 

ESP32 SmartConfig Example 


2.3. WIFI STA Monitor(Sniffer) 모드

ESP32가 Packet Sniffer 모드를 지원한다고 해도, 외부에서 ESP32의 Packet을 Sniffer하고 싶어할 것이다. 
이를 위해서 다른 Linux Board or Android Board or Laptop 에서 설정하는 법을 간단히 소개한다. 
만약 Linux or Android에서 하고 싶다면 wifi driver에서 설정 monitor 변경 후 tcpdump를 사용하여, Wireshark에 연결하면 될거 같다. 
iwconfig 이용하여 monitor (promiscous)로 변경가능하지만,  WIFI Driver에서 미제공 및 HW가 안되는 경우가 있으므로 주의해야 한다. 

tcpdump 와 Wireshark 사용법 

  • 확인사항
각 WIFI STA 모드에서 Monitor모드가 지원되는 지 반드시 확인 

  • Rasperry Pi4의  WIFI 설정확인 (Monitor 미제공확인)
원래 Rasperry Pi4에서 iwconfig로 monitor 하려고 했으나, Raspberry Pi4의 WIFI는 monitor가 미지원되는 것으로 확인
이전에는 WIFI Monitor는 USB WIFI Dongle로 진행했던거 같으며, Odroid 때도 동일한 것 같음(Odroid는 WIFI가 동글로제공) 

  • Laptop 기반으로 wireshark로 설치 
우선 나의 Laptop의 WIFI가 monitor mode가 지원되어 아래와 같이 진행

Laptop 의 ifname 변경 
ifname이 너무 길어서 아래와 같이 간단히 변경 
$ sudo ip link set name eth0 dev enp7s0
$ sudo ip link set name wlan0 dev wlp0s20f3

Laptop 의 Ubuntu 20.04 Wireshark 설치 

/usr/bin/dumpcap 의 권한문제 발생하여 아래와 같이 변경 
$ sudo apt update 
$ sudo apt upgrade 
$ sudo apt install wireshark
$ sudo chmod +x /usr/bin/dumpcap
$ wireshark

Laptop 의 WIFI Monitor변경 
Laptop의 WIFI가 Monitor가 지원되는 것을 확인
$ iwconfig  // Manage Mode 확인 
$ iw list | grep monitor // WIFI Phy 정보확인 및 monitor 지원여부확인 

$ sudo ifconfig wlan0 down
$ sudo iwconfig wlan0 mode monitor
$ sudo ifconfig wlan0 up

$ wireshark       //WIFI Monitor 모드로 동작확인  

WIFI Packet Capture (WireShark)
아래는 참고만 하시면 되겠다. 


3. Android의 WIFI 정보정리 

Android에서 사용하는 기본 WIFI 정보들이며, Google에서 쉽게 설명이 제공되어 있어 다음과 같이 링크로 연결 

  • Android WIFI Overview
Google에서 제공하는 WIFI Overview로 관련부분에 대해 설명이 잘나와있다. 
  https://source.android.com/devices/tech/connect/wifi-overview

  • Android WIFI Scan 
WIFI AP Scan부분이 궁금하여 관련부분을 찾았으나, 현재 자세한 설명은 없어 아래에서 Android WIFi Scan은 Passive 방식 
현재 Android WIFI Scan은 default로 Passive Scan 방식이라고 함 
 
  • WIFI AP/STA 동시 실행 
  

3.1. Android/Linux WIFI 의 구조정리 

오래전에 Android WIFI의 AP/STA/ Direct 의 경우 각각의 구조를 정리한 것이지만, 현재와 많이 다를 것 같다. 
구조만 참고하자. 

Android WIFI STA의 구조 

Android WIFI AP의 구조 


3.2. WIFI Driver Porting 방법 

오래전 집에서 Odroid 기반으로 WIFI Driver를 간단하게 Porting한 것으로 자료를 대충정리했지만, 참고하시길