Cooling Station
Adjustable fan that is powered by a smart thermostat
Author: Postelnecu Ioana
GitHub Project Link: https://github.com/UPB-FILS-MA/project-IoanaP0711
Description
Cooling station is a practical way to cool-off on a hot summer day. Made to stand on your desk with a big fan to cool off any programmer. With an easy and fast Rust powered software can be easily reprogrammed in order to cool-off your room, no matter how hot it is. It is powered with two bright LEDs and a Buzzer that will let you know when the temperature gets to the set threshold. No more need of desk fans or thermometers when you can use the Cooling Station to automatically keep you cool.
Motivation
This idea came to be on a hot summer day, when I was sitting at my desk working on my laptop, thinking... what if there was a fun way to build a fan that can cool you off whenever the temperature gets too high. Knowing that my laptop generates a lot of heat, and that my desk is right in the way of the radiating hot sun, I knew this was the right idea of a project.
Architecture
- Raspberry Pi Pico W: Microcontroller board used for processing and sending the data to all devices
- LCD screen 1602 module: Used for displaying the live temperature and usage instructions
- LED: Shows when the temperature is lower than the threshold or over it (blinks when approaching limit temperature)
- Buttons: Used for controlling fan speed once the temperature is above certain threshold
- Buzzer: Beeps louder and louder when temperature is rising until the threshold
- Breadboard: Needed for building and testing the circuit
- Jumper wires: Needed for connecting the components
Log
Week 12 - 18 Aug
I came with the idea, ordered the pieces and started looking into potential software implementations.
Week 19 - 25 Aug
Put the hardware together and started initial software testing. Made the KiCad schematic.
Week 26 - 1 Sep
Finished hardware, and did the last few touches to the software code done in Rust. Also, started writing the journey of getting this idea, turned to a real, functional thing, into the documentation you are reading right now.
Hardware
The project is based on the Raspberry Pi Pico W, which is the brain of the whole operation. Together with the BMP280 temperature sensor, the two LEDs used for visual temperature warnings, the buzzer for acoustic warnings, and the LCD for written instructions and live temperature, while the fan has the role of the cooler agent.
In this project, Raspberry Pi Pico W is used for processing
the temperature data
, and depending on it, the MCU will power on
the component assembly accordingly
. This results in proper temperature announcements
and a good cooling when necessary
.
The board will not power the fan at first, unless the threshold is reached
, doing a regulated
cool of the temperature, adjusting
the fan speeds
depending on ambiental temperature
. If the temperature is near
or above
the threshold and the user does not consider the cooling good enough or that is too fast, the button
can also be used for manual adjustments
that are saved
while the temperature is oscillating
between the alert
values.
Pictures
Here are some photos of the actual hardware:
Schematics
Bill of Materials
Device | Usage | Price |
---|---|---|
Rapspberry Pi Pico W | The microcontroller | 35 RON |
1602 LCD | LCD Screen | 16.34 RON |
Button 6x6x6 | Buttons for controls | 0.36 RON |
Electronic Components Starting Kit | Kit with electronical components | 74.99 RON |
Breadboard with 830 points | Connects components | In-Kit |
Buzzer | Connects components | In-Kit |
LED x 2 | Electrical Component | In-Kit |
220KΩ x 2 | Electrical Component | In-Kit |
Wires | Connects components | In-Kit |
Pressure sensor Barometric BMP280 GY | Pressure Sensor | 8.49 RON |
120x120 PWM Fan | Fan | 26.99 RON |
5-12 Power Source | Power Source | 10.41 RON |
Software
Library | Description | Usage |
---|---|---|
embassy-rp | Embassy Hardware Abstraction Layer (HAL) for the Raspberry Pi RP2040 microcontroller | Used for initializing hardware PINs and protocols used by devices such as the Display, Buzzer, LCDs, Fan and Sensor. |
embassy-embedded-hal | Collection of utilities to use embedded-hal and embedded-storage traits with Embassy. | Dependency of embassy-rp used for adding embedded-hal traits to embassy |
embassy-time | Instant and Duration for embedded no-std systems, with async timer support | Stops code execution for a definite time period |
embassy-executor | async/await executor designed for embedded usage | Used for spawning/tasking asynchronous functions like main and tasking functions like logger-task |
lcd1602-driver | An embedded-hal based driver for the LCD1602 display | Used for defining and customizing display's traits and features |
heapless | static friendly data structures that don't require dynamic memory allocation | Used for variables unsigned to String conversion |