Active AP / STA 구조란?

이번 ESP32-S3 CSI 수집 실험에서는 보드 2대를 사용한다. 하나는 active_ap 코드가 올라간 AP 보드이고, 다른 하나는 active_sta 코드가 올라간 STA 보드다.

AP는 Access Point의 약자다. 쉽게 말하면 작은 WiFi 공유기처럼 동작하는 역할이다. STA는 Station의 약자다. 노트북이나 스마트폰이 공유기에 접속하는 것처럼 AP에 접속하는 클라이언트 역할이다.

현재 코드 기준 역할

active_ap
→ WiFi AP 생성
→ STA 접속 대기
→ packet 수신
→ CSI callback 실행
→ CSI_DATA 출력

active_sta
→ active_ap가 만든 WiFi에 접속
→ UDP packet 송신
→ AP가 CSI를 수집할 수 있도록 packet 발생

즉, active_sta가 패킷을 보내야 active_ap가 패킷을 받을 수 있고, active_ap가 패킷을 받을 때 CSI callback이 실행된다.

TX / RX로 이해하기

CareWave 프로젝트 관점에서는 active_sta를 TX, active_ap를 RX로 이해하면 된다.

TX 역할
= active_sta
= WiFi packet을 보내는 보드

RX 역할
= active_ap
= packet을 받으면서 CSI를 추출하는 보드

중요한 점은 보드 자체가 처음부터 TX나 RX로 정해져 있는 것이 아니라는 점이다. 어떤 펌웨어를 업로드하느냐에 따라 역할이 달라진다.

ESP32-S3 보드 1
→ active_sta 업로드
→ TX 역할

ESP32-S3 보드 2
→ active_ap 업로드
→ RX 역할

왜 패킷을 계속 보내야 하는가?

CSI는 아무 때나 자동으로 생성되는 값이 아니다. WiFi 패킷이 수신될 때, ESP32 WiFi 드라이버가 그 패킷에 대한 채널 상태 정보를 계산하면서 CSI가 생성된다.

패킷 없음
→ 수신 이벤트 없음
→ CSI callback 실행 안 됨
→ CSI_DATA 출력 안 됨

패킷 수신
→ WiFi 드라이버가 CSI 계산
→ CSI callback 실행
→ CSI_DATA 출력

따라서 active_sta 보드가 계속 packet request 또는 UDP packet을 보내야 active_ap 보드에서 CSI_DATA가 지속적으로 출력된다.

현재 실험 흐름

1. RX 보드에 active_ap 업로드
2. active_ap가 WiFi AP 생성
3. TX 보드에 active_sta 업로드
4. active_sta가 AP에 접속
5. active_sta가 UDP packet 송신
6. active_ap가 packet 수신
7. active_ap에서 CSI callback 실행
8. Serial Monitor에 CSI_DATA 출력

이번 작업에서 Serial Monitor에 CSI_DATA가 출력되었다는 것은 active_ap와 active_sta 구조가 정상적으로 동작했고, 실제 WiFi 패킷 수신을 기반으로 CSI 데이터가 생성되었다는 의미다.

passive 모드와의 차이

ESP32-CSI-Tool에는 passive 폴더도 있다. passive 모드는 특정 AP/STA 구조를 직접 만들지 않고, 주변 WiFi 채널의 패킷을 감청하는 방식이다.

active_ap + active_sta
→ 직접 WiFi 송수신 구조를 만듦
→ 실험 환경 통제가 쉬움
→ 초기 CareWave 실험에 적합

passive
→ 주변 WiFi 패킷을 수동으로 감청
→ 환경 통제가 어려울 수 있음
→ 고도화 실험에서 검토 가능

현재 CareWave 실험은 안정적인 데이터 수집이 중요하므로 active_ap + active_sta 구조가 더 적합하다.

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