2026.05.20 - ESP32-S3 기반 WiFi CSI 데이터 수집 시스템 구현
활동 개요
2026년 5월 20일에는 CareWave 프로젝트의 핵심 기반 기술인 ESP32-S3 기반 WiFi CSI 데이터 수집 시스템을 실제 보드에서 구현하고 검증했다.
이번 작업의 목표는 ESP32-S3 보드에서 WiFi Sensing에 필요한 원시 데이터인 CSI(Channel State Information)를 실제로 출력하는 것이었다.
결과적으로 ESP32-S3 보드에 펌웨어 Flash 업로드를 완료했고, Active AP / STA 구조를 구성했으며, WiFi CSI 기능을 활성화한 뒤 Serial Monitor에서 CSI_DATA Raw Data 출력까지 확인했다.
CareWave ESP32-S3 WiFi CSI ESP-IDF Active AP Active STA Raw DataGitHub Repository
관련 이론 / 내용 정리
이번 작업은 ESP32, WiFi CSI, AP/STA 구조, CSI Raw Data, CSV 저장 흐름을 알아야 이해할 수 있다. 아래 버튼을 누르면 각 개념을 따로 정리한 페이지로 이동한다.
이번 작업의 핵심 목표
CareWave는 카메라나 웨어러블 없이 WiFi 신호 변화만으로 노인의 상태를 감지하는 시스템이다. 이를 위해서는 먼저 사람이 움직일 때 WiFi 신호가 어떻게 변하는지 측정할 수 있어야 한다. 이번 작업은 그 첫 단계로, ESP32-S3에서 WiFi CSI 데이터를 직접 수집하는 환경을 구축한 것이다.
CareWave 전체 흐름
ESP32-S3 보드
↓
WiFi Packet 송수신
↓
CSI Raw Data 추출
↓
CSV 저장
↓
Python 전처리
↓
Amplitude / Phase 변환
↓
AI 모델 학습 및 낙상 감지
따라서 이번 작업은 AI 모델을 바로 구현한 단계가 아니라, AI가 학습할 수 있는 원천 센서 데이터 수집 단계에 해당한다.
작업 결과 요약
- ESP32-S3 펌웨어 Flash 업로드 성공
- ESP-IDF Monitor 출력 확인 성공
- Active AP / STA 구조 구축 완료
- WiFi CSI 기능 활성화 및 오류 해결
- CSI Raw Data 출력 성공
- CSI 데이터 수집 파이프라인 1차 검증 완료
1. Flash 업로드 및 Monitor 출력 확인
ESP-IDF 환경에서 ESP32-S3 보드에 펌웨어를 업로드한 뒤, Monitor를 통해 보드가 정상적으로 실행되는지 확인한 화면이다.
ESP32-S3는 일반 웹 서버 코드처럼 실행하는 것이 아니라, 작성한 펌웨어를 보드에 직접 Flash 업로드해야 한다. Monitor 화면에 보드 정보와 프로그램 시작 로그가 출력되었다는 것은 펌웨어가 정상적으로 올라갔고 ESP32-S3 내부에서 프로그램이 실행되고 있다는 의미다.
노트북과 ESP32-S3의 연결 구조
이번 실험에서는 ESP32-S3 보드를 USB-C 케이블로 노트북에 연결하여 작업을 진행했다. 다만 실제 WiFi CSI 데이터 자체가 USB를 통해 전달되는 것은 아니다.
USB 연결은 크게 다음 역할을 담당한다.
USB-C 연결 역할
1. ESP32-S3 보드 전원 공급
2. 펌웨어 Flash 업로드
3. Serial Monitor 출력 확인
즉, 노트북은 ESP32-S3에 코드를 업로드하고 실행 로그를 확인하는 역할을 한다. 실제 CSI 데이터는 ESP32 보드끼리 WiFi 패킷을 주고받는 과정에서 생성된다.
전체 데이터 흐름
노트북
↓ USB-C
ESP32-S3 RX 보드(active_ap)
↑
│ WiFi packet / WiFi signal
↓
ESP32-S3 TX 보드(active_sta)
↑
↓ USB-C 또는 보조 전원
노트북 또는 전원 공급
즉, USB는 코드 업로드와 로그 확인용 연결이고, 실제 WiFi CSI는 ESP32 보드 간 무선 통신 과정에서 발생한다.
처음 이해하기 어려웠던 개념 정리
이번 작업은 일반적인 웹 개발과 다르게 ESP32-S3 보드 안에 프로그램을 직접 넣어 실행하는 방식이다. 따라서 펌웨어, Flash, Monitor, Serial 같은 개념을 함께 이해해야 한다.
펌웨어
→ ESP32-S3 보드 내부에서 직접 실행되는 프로그램
Flash
→ 작성한 펌웨어를 ESP32-S3 보드에 업로드하는 과정
Monitor
→ ESP32-S3 보드가 출력하는 실행 로그를 노트북에서 확인하는 기능
Serial
→ USB 연결을 통해 ESP32-S3와 노트북이 문자 데이터를 주고받는 통신 방식
정리하면, 노트북에서 코드를 작성하고 ESP-IDF 명령어로 ESP32-S3 보드에 Flash 업로드한다. 이후 ESP32-S3는 보드 내부에서 해당 코드를 직접 실행하고, 실행 중 발생하는 로그와 CSI_DATA를 USB Serial을 통해 노트북 Monitor 화면에 출력한다.
코드 작성
↓
ESP-IDF에서 빌드
↓
ESP32-S3 보드에 Flash 업로드
↓
보드 내부에서 펌웨어 실행
↓
WiFi packet 송수신
↓
CSI_DATA 생성
↓
USB Serial을 통해 Monitor 화면에 출력
2. Active AP 보드 구성
active_ap 코드를 ESP32-S3 보드에 업로드한 화면이다. 이 보드는 WiFi AP 역할을 하며, CSI 데이터를 수집하는 수신기 역할을 담당한다.
Active AP 역할
ESP32-S3 active_ap
↓
WiFi AP 생성
↓
STA 보드 접속 대기
↓
WiFi Packet 수신
↓
CSI Callback 실행
↓
CSI_DATA 출력
3. GitHub 코드 구조 정리
이번에 사용한 CSI_DATA 레포는 ESP32-S3에서 CSI 데이터를 수집하기 위한 코드이며, 핵심 구조는 active_ap, active_sta, _components, python_utils로 나눌 수 있다.
CSI_DATA-main
├─ active_ap
│ └─ AP 역할 보드 코드
│
├─ active_sta
│ └─ STA 역할 보드 코드
│
├─ passive
│ └─ 주변 WiFi 패킷을 수동으로 수신하는 코드
│
├─ _components
│ ├─ csi_component.h
│ ├─ sockets_component.h
│ ├─ sd_component.h
│ ├─ nvs_component.h
│ └─ time_component.h
│
└─ python_utils
├─ parse_csi.py
├─ serial_plot_csi_live.py
└─ serial_measure_rate.py
active_ap
active_ap는 AP 역할을 하는 보드에 업로드하는 코드다. 이 보드는 WiFi AP를 만들고, STA 보드가 보낸 패킷을 수신한다. 패킷을 받을 때마다 CSI callback이 호출되고 CSI_DATA가 출력된다.
active_sta
active_sta는 STA 역할을 하는 보드에 업로드하는 코드다. 이 보드는 AP 보드가 만든 WiFi에 접속한 뒤 UDP 패킷을 지속적으로 보낸다. 이 패킷이 있어야 AP 보드에서 CSI 데이터가 발생한다.
_components
_components 폴더는 공통 기능을 모아둔 곳이다. 특히 csi_component.h는 CSI callback과 CSI_DATA 출력에 직접 관련된 핵심 파일이다.
python_utils
python_utils 폴더는 ESP32에서 출력된 CSI 데이터를 Python으로 읽고, 시간 추가, 실시간 그래프 출력, amplitude/phase 분석 등에 활용할 수 있는 보조 도구를 포함한다.
4. CSI Raw Data 출력 성공
ESP-IDF Monitor에서 실제 CSI_DATA가 출력되는 화면이다. 이번 작업에서 가장 중요한 결과다.
Monitor에 출력된 CSI_DATA는 ESP32-S3가 WiFi 패킷을 수신할 때마다 생성되는 WiFi 채널 상태 정보다. 즉, 사람이 공간 안에서 움직일 때 WiFi 신호가 어떻게 변하는지 분석하기 위한 원본 데이터다.
CSI_DATA 예시 구조
CSI_DATA,
AP,
MAC 주소,
RSSI,
Rate,
Channel,
Timestamp,
CSI Length,
[CSI Raw Data 배열]
가장 중요한 값은 마지막 배열 형태의 CSI Raw Data이다. 이 값은 이후 I/Q 값으로 해석하고, amplitude와 phase로 변환하여 움직임 분석에 사용할 수 있다.
5. 오늘 작업 기록
Flash 업로드, Active AP / STA 구조 구축, CSI Raw Data 출력 성공까지의 진행 상황을 정리한 기록이다.
오늘 완료한 일
- ESP32-S3 펌웨어 Flash 업로드 성공
- Monitor 출력 확인 성공
- 보드에서 프로그램 실행 성공 확인
- Active AP / STA 구조 구축 완료
- WiFi CSI 기능 활성화 및 오류 해결
- CSI Raw Data 출력 성공
- CSI 데이터 수집 파이프라인 1차 검증 완료
다음 할 일
- Serial Monitor에서 출력되는 CSI_DATA를 CSV 파일로 저장
- CSI Raw Data를 amplitude / phase 형태로 전처리
- 낙상, 보행, 정지 등 행동별 데이터 수집 실험 설계
- 이후 UDP 기반 실시간 서버 전송 구조로 확장
정리
2026년 5월 20일 작업에서는 ESP32-S3 기반 WiFi CSI 데이터 수집 시스템을 실제로 구현하고, Serial Monitor에서 CSI Raw Data가 출력되는 것을 확인했다.
이번 결과는 CareWave 프로젝트에서 카메라 없이 WiFi 신호만으로 공간 내 움직임을 감지하기 위한 가장 핵심적인 기반 기술 검증에 해당한다.