To save money I bought a small, manual controlled window AC for the few hot days in San Francisco. The problem is the temperature control is crude and I'm stuck with it either in high or low fan mode. Plus it never fully turns off once it has cooled down at night, the fan keeps on running forever. This wastes power, is annoying and is bad for the environment. Home thermostats have Smart control so why shouldn't window AC units?

What it does

EcoChill hijacks the AC unit's manual controls with an Arduino 101 and controls its operation to my liking. Now I can decide how and when I want the fans and compressors to turn on. This allows me to both save energy and improve the comfort and noise level of my room.

How I built it

I spliced in high power relays into the control lines for the high / low fan and compressor temperature control switch inside of the AC unit. Now I can control when the AC is in high or low fan mode and the compressor is on or off with the Arduino 101. I then used an RFDuino board with a BME280 temperature and humidity sensor to wireless transmit the ambient temp and humidity over BLE to the Arduino 101. This way the sensor can be anywhere in the room. The Arduino 101 uses the onboard BLE to receive the temp and humidity and uses it to control a PID based on the desired set point temperature. The PID control keeps the temperature near the setpoint. I added further improvements to improve efficiency by keeping the fan running for some time after the compressor has turned off and to reduce fan on/off "bounce" around the setpoint.

Challenges I ran into

It took three different temp sensors to find one that finally worked with the RFDuino. Either they were too inaccurate or the one-wire interface wouldn't work. I finally used an I2C MEMs based one that works great. I also had trouble figuring out the server/client/peripheral/central/etc. structure of BLE required for my setup. The PID control also required a lot of manual hit/miss tuning as I did not have time to properly tune it. I wanted to control the unit with an iOS app but ran out of time figuring out how the bytes needed to be sent and read.

Accomplishments that I'm proud of

Wiring up all the relays without killing myself.

What I learned

PIDs aren't magic and they especially don't work as well for on/off relays. A lot of time in a controlled environment would be needed to properly tune the system for maximum efficiency.

What's next for EcoChill

I wanted to have an app to read the current temp and humidity over bluetooth and set the desired setpoint. I also planned to connect my Misfit sleep monitor to the app to relay that information to the Arduino 101 so it could lower the temperature set point once I fell asleep. This would further save energy and help me sleep at night by reducing noise in the room. It would also be helpful to add a temperature sensor to both the intake and output of the AC unit so I can stop the fan after they have reach about the same temperature when the compressor is turned off. This will further increase efficiency of the system.

Built With

  • arduino-101
  • bme280
  • lcd
  • power-relays
  • rfduino
Share this project: