Skip to main content

Cooling Station

Adjustable fan that is powered by a smart thermostat

info

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

  1. Raspberry Pi Pico W: Microcontroller board used for processing and sending the data to all devices
  2. LCD screen 1602 module: Used for displaying the live temperature and usage instructions
  3. LED: Shows when the temperature is lower than the threshold or over it (blinks when approaching limit temperature)
  4. Buttons: Used for controlling fan speed once the temperature is above certain threshold
  5. Buzzer: Beeps louder and louder when temperature is rising until the threshold
  6. Breadboard: Needed for building and testing the circuit
  7. Jumper wires: Needed for connecting the components

 

Architecture Diagram

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.

info

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:

HDW1

HDW2

HDW3

HDW4

HDW5

HDW6

Schematics

KiCAD Schematic

Bill of Materials

DeviceUsagePrice
Rapspberry Pi Pico WThe microcontroller35 RON
1602 LCDLCD Screen16.34 RON
Button 6x6x6Buttons for controls0.36 RON
Electronic Components Starting KitKit with electronical components74.99 RON
Breadboard with 830 pointsConnects componentsIn-Kit
BuzzerConnects componentsIn-Kit
LED x 2Electrical ComponentIn-Kit
220KΩ x 2Electrical ComponentIn-Kit
WiresConnects componentsIn-Kit
Pressure sensor Barometric BMP280 GYPressure Sensor8.49 RON
120x120 PWM FanFan26.99 RON
5-12 Power SourcePower Source10.41 RON

Software

LibraryDescriptionUsage
embassy-rpEmbassy Hardware Abstraction Layer (HAL) for the Raspberry Pi RP2040 microcontrollerUsed for initializing hardware PINs and protocols used by devices such as the Display, Buzzer, LCDs, Fan and Sensor.
embassy-embedded-halCollection 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-timeInstant and Duration for embedded no-std systems, with async timer supportStops code execution for a definite time period
embassy-executorasync/await executor designed for embedded usageUsed for spawning/tasking asynchronous functions like main and tasking functions like logger-task
lcd1602-driverAn embedded-hal based driver for the LCD1602 displayUsed for defining and customizing display's traits and features
heaplessstatic friendly data structures that don't require dynamic memory allocationUsed for variables unsigned to String conversion
  1. How to use BMP280 GY over SPI with a Pico Microcontroller using Rust
  2. How to make Temperature Controlled Fan Using Arduino and DHT11
  3. How to Use the Adafruit BMP280 Sensor
  4. BMP280: Measure Temperature, Pressure and Altitude