Weather and air quality station: Part 1
Battery-Powered Weather & Air Quality Station
Raspberry Pi Pico 2 W + Inky Impression 7.3” + Bosch BME690 + Bosch BMV080 + Meteoblue API
Firmware written in C for the Pico’s RISC-V core
Project Overview
This project builds a standalone weather and air quality monitoring station. The Raspberry Pi Pico 2 W collects measurements from two Bosch sensors (BME690 and BMV080), pulls forecast data from the Meteoblue API over Wi-Fi, and displays results on a 7.3” e-paper display (Inky Impression). The device will be battery powered and enclosed in a plexiglass case to protect components while ensuring airflow.
System Architecture
Data flow:
Sensors (BME690 + BMV080)
-> Data Processing + Rolling Averages
-> Wi-Fi Forecast Fetch (Meteoblue JSON)
-> UI Construction (framebuffer)
-> E-Paper Display Refresh
Components:
- Raspberry Pi Pico 2 W (RISC-V)
- BME690: temperature, humidity, pressure, gas (IAQ)
- BMV080: particulate matter (PM1, PM2.5, PM10)
- Inky Impression 7.3” e-paper over SPI
- HTTPS networking using lwIP + mbedTLS
- Lightweight JSON parsing in C (ex: jsmn)
Design:
- Event-driven firmware with deep sleep between tasks
- Forecast caching for offline operation
- Minimal UI optimized for e-paper refresh constraints
- All core firmware written in C
Display and UI Strategy
- Refresh e-paper only on a schedule or when values change
- Off-screen framebuffer rendering
- UI features:
- Temperature and humidity
- PM2.5 concentration
- Short forecast summary
- Battery voltage
- Timestamp for last update
Suggested refresh interval: 20 to 60 minutes
Power System
Battery: 3 AA cells in series
Electrical notes:
- NiMH: approx. 3.6 V nominal, 4.2 V fresh
- Safe to connect directly to Pico VSYS input (1.8 to 5.5 V range)
Series rules:
- Voltage increases (3x)
- Capacity stays 2000 mAh
- Energy increases to approx. 7.2 Wh
Wiring:
3xAA holder (+) -> switch -> optional protection -> VSYS (Pico)
3xAA holder (-) -------------------------------> GND (Pico)
Battery level can be read via VSYS/3 ADC pin.
Recommended Duty Cycles
- BME690: 2–5 min interval
- BMV080: 10–60 min interval
- Wi-Fi forecast: 30–60 min interval
- E-paper refresh: 20–60 min interval
Estimated Runtime
Assumptions:
- 7.2 Wh battery energy
- 85% regulator efficiency
- Approx. 6.12 Wh usable at 3.3 V
- Average 3.3 V load depending on duty cycle
| Mode | Avg Current | Runtime Hours | Runtime Days |
|---|---|---|---|
| Air Quality Focused (BMV080: 5 min) | 2.50 mA | ~742 | ~30.9 |
| Balanced (BMV080: 10 min) | 1.36 mA | ~1364 | ~56.8 |
| Battery Saver (BMV080: 60 min) | 0.38 mA | ~4880 | ~203 |
Major power contributors:
- BMV080 sensor duty cycle
- Wi-Fi bursts
- Display refresh cycles
Enclosure Notes
- Plexiglass case with airflow channels for sensors
- Prevent heat transfer from MCU and display into sensors
- Secure e-paper ribbon cable
- Provide easy access for battery replacement
Development and Testing Plan
- Bring up sensors and verify I2C
- Implement sensor data processing and UI rendering
- Add Wi-Fi and Meteoblue JSON support
- Measure power usage and adjust intervals
- Assemble enclosure and validate environmental behavior
Error messaging:
- Wi-Fi unavailable (using cached forecast)
- Sensor communication error
- Low battery (auto-reduce update frequency)
Future Work
- Final wiring/PCB design
- Battery gauge improvements
- Optional data logging
- Potential partial refresh optimization