112 lines
2.8 KiB
Org Mode
112 lines
2.8 KiB
Org Mode
#+TITLE: PMME - Particulate Matter Monitoring Ecosystem
|
|
#+OPTIONS: toc:nil
|
|
#+AUTHOR:
|
|
#+DATE:
|
|
|
|
* Overview
|
|
|
|
A complete IoT solution for monitoring air quality using PM2.5 sensors, built with Rust across embedded, cloud, and mobile platforms.
|
|
|
|
* Architecture Overview
|
|
|
|
The PMME system consists of four main components working together to provide real-time air quality monitoring:
|
|
|
|
#+BEGIN_EXAMPLE
|
|
[ESP32 Device] --WiFi--> [Cloud Server] <--HTTP--> [Mobile App]
|
|
| |
|
|
[Admin Panel] <--WiFi--> [PostgreSQL DB]
|
|
#+END_EXAMPLE
|
|
|
|
* Components
|
|
|
|
** 🔧 ESP32 Device (~pmme-device/rust-version/~)
|
|
|
|
- *Platform*: ESP32 microcontroller running esp-idf with Rust
|
|
- *Sensors*: PM2.5 particulate matter sensor (PMS7003)
|
|
- *Display*: SSD1306 OLED for local readings
|
|
- *Connectivity*: WiFi for data transmission to cloud
|
|
- *Features*:
|
|
- Real-time sensor data collection
|
|
- Local display of current readings
|
|
- Automatic cloud data transmission
|
|
|
|
** ☁️ Cloud Server (~pmme-cloud/~)
|
|
|
|
- *Framework*: Rocket web framework (Rust)
|
|
- *Database*: PostgreSQL (planned integration)
|
|
- *Purpose*:
|
|
- Receive and store sensor data from ESP32 devices
|
|
- Provide REST API for mobile app data access
|
|
- Future: Historical data analysis and graphing
|
|
|
|
** 📱 Mobile App (~pmme-mobile/~)
|
|
|
|
- *Framework*: Tauri (Rust + Web frontend)
|
|
- *Platform*: Cross-platform mobile application
|
|
- *Features*:
|
|
- Connect to cloud server via HTTP
|
|
- Display current PM2.5 readings
|
|
- Future: Historical data visualization and graphs
|
|
- Future: Potential direct ESP32 admin panel access
|
|
|
|
** 🌐 Web UI & Admin Panel (~pmme-ui/~)
|
|
|
|
- *Framework*: ClojureScript with Shadow CLJS
|
|
- *Purpose*:
|
|
- Data visualization interface
|
|
- Admin panel for ESP32 device management and provisioning
|
|
|
|
* Getting Started
|
|
|
|
** ESP32 Device Setup
|
|
|
|
#+BEGIN_SRC bash
|
|
cd pmme-device/rust-version/
|
|
# Set up ESP-IDF environment
|
|
./export-esp.sh
|
|
cargo build
|
|
cargo run
|
|
#+END_SRC
|
|
|
|
** Cloud Server
|
|
|
|
#+BEGIN_SRC bash
|
|
cd pmme-cloud/
|
|
cargo run
|
|
#+END_SRC
|
|
|
|
** Mobile App
|
|
|
|
#+BEGIN_SRC bash
|
|
cd pmme-mobile/
|
|
npm install
|
|
npm run tauri dev
|
|
#+END_SRC
|
|
|
|
** Web UI
|
|
|
|
#+BEGIN_SRC bash
|
|
cd pmme-ui/
|
|
npm install
|
|
npm run dev
|
|
#+END_SRC
|
|
|
|
* Future Features
|
|
|
|
- *PostgreSQL Integration*: Historical data storage and analysis
|
|
- *Data Visualization*: Graphs and trends in mobile app
|
|
- *Multi-sensor Support*: Expansion beyond PM2.5 to other environmental sensors
|
|
- *ESP32 HTTP Server*: Device-hosted admin interface
|
|
|
|
* Development Notes
|
|
|
|
- The project previously included a C version implementation which has been deprecated in favor of the Rust implementation
|
|
- The system is designed to be scalable for multiple ESP32 devices reporting to a single cloud instance
|
|
|
|
* Tech Stack
|
|
|
|
- *Embedded*: Rust + esp-idf
|
|
- *Backend*: Rust + Rocket + PostgreSQL
|
|
- *Mobile*: Rust + Tauri
|
|
- *Web/Admin*: ClojureScript + Shadow CLJS
|