Skip to main content

Weather Station

Rust-powered environmental monitoring station

info

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

ArchitectureArchitecture

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

KiCad schematic

Simpler KiCad schematic

Photos

photo1

photo2

Bill of Materials

DeviceUsagePrice
Raspberry Pi Pico WHThe microcontroller56 RON
BME280Temperature, pressure and humidity sensor74 RON
LED DisplayDisplay39 RON
BreadboardThe physical base of the project10 RON
Jumper WiresFor connecting all the different components7 RON
Push buttonsFor switching info on the screen0.36 RON each / 1.5 RON total

Software

LibraryDescriptionUsage
embassy-rpThe embassy-rp HAL targets the Raspberry Pi RP2040 microcontroller. The HAL implements both blocking and async APIs for many peripherals.The utilised HAL
embassy-syncAn Embassy projectUsed for mutexes and sending and receiving data over channels
embassy-timeAn Embassy projectUsed for organising the flow of the program via Timer::
embassy-embedded-halCollection of utilities to use embedded-hal and embedded-storage traits with Embassy.Used for the SPI config
embassy-futuresAn Embassy projectUsed for working with futures during asynchronous development
st7789Display driver for ST7789Used for the display
embedded-graphics2D graphics libraryUsed for drawing to the display
  1. Idea
  2. Arduino BME280 Library (not Rust, but it was useful as a conceptual insight)