관련 이론 01 - ESP32-S3와 WiFi CSI
ESP32-S3와 WiFi CSI란?
이번 작업에서 사용한 ESP32-S3는 WiFi 기능이 내장된 IoT 개발보드다. 일반적인 센서처럼 온도나 거리 값을 바로 측정하는 장치는 아니지만, WiFi 패킷을 송수신하면서 무선 신호의 상태 정보를 추출할 수 있다.
CareWave에서는 이 특성을 활용하여 카메라나 웨어러블 없이 실내 움직임을 감지하려고 한다. 즉, ESP32-S3는 WiFi 신호를 만들고 받는 장치이면서 동시에 CSI 데이터를 수집하는 센서 노드 역할을 한다.
CSI의 의미
CSI는 Channel State Information의 약자다. WiFi 신호가 공간을 지나면서 어떻게 변했는지를 나타내는 데이터다.
WiFi 신호는 송신기에서 수신기로 곧장 직선으로만 이동하지 않는다. 실제 실내 환경에서는 벽, 천장, 가구, 사람 몸 등에 부딪히고 반사되며 여러 경로로 이동한다. 이 과정에서 신호의 세기와 위상이 변한다.
WiFi 신호 이동 과정
ESP32 TX
↓
WiFi 신호 송신
↓
실내 공간 통과
↓
벽, 가구, 사람 몸에 의해 반사/왜곡
↓
ESP32 RX
↓
CSI 데이터 생성
사람이 공간 안에서 움직이면 WiFi 신호 경로가 바뀐다. 따라서 CSI 값을 분석하면 사람이 없는 상태, 걷는 상태, 앉는 상태, 낙상처럼 큰 움직임이 발생한 상태를 구분할 가능성이 생긴다.
왜 RSSI가 아니라 CSI를 쓰는가?
RSSI는 전체 수신 신호 세기를 하나의 값으로 보여준다. 반면 CSI는 WiFi 신호를 구성하는 여러 subcarrier별 변화를 더 세밀하게 제공한다.
RSSI
→ 전체 신호 세기 하나만 제공
CSI
→ subcarrier별 신호 변화 제공
→ I/Q 데이터 포함
→ amplitude, phase 분석 가능
→ 움직임 패턴 분석에 더 유리
CareWave처럼 사람의 움직임이나 낙상 같은 순간적인 변화를 감지해야 하는 시스템에서는 단순 신호 세기 하나보다 CSI처럼 세부적인 신호 변화 정보가 더 적합하다.
ESP32-S3를 사용하는 이유
- WiFi 기능이 내장되어 있어 별도 무선 장치 없이 패킷 송수신이 가능하다.
- ESP-IDF 환경에서 WiFi CSI 기능을 활성화할 수 있다.
- 가격이 비교적 저렴하여 TX/RX 여러 대를 구성하기 좋다.
- USB-C 연결을 통해 펌웨어 업로드와 Serial Monitor 확인이 가능하다.
- 초기 실험 단계에서 CSI Raw Data를 빠르게 확인할 수 있다.
현재 코드에서 이 이론이 적용된 부분
현재 GitHub 코드에서는 ESP32-S3 보드에 active_ap 또는 active_sta 펌웨어를 업로드한다. active_ap 보드는 WiFi AP를 만들고 패킷을 수신하며 CSI를 출력한다. active_sta 보드는 AP에 접속하여 패킷을 발생시킨다.
현재 구현된 구조
active_sta
↓
WiFi packet 송신
active_ap
↓
packet 수신
↓
CSI callback 실행
↓
CSI_DATA 출력
즉, 현재 작업은 WiFi CSI 기반 움직임 감지 시스템의 가장 앞단인 CSI 원천 데이터 수집 단계에 해당한다.