Project Overview & Team Integration
demo.
Virtual Atmosphere (VA) is a student-built environmental monitoring and atmospheric intelligence platform engineered using a Raspberry Pi 3 Model B+ and a precision GY-BMP280 atmospheric sensor. The project bridges physical environmental observation with modern full-stack web telemetry to monitor local microclimates, log persistent records, visualize thermodynamic trends, and detect critical thermal variations.
Problem Statement & Purpose
ContextCommercial weather applications rely on macro-scale radar stations situated at distant airports, often kilometers away. These broad forecasts fail to capture localized indoor microclimates, classroom heat accumulation, computer lab thermal spikes, or rapid barometric fluctuations within a school building.
Furthermore, many educational IoT setups depend on proprietary third-party cloud brokers or fragile intermediate microcontrollers that introduce unnecessary latency, subscription fees, and internet vulnerability. Virtual Atmosphere solves this by providing a self-hosted, offline-capable monitoring station that runs entirely on local school network infrastructure.
Project Objectives & Expected Outcomes
Goals- Real-Time Physical Telemetry: Sample ambient temperature and atmospheric pressure at configurable sampling intervals (default 10s).
- Local Historical Retention: Index historical measurements in SQLite for analytical querying across 1h, 6h, 24h, and 7d horizons.
- Responsive Visualization: Render interactive Chart.js graphs and live gauges accessible via mobile, tablet, and desktop browsers.
- Configurable Safety Alerts: Detect thermal threshold violations with deduplicated alert tracking and hysteresis resolution.
- Scientific Data Export: Provide one-click CSV data export for scientific graphing, spreadsheet modeling, and STEM coursework.
https://va.developerhut.in/dashboard, supporting both Raspberry Pi live I²C hardware and laptop demo mode.
Project Workflow
Step-by-step end-to-end data acquisition, validation, storage, and presentation pipelineConnect the GY-BMP280 sensor to the Raspberry Pi 3 Model B+ 40-pin GPIO header using the hardware I²C interface (3.3V, GND, SDA on GPIO2, SCL on GPIO3).
Use Python and smbus2 to query I²C bus 1, read raw calibration registers, and poll temperature and atmospheric pressure registers.
Apply Bosch compensation polynomial formulas, validate readings within physical bounds (-40 to 85°C, 300 to 1100 hPa), and attach UTC timestamps.
Commit validated measurements to the local SQLite database using Write-Ahead Logging (WAL) and parameterized queries to preserve historical continuity.
Flask REST APIs serve telemetry, compute min/max/average stats, and evaluate threshold alerts with deduplication and hysteresis recovery.
Render dynamic Chart.js time-series charts, live telemetry cards, delta tendencies, and historical logs on a responsive scientific dark UI.
Execute automated unit tests, verify failover without hardware, configure systemd startup services, and deploy for local LAN and web access.
Meet the Team
Student engineering and research team driving the Virtual Atmosphere projectSystem Architecture & Data Flow
Component-level data progression from physical transducer to client interfacePiezoresistive transducer reading ambient temperature and barometric pressure.
Two-wire synchronous serial communication bus (SDA/SCL) running at 3.3V logic.
Embedded Linux host executing services, managing I²C bus, and local network serving.
Daemon worker polling registers, computing polynomial compensation, and validating bounds.
Lightweight web application serving REST endpoints and managing threshold alert logic.
Thread-safe local database storing indexed time-series readings and alert event logs.
Client interface rendering live gauges, Chart.js trends, and historical query tables.
Hardware Specifications
Bill of Materials| Host Computer: | Raspberry Pi 3 Model B+ (Broadcom BCM2837B0, quad-core Cortex-A53 @ 1.4GHz, 1GB LPDDR2 RAM) |
| Sensor Module: | GY-BMP280 Barometric Pressure & Temperature Breakout (Bosch Sensortec) |
| Power Supply: | 5.0V / 2.5A micro-USB power adapter with stable voltage regulation |
| I²C Connections: | Direct female-to-female Dupont jumper wires (VCC to Pin 1 [3.3V], GND to Pin 6, SDA to Pin 3, SCL to Pin 5) |
| Physical Logic Level: | 3.3V DC logic (strictly never connected to 5.0V pins to prevent sensor damage) |
Software Stack
Application Architecture| Language Runtime: | Python 3.9+ with virtual environment isolation (.venv) |
| Backend Framework: | Flask 3.x WSGI framework with factory pattern and canonical REST endpoints |
| Database Engine: | SQLite 3 with Write-Ahead Logging (WAL) and parameterized indexed queries |
| Hardware Driver: | Python smbus2 direct I²C register driver with fallback simulation engine |
| Frontend Interface: | HTML5, custom responsive CSS3 design system, Bootstrap 5 grid, Chart.js v4.4 |
| Service Management: | Linux systemd background service for autostart on Raspberry Pi boot |
Measurement Limitations & Scientific Accuracy
Scientific StandardsHumidity & Heat Index Transparency
The onboard GY-BMP280 sensor breakout houses a piezoresistive barometric pressure element and an integrated temperature sensor. It does not contain a relative humidity sensor (unlike the BME280).
- No Fabricated Humidity: Virtual Atmosphere strictly adheres to scientific honesty and does not generate or display synthetic humidity data as real readings.
- Heat Index & WBGT Boundaries: Calculating a validated Heat Index or Wet Bulb Globe Temperature (WBGT) requires simultaneous relative humidity and wet-bulb thermodynamic measurements. These calculations cannot be reliably performed using a BMP280 sensor alone.
- Future Expansion: Supporting WBGT or Heat Index would require adding a dedicated humidity sensor (e.g., DHT22/SHT31) or natural wet-bulb temperature apparatus.
Hardware vs. Demo Mode Separation
The application strictly segregates live hardware measurements from development simulation:
- Live Hardware Mode: If the physical sensor is disconnected, the system unambiguously reports Sensor Offline and records zero fake measurements into the database.
- Demo Mode: All simulated records are explicitly labeled with
source="demo"and accompanied by a visible notification banner. - Educational Disclaimer: This system is developed for school IoT science projects and environmental study. Temperature threshold alerts are educational notifications, not medical diagnoses or OSHA industrial safety ratings.