Weather Station
Rust-powered environmental monitoring station
Author: Udrea Alberto-George
GitHub Project Link: https://github.com/UPB-FILS-MA/project-UdrAlberto
Description
The project builds a weather station which should provide real-time weather data on an external display and web interface
Motivation
Building a Raspberry Pi Pico W weather station with embassy-rs combined my interest in embedded systems with a chance to explore networking. It allows me to learn sensor interaction, data processing, and real-time programming. Integrating a web interface adds a network layer, enabling real-time data display and opening doors for future functionalities like remote monitoring.
Architecture
Log
Week 6 - 12 May
Implemented the software baseline
The work in this phase involved the creation of the crates, the assimilation of the necessary resources and the implementation of communication between the components at a grassroots level.
Week 7 - 19 May
Added the network stack onto the software
Here we fixed (most of) the bugs left over from the previous stage of our development and added the network part of the code, which deals with the transmission of the data collected in the network, to the host device of the web application.
We also made progress in the hardware part of the project, basically grounding the physical side of the project
Week 20 - 26 May
The project was finished during this week, with various fixes and new added features varying from calculations methods (meant to compensate for the ADC values transmitted by the sensor, so that we get meaningful measurements in units that we understand), to programming the display and network stack, polishing the hardware and, most importantly, making sure everything works harmoniously.
Also, the web app was developed entirely during this week.
Hardware
We will use a BME280 in order to gather environmental data. The Pico will process this gathered data in order to print meaningful graphics on the provided display. We will also use several push buttons in order to switch between the available data
Schematics and Photos
For the KiCad schematic files, click here
Schematics | ||
---|---|---|
Photos |
Bill of Materials
Device | Usage | Price |
---|---|---|
Raspberry Pi Pico WH | The microcontroller | 56 RON |
BME280 | Temperature, pressure and humidity sensor | 74 RON |
LED Display | Display | 39 RON |
Breadboard | The physical base of the project | 10 RON |
Jumper Wires | For connecting all the different components | 7 RON |
Push buttons | For switching info on the screen | 0.36 RON each / 1.5 RON total |
Software
Library | Description | Usage |
---|---|---|
embassy-rp | The embassy-rp HAL targets the Raspberry Pi RP2040 microcontroller. The HAL implements both blocking and async APIs for many peripherals. | The utilised HAL |
embassy-sync | An Embassy project | Used for mutexes and sending and receiving data over channels |
embassy-time | An Embassy project | Used for organising the flow of the program via Timer:: |
embassy-embedded-hal | Collection of utilities to use embedded-hal and embedded-storage traits with Embassy. | Used for the SPI config |
embassy-futures | An Embassy project | Used for working with futures during asynchronous development |
st7789 | Display driver for ST7789 | Used for the display |
embedded-graphics | 2D graphics library | Used for drawing to the display |