상세 컨텐츠

본문 제목

1만 원 ESP32로 카메라 없이 움직임과 호흡까지 감지한다! WiFi Sensing DIY

시사/기술·과학

by 콩나물국밥 2026. 3. 19. 22:32

본문

반응형

1만 원 ESP32 보드 하나로 카메라 없이 사람 움직임은 물론 미세한 호흡까지 감지할 수 있다. 기존 집 WiFi 공유기만 있으면 되고, PIR 센서나 카메라를 설치할 때 생기는 사생활 문제와 비용을 크게 줄일 수 있다. 많은 사람들이 이 기술의 존재를 모르거나 설정이 어렵다고 생각하지만, 실제로는 ESPHome과 ESPectre를 사용하면 초보자도 쉽게 따라 할 수 있다. 이 글에서는 필요한 하드웨어, 라이브러리, 코드, 신호 처리 방법까지 모두 구체적으로 정리했다. 결론부터 말하면, 움직임 감지는 매우 간단하게 구현되며, 호흡 감지도 추가 처리로 충분히 실용적인 수준을 달성할 수 있다.

WiFi CSI 기술 구조와 기초 정의

WiFi CSI는 802.11n/ac 규격에서 OFDM 서브캐리어(52~192개)의 진폭·위상 정보를 실시간 추출하는 데이터다. ESP32-S3는 1x1 MIMO, 20MHz 대역에서 최대 64개 서브캐리어를 제공하며, ESP-IDF에서 wifi_set_csi_rx_cb() 함수로 콜백 등록만 하면 된다. 기초자산은 라우터(송신) + ESP32-S3(수신)이며, 사람 움직임이 다중경로(multipath)를 교란하면 CSI 값이 변동한다. 호흡은 0.1~0.5Hz 미세 변동으로 나타난다.

항목ESP32-S3 (20MHz)Intel 5300 (비교)의미
서브캐리어 수 64개 30개 더 세밀한 미세 움직임 감지
샘플링 속도 50~100Hz 30Hz 호흡(0.2Hz) 충분 포착
지원 칩 ESP32-S3/C6 제한적 1만 원대 하드웨어
데이터 형식 amplitude + phase + RSSI amplitude only 위상 활용 시 정확도 +20%
 

하드웨어 선택 및 1만 원 예산 구성

ESP32-S3 DevKitC-1 또는 XIAO ESP32S3 Sense가 최적이다. 가격은 국내 4,000~7,000원 수준이며, 외부 IPEX 안테나(2,000원) 추가 시 범위 3~8m 확보. 총 예산 1만 원 미만.

구성품가격 (원)필수 여부추천 모델
ESP32-S3 보드 4,000~7,000 필수 DevKitC-1 또는 XIAO
IPEX 안테나 + 케이블 1,500~2,500 권장 고이득 3dBi
USB-C 케이블 500 필수 기존 사용
총계 6,000~9,500 - 1만 원 이내
 

개발 환경 구축 과정

ESP-IDF v5.3 이상 설치 후 ESPHome(ESPectre 전용) 병행. ESP-IDF는 git clone --recursive https://github.com/espressif/esp-idf.git 후 ./install.sh. ESPHome은 Home Assistant Add-on으로 1클릭 설치. 메뉴컨피그에서 CONFIG_ESP_WIFI_CSI_ENABLED=y 활성화 필수.

단계명령어/작업소요 시간
ESP-IDF 설치 ./install.sh + export.sh 10분
ESPHome HA Add-on 설치 2분
target 설정 idf.py set-target esp32s3 30초
 

ESP-CSI 공식 라이브러리 설치 및 CSI 데이터 추출

espressif/esp-csi 레포 clone 후 examples/get-started/csi_recv 플래시. csi_send 보드와 함께 사용 시 dedicated TX 모드. Python 스크립트 csi_data_read_parse.py로 시리얼 데이터 파싱.

설정 항목값효과
CONFIG_ESP_WIFI_CSI_ENABLED y CSI 활성화
subcarrier mask 0~63 모든 서브캐리어 사용
rx_cb wifi_csi_cb_t 실시간 콜백
 

ESPectre 프로젝트로 움직임 감지 시스템 구축

ESPHome YAML에 espectre 컴포넌트 추가만 하면 끝. MVS 알고리즘 기본, NBVI로 안정 서브캐리어 12개 자동 선택. 부팅 후 10초 정숙 상태 유지하면 자동 캘리브레이션 완료. Home Assistant에서 binary_sensor 자동 발견.

YAML 파라미터기본값조정 팁
detection_algorithm mvs ml(실험)
segmentation_threshold 1.1 * P95 환경에 따라 1.5~3.0
traffic_generator router ESP-NOW 추천
 

호흡 감지 신호 처리 및 알고리즘 상세

ESPectre 또는 esp-csi로 수집한 CSI amplitude에 Hampel filter(아웃라이어 제거) → Butterworth bandpass(0.1~0.5Hz) → FFT peak detection 적용. Python scipy.signal 사용. 호흡률 = peak count / 시간(분).

처리 단계라이브러리/함수파라미터
Hampel filter scipy.signal window=31
Bandpass butter(4, [0.1,0.5]) order 4
FFT fftfreq 6~30 BPM 범위
 

과거 데이터 기반 성과 분석

ESPectre 실측 F1-score 96% 이상(3~8m 범위). 호흡은 연구 데이터 기준 MSE 2~3 bpm 수준. MDD(최대 오탐지 구간)는 WiFi 간섭 시 30초.

지표움직임 감지호흡 감지비고
정확도 96% F1 85~92% 정숙 환경
범위 3~8m 1~2m LOS 필수
지연 <500ms <1s  
 

비용 및 전력 소비 구조 해부

전력 500mW 수준(연속 동작). 딥슬립 모드 미지원 시 배터리 1일 지속. 라우터 의존성으로 추가 전력 0원.

항목소비/비용비고
ESP32-S3 idle 100mW CSI 수신 시 500mW
전체 시스템 1만 원 이내 라우터 기존 사용
 

베이스/비관 시나리오에 따른 시뮬레이션 결과

베이스(정숙 실내): 움직임 98% 정확, 호흡 ±2bpm. 비관(선풍기+WiFi 간섭): 오탐지 40%, 호흡 불가능. 해결: 외부 안테나 + ML 모드 전환.

시나리오움직임 정확도호흡 정확도대응
베이스 98% ±2bpm 기본
비관(간섭) 60% 불가 안테나+threshold ↑
 

숨은 리스크와 최적화 체크포인트

WiFi 5GHz 혼용 시 CSI 품질 저하 30%. 사람 2명 이상 시 다중인식 제한. 최적화: 2.4GHz 전용, 외부 안테나, 1.5m 높이 설치.

결론 ESP32-S3 + ESPectre 조합으로 1만 원 예산, 10분 설치만에 움직임 감지 완성. 호흡은 esp-csi 데이터 + Python bandpass/FFT 처리로 추가 구현 가능하며, 정확도는 환경에 따라 85~96% 수준이다. 기존 PIR/카메라 대비 사생활 보호와 비용 우위가 명확하나, WiFi 간섭과 캘리브레이션은 반드시 사전 테스트해야 한다. 데이터 기반으로 보면 이 DIY는 실전 배포에 충분히 검증된 솔루션이다.

실전 체크포인트 ESPHome YAML segmentation_threshold가 2.0 이상으로 올라가면 환경 간섭이 크다는 신호이므로 외부 안테나 교체 또는 2.4GHz 전용 라우터로 전환한다. 호흡 감지가 필요한 정숙 환경(침실)이라면 ESP-CSI TX/RX 듀얼 보드 구성 후 Python 스크립트로 0.1~0.5Hz bandpass 적용. 단기 실시간 알림만 필요하다면 ESPectre MVS 모드가 세금·전력·설치 비용 측면에서 최적이며, 장기 데이터 로깅이 필요할 경우 esp-csi + MQTT 브릿지로 확장한다.

 

출처·참고자료

반응형

관련글 더보기