Skip to main content
Version: ACS CC

Weather Window

A smart window that monitors indoor air quality and external weather conditions, automatically deciding whether to open the window or not.

info

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

Description of Image 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

Schema electrică

Bill of Materials

DeviceUsagePrice
Raspberry Pi Pico 2WMain controller of the system40 RON
BME280 SensorMeasures temperature, humidity, and pressure74 RON
CCS811 SensorMeasures indoor air quality (CO₂, VOC)200 RON
BMP280 SensorSecondary sensor for debugging9 RON
ESP8266 Wi-Fi ModuleExternal data communication21 RON
Stepper Motor 28BYJ-48Drives the simulated window10 RON
ULN2003 Driver BoardStepper motor controller5 RON
2" LCD SPI DisplayDisplays system info70 RON
Breadboard 830 ptsPrototyping platform22 RON
Jumper Wires KitWiring connections8 RON
Prototyping PCB 7x9cmFor permanent assembly6 RON
Ceramic Capacitor KitFiltering and stabilization20 RON
Resistor KitSignal conditioning15 RON

Software

LibraryDescriptionUsage
cortex-m-rtRuntime support for Cortex-M devicesDefines entry point (entry)
embassy-timeTime and delay handlingUsed for timers and delays
embassy-rpRaspberry Pi Pico peripherals (PWM, I2C)Used for PWM motor control and I2C communication
embassy-syncAsynchronous primitives (Signal, PubSub)Synchronization between tasks
embassy-embedded-halShared bus abstractions for SPI/I2CFor safe shared bus access
embedded-hal-asyncAsynchronous traits for embedded devicesAsync I2C communication
display-interface-spiSPI interface for displaysUsed for SPI communication with display
mipidsiDisplay driver for MIPI-DSI displays (ST7735/7789 etc.)Used to control the LCD screen
embassy-lab-utilsHelper macros and utilities (init_wifi!)WiFi initialization support
  1. 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.
  2. Air quality monitoring with Raspberry Pi – A GitHub project using a Raspberry Pi for air quality monitoring with BME280 and CCS811 sensors.
  3. Build a Raspberry Pi SUPER Weather Station – Step-by-step instructions for building an advanced weather station with a Raspberry Pi.