Skip to content

adithyanraj03/Spectrum_Mapper

Repository files navigation

Wi-Fi CSI Human Sensing Pipeline

Python: 3.8+ Electron: Native Backend: PyTorch Dashboard: Plotly Dash

A high-performance, real-time Human Sensing interface leveraging Wi-Fi Channel State Information (CSI). Utilizing an ESP32-S3 microcontroller as a dedicated ingestion node streaming 52-subcarrier complex per-packet IQ datasets, this Python and Electron hybrid desktop application natively infers activities across deterministic spatial timelines.

Real-Time Wi-Fi CSI Activity Recognition Demo


🚀 Key Features

  • Offline Data Generator: Construct synthetic data sequences locally to replicate deterministic motion behaviors for purely offline development environments.
  • Dimensionality Processing: Automated outlier removals (Hampel Filtering), sanitization, extraction processing, dimensionality deduction (Principal Components Analysis), and frequency analysis (STFT) converting a massive 52-carrier tensor vector sequentially down to a readable 10-component tracking scope across continuous 2-second windows.
  • Real-Time Dashboard Rendering: Electron-embedded interface updating Plotly traces for Spectrograms, Amplitude Heatmaps, and 3D PCA Tracking.

📐 Pipeline Architecture Layers

Wi-Fi CSI Sensing Architecture Graphic

Layer Component Action Functionality / Detail
Ingestion Extractor (app.py, pyserial) Live deserialization from hardware Serial (ESP32) vs offline mock-data interpolation via Playback.
Processing Sanitization & Aggregation (processing.py) Iterative operations: applies Hampel Filters, handles matrix conjugations, and STFT computations over 200 frequency segments.
Inference Inference Long-Short Term Memory Analysis (ml_model.py) Employs PyTorch's backend parameter tensors csi_model.pth matched strictly into 4 classes mapping probabilities: [Unknown, Walking, Static, Falling].
Front-End Visualizer App Wrapper (index.js, Dash) Desktop instance containing interactive feedback variables such as live component tracking via Electron.

📋 Requirements

  • ESP32-S3 Firmware: Operable with esp32-csi-tool.
  • Python: Version 3.8+ context dependencies (PyTorch, Dash, scikit-learn).
  • NPM Frameworks: Electron.JS engine wrapper for Chromium.

📥 Building & Installation

Ensure you have your global NPM package manager and Python configured correctly contextually.

1. Repository Setup

# 1. Install Node modules
npm install

# 2. Install Python core utilities
pip install -r requirements.txt

2. Mocking & Tracing Model Files (Optional Offline Generative Workloads)

Generating mock variables will place resulting parameter values internally inside models/. For more details view its internal structure documentation.

# 1. Create a 20,000 instance Mock CSV
python src/generate_synthetic_csi.py

# 2. Compile Model Layer Logic & Save Data Dict parameters
python src/ml_model.py

3. Executable Run Command

# Deploys Python backend daemon iteratively passing over local :8050 to UI
npm start

📖 License & Legal

Distributed under the MIT License. See LICENSE for more information.

About

A real time hybrid application for Human Activity Sensing using Wi-Fi Channel State Information (CSI). It ingests raw IQ subcarrier packets from an ESP32-S3, processes them via PCA/STFT, and classifies physical activities using PyTorch.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors