/ PROJECTS

Automating Dorm Room Air Conditioner

One of the frustrations of living with roommates that is rarely talkd about is the battle over the room temperature. This was one of the biggest point of contention between my roommaates in freshman year.

However, our problem was slightly more nuanced. It wasn't that that we preferred different temperatures, but that the thermostat did a terrible job of maintaining a set temperature because of its poor placement in the room. Since the hope of a comfortable temperature was lost, we regressed to the extremes. One roommmate preferred that we kept the AC on a full blast constantly, making the room feel like the frozens section in a grocery store. The other roommate wanted us to just leave it off and let the summer heat of Nashville regulate the room temperature (also a terrible alternative). I, on the other hand, I did not prefer either and instead looked to technology to fix the problem.

Initial Idea

My initial idea was simple: build a simple controller using an Arduino that measures the room temperature from a central location and uses a servo to adjust the AC setting to maintain our desired temperature. The first step was creating an interface between the servo motors and the dials that control the temperature and fan speed on the thermostat. I designed these two parts in CAD and 3D printed them.

Control Dial Interfaces
Left: Fan Speed Dial Interface, Right: Temperature Dial Interface

The holes on these interfaces were designed to fit the servo horns I had for each servo. After printing these, I was simply going to control their position using a feedback loop on an Arduino.

Developing it further

Around the same time I was conceptualizing this idea, I was brainstorming final project ideas for my Instrumentation Lab class. This idea fit perfectly within the requirements of the project, so I combined the two and used the lab resources to design the system. I used a National Instruments Data Acquistion Board (DAQ) and LabVIEW (per the project requirements) to collect the sensor data. The DAQ output was fed into a LabVIEW program running on my laptop that calculated the temperature and determined the required AC settings to maintain the setpoint. Since the laptop and DAQ board were located in the middle of the room, I configured the LabVIEW script to send the motor commands to the Arduino over bluetooth. The Arduino simply received the commands and rotated the motors to the desired position.

Finished Setup

After a few sleepless nights of debugging, the system actually worked and regulated the room temperature. These are pictures of the thermistor measurement circuit, AC control circuit, and AC controller interface, in that order.

Thermistor Temperature Measurement Circuit
Thermistor Temperature Measurement Circuit
AC Control circuit
AC Control circuit
Control Interface for AC
Control Interface for AC

Every 15 minutes or so, the controller would turn the AC on and cool the room until it was just below the desired temperature. It functioned well enough to maintain the room within 1 degree celsius of the desired temperature. For the final report for the class, I also analyzed the reduction in energy consumption of the AC when using this controller. Compared to our default of leaving the AC on constantly, the new controller used 37% less energy - a sizable improvement for such a simple system.

However, there was one big problem - it was very noisy. The servos were actually loud enough to wake up my roommates every time they changed the settings (a problem actually worse than the original). Instead of the praise I expected for solving the temperature problem, I only received complaints about how annoying it was. Therefore, before I could add any additional features, I had to take it down.

Further Improvements

If I had more time to work on this controller, I had a few features in mind to improve it further. At it's core, this controller provides a software interface to control the room air conditioner - a very powerful tool that opens a world of possibilities to change the control logic for the AC. One feature my roommmates requested (before they decided it was annoying) was control of the AC over the Internet so that they could change the settings without ever leaving the comfort of their beds. I also wanted to create a routine to change the temperature throughout the day based on all of our schedules. To improve the efficiency of the air conditioner, the controller could modify the agressiveness of the cooling/heating to reduce the amount of time the AC is running based on weather data pulled in from the Internet. And furthermore, this could all be automated using machine learning so the controller learns and improves over time. The potential for growth was endless.

In the end of it all, we went back to alternately freezing and burning for the rest of the semester. Even though it didn't end up solving the problem, I loved every minute of hacking together the solution. In my mind, the value of it came from the actual design process rather than the final functionality.

When I moved into my new dorm the following year, I was relieved to find a thermostat in my room that actually worked properly.