Weather Window
A smart window that monitors indoor air quality and external weather conditions, automatically deciding whether to open the window or not.
Author: Tudor Lavinia
GitHub Project Link: https://github.com/UPB-PMRust-Students/proiect-LaviniaTudor003
Description
Weather Window is an automatic smart window that constantly monitors indoor temperature, humidity, and air quality (including oxygen level estimation). It also gathers external weather data — such as temperature, humidity, and approximate rain probability (based on humidity and pressure) — through a battery-powered module that transmits data wirelessly (via Wi-Fi) to the main display unit. The system automatically determines whether opening the window is necessary to improve indoor conditions. An interactive display presents real-time indoor and outdoor environmental information and provides personalized user recommendations, such as clothing suggestions ("It's cold — dress warmly") or alerts ("It might rain — take an umbrella"). The project also aims to integrate renewable energy sources, such as a solar panel, to increase overall system autonomy.
Motivation
"Weather Window" was first imagined during a high school project, inspired by the idea of creating a living environment that adjusts itself for better comfort and health. Today, with the opportunity to work with real technologies, I am determined to turn that early vision into reality. This project is not just a technical challenge, but also a personal dream to contribute to smarter, healthier, and more sustainable homes.
Architecture
The system is based on a Raspberry Pi Pico 2W, connected to environmental sensors (BME280, CCS811) via I2C, an LCD display via SPI, and a stepper motor driver (ULN2003) via GPIO. A Wi-Fi module (ESP8266) provides external weather data. The Pico collects indoor and outdoor data, displays it, and controls the window motor automatically based on the conditions.
Log
Week 21 - 27 April
- Selected the main components for the project.
- Discussed the project architecture.
- Started component research (sensors, motor, controller).
Week 28 April - 4 May
- Ordered the required components.
- Started writing the project documentation.
- Created the full electronic schematic in KiCad.
Week 5 - 11 May
Week 12 - 18 May
Week 19 - 25 May
Hardware
- Raspberry Pi Pico 2W – Main controller responsible for data processing and motor control.
- BME280 Sensor – Measures temperature, humidity, and atmospheric pressure.
- CCS811 Sensor – Measures indoor air quality, including CO₂ and VOC levels.
- ESP8266 Wi-Fi Module – Connects the system to external weather data sources.
- Stepper Motor (28BYJ-48) – Controls the opening and closing of the window.
- ULN2003 Driver Board – Drives the stepper motor based on control signals.
- 2" LCD SPI Display – Shows real-time indoor and outdoor conditions and recommendations.
- Breadboard and Jumper Wires – Used for prototyping and connecting components.
- Passive Components (Capacitors and Resistors) – Used for signal stability and motor protection.
- Prototyping PCB – Final assembly of the project after initial testing.
Schematics
Bill of Materials
Device | Usage | Price |
---|---|---|
Raspberry Pi Pico 2W | Main controller of the system | 40 RON |
BME280 Sensor | Measures temperature, humidity, and pressure | 74 RON |
CCS811 Sensor | Measures indoor air quality (CO₂, VOC) | 200 RON |
BMP280 Sensor | Secondary sensor for debugging | 9 RON |
ESP8266 Wi-Fi Module | External data communication | 21 RON |
Stepper Motor 28BYJ-48 | Drives the simulated window | 10 RON |
ULN2003 Driver Board | Stepper motor controller | 5 RON |
2" LCD SPI Display | Displays system info | 70 RON |
Breadboard 830 pts | Prototyping platform | 22 RON |
Jumper Wires Kit | Wiring connections | 8 RON |
Prototyping PCB 7x9cm | For permanent assembly | 6 RON |
Ceramic Capacitor Kit | Filtering and stabilization | 20 RON |
Resistor Kit | Signal conditioning | 15 RON |
Software
Library | Description | Usage |
---|---|---|
cortex-m-rt | Runtime support for Cortex-M devices | Defines entry point (entry ) |
embassy-time | Time and delay handling | Used for timers and delays |
embassy-rp | Raspberry Pi Pico peripherals (PWM, I2C) | Used for PWM motor control and I2C communication |
embassy-sync | Asynchronous primitives (Signal, PubSub) | Synchronization between tasks |
embassy-embedded-hal | Shared bus abstractions for SPI/I2C | For safe shared bus access |
embedded-hal-async | Asynchronous traits for embedded devices | Async I2C communication |
display-interface-spi | SPI interface for displays | Used for SPI communication with display |
mipidsi | Display driver for MIPI-DSI displays (ST7735/7789 etc.) | Used to control the LCD screen |
embassy-lab-utils | Helper macros and utilities (init_wifi!) | WiFi initialization support |
Links
- Monitor air quality with a Raspberry Pi – A guide from the Raspberry Pi Foundation on how to monitor air quality using a sensor and Python.
- Air quality monitoring with Raspberry Pi – A GitHub project using a Raspberry Pi for air quality monitoring with BME280 and CCS811 sensors.
- Build a Raspberry Pi SUPER Weather Station – Step-by-step instructions for building an advanced weather station with a Raspberry Pi.