관련 이론 03 - CSI_DATA와 I/Q 구조
CSI_DATA 한 줄은 무엇인가?
Serial Monitor에 출력된 CSI_DATA는 ESP32-S3가 WiFi 패킷을 수신할 때마다 출력하는 CSI 로그다. 이번 작업에서 CSI_DATA가 출력되었다는 것은 ESP32 내부의 CSI callback이 정상적으로 동작했다는 의미다.
출력 형태는 설정과 코드 버전에 따라 조금씩 달라질 수 있지만, 일반적으로 다음과 같은 정보가 포함된다.
CSI_DATA,
role,
mac,
rssi,
rate,
channel,
timestamp,
csi_length,
[CSI Raw Data 배열]
각 필드의 의미
- CSI_DATA: 이 줄이 CSI 데이터임을 나타내는 표시
- role: 데이터를 출력한 보드의 역할. 현재 화면에서는 AP로 표시됨
- mac: WiFi 패킷과 관련된 MAC 주소
- rssi: 수신 신호 세기
- rate: WiFi 전송 속도 관련 정보
- channel: WiFi 채널 정보
- timestamp: ESP32 내부 기준 시간 정보
- csi_length: CSI Raw Data 배열의 길이
- CSI Raw Data 배열: 실제 분석에 사용할 핵심 원본 데이터
I/Q 데이터란?
CSI Raw Data 배열은 단순한 숫자 목록처럼 보이지만, 실제로는 WiFi 신호의 복소수 정보를 담고 있다. 이 값은 I와 Q 성분으로 해석할 수 있다.
- I: In-phase 성분
- Q: Quadrature 성분
I/Q 데이터는 WiFi 신호의 세기와 위상 정보를 계산하기 위한 기본 재료다.
CSI Raw Data
↓
I / Q 값 분리
↓
Amplitude 계산
↓
Phase 계산
↓
움직임 패턴 분석
Amplitude 계산
Amplitude는 신호 세기의 변화를 의미한다. I와 Q 값이 있을 때 amplitude는 다음 식으로 계산할 수 있다.
Amplitude = sqrt(I² + Q²)
사람이 움직이면 WiFi 신호의 세기 변화가 발생하고, 이 변화가 amplitude 패턴에 반영될 수 있다. 초기 구현에서는 phase보다 amplitude 중심 분석이 더 직관적이고 안정적이므로 우선 활용하기 좋다.
Phase 계산
Phase는 신호의 위상 변화를 의미한다. I와 Q 값이 있을 때 phase는 다음 식으로 계산할 수 있다.
Phase = atan2(Q, I)
Phase는 움직임에 민감한 정보를 포함할 수 있지만, 노이즈나 보정 문제가 있을 수 있어 초기 단계에서는 amplitude 분석을 먼저 진행하고, 이후 고도화 단계에서 phase를 추가로 활용하는 방식이 적합하다.
현재 작업에서 확인한 의미
이번 작업의 Serial Monitor 화면에서 CSI_DATA가 반복적으로 출력되었다. 이는 다음 흐름이 실제로 성공했다는 의미다.
active_sta
↓
WiFi packet 송신
active_ap
↓
packet 수신
↓
ESP32 WiFi 드라이버가 CSI 생성
↓
CSI callback 실행
↓
CSI_DATA 출력
따라서 이번 결과는 CareWave의 WiFi Sensing 데이터 수집 단계가 실제 보드에서 동작했음을 보여준다.