HVAC systems around world release 1,950 million tons of carbon dioxide every year, accounting for around 4% of global greenhouse gas emissions. Outdated thermostats are one of the main factors due to their poor functionalities, including not being able to change the temperature from a remote location. Without proper temperature setting features, users who are of the household run the risk of higher energy bills and larger carbon footprints. With low ease of access, outdated functionalities, and potential environmental harm; the standard HVAC needs a fresh redesign for the future.
What it does
Our smart thermostat add-on uses a Python GUI that displays local temperature information to a user. The GUI also features a slider where users can input a temperature based on the local weather information provided, as well as a button that sends the user's input and sets the thermostat.
The GUI sends this information to an ESP32 microcontroller that maps the temperature input to a servo motor. The motor then rotates based off the input, which will move the user's thermostat to that temperature.
How we built it
For the software, we implemented a custom-built Python graphical user interface using the customtkinter and tkinter libraries. This allowed us to create a visually pleasing GUI that is easy to interact with and displays all of the information in a way that is easy to understand. The GUI also incorporates an OpenWeather API that provides the user with the local temperature, including the daily max and min temperatures. For sending the information, the GUI incorporates TCP communication to send the GUI temperature to the ESP32 microcontroller. For simulation purposes, we used Onshape to recreate an entire HVAC thermostat system that includes our smart add-on using CAD.
For the hardware, we utilized an ESP32 microcontroller that uses C++, which allowed for efficient energy consumption and communication capabilities. The values from the GUI (which are collected on a scale from 60-90 degrees Fahrenheit) are mapped to a motor connected to the microcontroller (on a scale from 0-180 degrees). The motor implemented for this project was a servo motor that provides precise rotations to ensure that the user's input is properly translated to the thermostat.
Challenges we ran into
One of our biggest challenges was implementing various API's and libraries within the Python GUI. None of the group members had previous experience with Python GUI development, so building an interface that can provide weather information, take user input, and send this information over TCP was a big obstacle we needed to overcome. Through trial-and-error, we found that various functionalities had compatibility issues within the GUI, which forced the team to redesign and experiment with different approaches.
Accomplishments that we're proud of
For this project, we were proud to develop a functioning hardware and software project in a short time frame. Within a new setting, all team members were able to gather a variety of tools, materials, and resources efficiently in order to develop a fully-fledged product. In addition to this, the team was also incredibly adaptive to new changes/implementations, especially within the Python GUI. We decided to incorporate the CAD design much later in the design process; however, all team members were able to integrate the simulation and hardware incredibly effectively. Finally, being able to incorporate hardware, software, and TCP programming within this hackathon was a great accomplishment.
What's next for the Smart Thermostat
For the future of the Smart Thermostat, we plan to take the CAD simulations and begin prototyping physical HVAC add-ons. We would implement this by 3D-printing the mounts and components, and we would begin running experiments to test the accuracy and energy efficiency of the device. We would also implement a more standardized/accessible power source in the future in order to have a smaller form factor for the add-on, increasing its portability and potential capabilities.