BLOG
WiFi로 벽 너머가 보인다 — 카메라 없는 인물 감지 OSS 『RuView』를 ESP32로 시험하다
WiFi 반사(CSI)로 카메라 없이 사람의 존재·호흡·자세를 추정하는 Rust 제 OSS 『RuView』. 9달러 ESP32-S3로 만드는 구조, Docker로 시험하는 방법, esp-csi와의 차이를 정리합니다.

카메라를 전혀 쓰지 않고, 방 안을 날아다니는 WiFi 전파만으로 사람의 존재·호흡수·심박수, 나아가 몸의 자세까지 추정한다. SF 같은 이야기지만, 이것을 9달러짜리 마이컨과 OSS로 재현할 수 있는 데까지 와 있습니다.
그 중심에 있는 것이 ruvnet/RuView — 6만을 넘는 스타를 모은 Rust 제 WiFi 센싱 플랫폼입니다. ESP32-S3를 센서 노드로 삼아 WiFi 전파의 「반사 패턴」을 해석하고, 영상을 전혀 갖지 않은 채 공간의 상태를 읽어냅니다.
이 글에서는 RuView의 구조와 아키텍처, 실제 시험 방법, 그리고 유사 OSS(espressif/esp-csi, WirelessEye)와의 차이를 정리합니다. 「내 프로젝트에 채택해야 할까」를 판단할 재료를 제공하는 것이 목적입니다.
왜 카메라 없이 사람이 「보이는가」
열쇠는 CSI(Channel State Information / 채널 상태 정보) 입니다.
WiFi 전파는 송신기에서 수신기까지 일직선으로 도달하는 것이 아닙니다. 벽·가구·그리고 인체에 부딪혀 반사되어, 여러 경로를 거쳐 수신기에 도달합니다. 이 「어느 주파수의 전파가, 얼마나 감쇠하고, 얼마나 위상이 어긋나 도달했는가」를 세밀하게 기록한 것이 CSI입니다.
- 사람이 움직인다 → 반사 경로가 바뀐다 → CSI의 파형이 변화한다
- 사람이 호흡한다 → 흉곽이 밀리 단위로 오르내린다 → CSI에 주기적인 미소 변동이 실린다
- 사람이 특정 자세를 취한다 → 반사 패턴에 고유한 「지문」이 나타난다
즉 WiFi 라우터는 전파를 내보내고 있는 것만으로 이미 방을 「비추고」 있습니다. RuView는 그 반사광(전파)을 읽어내는 수신 센서라는 위치에 있습니다. 카메라처럼 영상을 갖지 않기 때문에, 프라이버시 측면에서의 거부감이 압도적으로 작다는 것이 최대의 이점입니다.
RuView의 아키텍처
RuView는 크게 3개 층으로 나뉩니다.
1. 센서 노드(ESP32-S3)
9달러짜리 ESP32-S3가 CSI의 원시 데이터를 뱉어내는 역할을 담당합니다. ESP32 계열은 칩 레벨에서 CSI 취득 API를 가지고 있기 때문에, 전용 SDR(소프트웨어 정의 무선) 장비를 사지 않아도 시판되는 저렴한 마이컨으로 WiFi 센싱의 입구에 설 수 있습니다. 바로 이 점이 이 분야의 민주화를 단숨에 진전시켰습니다.
2. 처리 엔진(Rust)
원시 CSI는 노이즈투성이입니다. RuView의 본체는 Rust로 쓰인 신호 처리·추론 엔진으로, 여기서 다음을 수행합니다.
- 노이즈 제거·위상 보정 등의 전처리
- 호흡·심박 같은 주기 성분의 추출
- 자세·존재 감지를 위한 특징량 계산과 모델 추론
Rust를 택한 것은 실시간성과 메모리 안전성의 양립을 노린 것이겠지요. 엣지에서 상시 돌리는 신호 처리에는 이치에 맞는 선택입니다.
3. 시각화·API 층
추정 결과를 대시보드나 API를 통해 외부로 내보내는 층입니다. Docker로 한꺼번에 띄울 수 있기 때문에, 우선 손 안에서 전체상을 파악하는 것이 지름길입니다.
Docker로 시험하기
깊게 작업을 만들기 전에, 먼저 동작하는 상태를 보는 것이 이해의 지름길입니다. RuView는 Docker Compose로 일괄 실행되는 구성으로 되어 있습니다.
git clone https://github.com/ruvnet/RuView.git
cd RuView
docker compose up
이것으로 처리 엔진과 시각화 층이 기동하고, 브라우저에서 대시보드에 접속할 수 있습니다. 실기 ESP32-S3가 손 안에 없어도 샘플 CSI 데이터를 흘려 넣어 동작을 확인할 수 있는 구성으로 되어 있으므로, 「애초에 CSI에서 무엇을 읽을 수 있는가」를 체감하려면 여기부터 시작하는 것이 최단 경로입니다.
실제로 센싱하려면 ESP32-S3에 펌웨어를 써넣고, CSI 스트림을 엔진을 향해 보내는 데까지 진행합니다. 이 단계에서 비로소 「벽 너머의 호흡」이 숫자로 나타납니다.
esp-csi / WirelessEye 와의 차이
WiFi 센싱 계열 OSS는 RuView만이 아닙니다. 채택 판단을 위해 대표적인 3가지를 정리합니다.
espressif/esp-csi
Espressif 공식 리포지토리로, ESP32에서 CSI를 취득하기 위한 펌웨어와 샘플이 중심입니다. 위치로는 「CSI의 취득과 기본 샘플」이며, 상위의 추론·시각화·운용까지는 직접 짜는 것을 전제로 합니다.
- 강점: 공식·경량·칩에 가장 가까움, 확실히 CSI를 취득할 수 있음
- 약점: 존재 감지나 자세 추정까지는 커버하지 않음. 토대이지 완성품이 아님
RuView는 이 esp-csi적인 「CSI를 취득한다」 레이어의 위에 추론·시각화·운용을 쌓은 것이라고 파악하면 관계가 깔끔해집니다.
WirelessEye
CSI를 실시간으로 시각화하는 데 주안점을 둔 도구입니다. 「전파에 무엇이 비치고 있는가」를 우선 눈으로 보고 싶은 연구·학습 단계에서 강합니다. 다만 그대로 제품에 넣는 처리 기반이라는 성격은 아닙니다.
RuView의 위치
| OSS | 주안점 | 완성도의 성격 |
|---|---|---|
| esp-csi | CSI의 취득 | 토대(상부는 직접 제작) |
| WirelessEye | CSI의 시각화 | 관찰·학습용 |
| RuView | 취득〜추론〜시각화 | 통합 플랫폼 |
「우선 구조를 이해하고 싶다」면 esp-csi나 WirelessEye로 전파를 들여다보는 것이 빠릅니다. 「존재·호흡·자세까지 일관되게 시험하고 싶다」면 RuView, 라는 역할 분담입니다.
채택을 검토할 때의 현실적인 주의점
꿈이 있는 기술이지만, 업무에서 쓴다면 냉정한 선긋기가 필요합니다.
- 정확도는 환경 의존: 가구 배치, 벽의 재질, 다른 WiFi 기기의 간섭으로 CSI는 크게 변합니다. 「어떤 방에서든 즉시 정확도가 나오는」 것이 아니라, 환경별 캘리브레이션이 전제가 됩니다.
- 카메라의 대체가 아니라 다른 것: 개인의 식별이나 세밀한 동작 인식은 카메라의 영역입니다. CSI가 강한 것은 「누구」가 아니라 「있다/움직였다/호흡하고 있다」와 같은 프라이버시를 배려한 거친 상태 파악입니다.
- 용도를 가림: 고령자 지켜보기, 재실 감지에 의한 공조·조명 제어, 취침 중의 바이탈 모니터 등, 카메라를 두고 싶지 않은 장소에서야말로 진가가 나옵니다.
바꿔 말하면, 이 「카메라를 둘 수 없다/두고 싶지 않다」는 제약이 있는 현장에서는 9달러 ESP32로 시작할 수 있는 RuView는 대단히 매력적인 선택지입니다.
정리
WiFi 센싱은 전용의 고가 장비가 필요했던 시대에서, 저렴한 마이컨과 OSS로 누구나 시험할 수 있는 단계에 들어섰습니다. RuView는 그 「취득에서 추론·시각화까지」를 하나로 묶은, 현시점에서 가장 진입하기 쉬운 입구 중 하나입니다.
우선 Docker로 돌려 CSI에 무엇이 비치는가를 체감하고, 감이 오면 ESP32-S3를 한 장 사서 실측으로 나아간다 — 이 순서라면 수천 엔과 몇 시간으로 「WiFi로 벽 너머가 보이는」 세계에 닿을 수 있습니다.
센서 데이터의 처리 기반이나, 이러한 엣지 디바이스를 얽은 제품 개발을 검토하고 계신다면, 주식회사 와이어드&에코 까지 부담 없이 상담해 주십시오.