왜 CSV 저장이 필요한가?

현재 단계에서는 ESP32-S3 보드에서 CSI_DATA가 Serial Monitor에 출력되는 것까지 확인했다. 하지만 Monitor 화면에 출력되는 로그는 그대로 두면 사라진다. 따라서 AI 학습이나 전처리를 위해서는 이 데이터를 파일로 저장해야 한다.

가장 단순하고 실험에 적합한 저장 방식은 CSV 파일 저장이다. CSV로 저장하면 Python, MATLAB, R 등에서 쉽게 읽을 수 있고, 행동별 데이터셋을 관리하기도 편하다.

Windows 기준 저장 명령어

RX 보드가 연결된 상태에서 active_ap 폴더에서 다음 명령어를 실행하면 CSI_DATA가 포함된 줄만 CSV 파일로 저장할 수 있다.

idf.py -p COM5 monitor | findstr "CSI_DATA" > fall_test_01.csv

여기서 COM5는 예시다. 실제 환경에서는 장치 관리자에서 확인한 RX 보드의 COM 포트 번호로 바꿔야 한다.

idf.py -p COM5 monitor
→ RX 보드의 Serial 출력 읽기

findstr "CSI_DATA"
→ CSI_DATA가 포함된 줄만 필터링

> fall_test_01.csv
→ 필터링된 결과를 CSV 파일로 저장

macOS / Linux 기준 저장 명령어

idf.py -p /dev/ttyUSB0 monitor | grep "CSI_DATA" > fall_test_01.csv

macOS나 Linux에서는 Windows의 findstr 대신 grep을 사용한다.

컴퓨터 시간 timestamp 추가

ESP32 내부 timestamp는 실제 시간과 정확히 맞지 않을 수 있다. 따라서 컴퓨터에서 받은 시간을 추가하고 싶다면 python_utils의 serial_append_time.py를 사용할 수 있다.

idf.py -p COM5 monitor | python ../python_utils/serial_append_time.py > fall_test_01.csv

이렇게 하면 CSI_DATA에 컴퓨터 기준 시간이 붙어 이후 행동 라벨링이나 영상 기록과 시간을 맞추기 더 쉬워진다.

행동별 CSV 파일 관리

낙상 감지 AI를 만들려면 CSI 데이터만 있으면 부족하다. 어떤 행동을 할 때 수집한 데이터인지 라벨이 함께 필요하다. 따라서 실험할 때 행동별로 파일을 나누어 저장하는 것이 좋다.

empty_01.csv
walking_01.csv
sit_stand_01.csv
fall_forward_01.csv
fall_side_01.csv

이렇게 저장하면 나중에 AI 모델 학습 시 각 파일을 행동 라벨과 연결할 수 있다.

다음 단계: Amplitude / Phase 변환

CSV로 저장된 CSI_DATA는 바로 AI 모델에 넣기 어렵다. 먼저 문자열로 저장된 CSI Raw Data 배열을 숫자 배열로 파싱해야 한다. 그 후 I/Q 값을 분리하고 amplitude와 phase를 계산한다.

CSV 파일
    ↓
CSI_DATA 줄 읽기
    ↓
CSI Raw Data 배열 추출
    ↓
I / Q 값 분리
    ↓
Amplitude = sqrt(I² + Q²)
    ↓
Phase = atan2(Q, I)
    ↓
움직임 분석용 데이터 생성

AI 분석으로 가기 전 필요한 전처리

CSI 데이터는 실시간으로 빠르게 들어오는 신호 데이터이기 때문에 노이즈가 포함될 수 있다. 따라서 AI 모델에 넣기 전 다음과 같은 전처리 과정이 필요하다.

  • Sliding Window: 일정 시간 단위로 데이터를 잘라 분석
  • Hampel Filter: 순간적으로 튀는 이상치 제거
  • Low-pass Filter: 고주파 노이즈 제거
  • PCA: 여러 subcarrier 중 핵심 변화 정보 추출
  • FFT / Spectrogram: 시간-주파수 패턴 분석
CSI_DATA 수집
    ↓
CSV 저장
    ↓
Amplitude 변환
    ↓
Sliding Window
    ↓
Filter 적용
    ↓
특징 추출
    ↓
CNN 또는 LSTM 입력
    ↓
Fall / Non-Fall 판단

현재 작업 기준으로 정확한 단계

현재 2026.05.20 작업은 CSV 저장 전 단계까지 성공한 상태다. 즉, Serial Monitor에 CSI_DATA가 출력되는 것을 확인했다.

완료된 단계

ESP32-S3 Flash 업로드
    ↓
active_ap / active_sta 구조 실행
    ↓
WiFi packet 송수신
    ↓
CSI callback 실행
    ↓
CSI_DATA 출력 성공

다음 단계

CSI_DATA CSV 저장
    ↓
Python 전처리
    ↓
Amplitude / Phase 분석
    ↓
행동별 데이터셋 구축

따라서 다음 작업의 핵심은 CSI_DATA를 안정적으로 CSV 파일에 저장하고, 행동별 데이터셋을 만드는 것이다.

← 2026.05.20 작업 페이지로 돌아가기