Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

adithyanraj03/Spectrum_Mapper

Open more actions menu

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

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.