Arduino HVAC Servo Thermostat/Controller




Welcome to my 'green' instructable! I am going to show you how to use an Arduino, two servo motors a temperature sensor and some metal (or wood) to make a digital thermostat for a through-wall HVAC unit.

According to CB Richard Ellis (a major real estate firm), New York City is a renters market, with only about 1/3 of the population owning their home (versus almost 70% home ownership for the rest of the US). This means over 5mm people in NYC live in rented apartments or homes. It is very rare for rental units to have any form of central air conditioning or even a thermostatically-controlled system.

Many apartments have permanent through-wall units like the one seen in the video below. Unfortunately, these units have no ability to regulate the temperature and can only be forced into heat, cold, or off.

According to the Consumer Energy Center, Heating and Cooling accounts for about 45 percent of your energy bill. The federal government estimates that the average homeowner spends more than $10,000 for heating and cooling over a ten-year period.

The cooling capacity of room air conditioners is measured in BTUs, or British Thermal Units, per hour. To cool a 700-1,000 sq ft apartment (a one bedroom or maybe a small 2bedroom), you need about 20,000 BTU's. This is the equivalent of 1.7 tons or 5,861 watts. At $0.15 per kWh, that means it costs $0.88/hour to run your HVAC unit!

Because HVAC units use a lot of energy (particularly when in 'air conditioning' mode during hot summer months) and renters do not have the ability to easily implement energy star (i.e. more efficient) units or to regulate their tempature, I wanted to find a way, without making permanent changes, to control an HVAC unit like a thermostat! Implementing this device can not only save you money, but can help maintain a more steady-temperature in your apartment, reduce energy consumption and help reduce the strain placed on our nations power grid during the hot summer months!

Step 1: Overview of the Product & Parts List

Overview & Parts list:

Electronics Parts List:

1) Two Servo's. I used Hitec HS-311 ( ) which can be purchased for under $10 per servo. The SparkFun servo ( ) should also work.
2) Temperature Probe:
3) Arduino (I used the Duemilanove -
4) I used the Adafruit ProtoShield ( ) but you can also just use a small breadboard ( )
5) a 4K7 resistor for the Temperature Probe:
6) 9V Wall adapter:

Hardware Parts List:
1) I used Aluminum purchased from my local hardware store (Home Depot). The dimensions of the servo bracket are 4" x 1" x 0.25" and the two end-posts are 1" x 0.25" x 0.25". Alternatively, here is a link to purchase this sized piece of aluminum online: and
2) I used (6) 1/2" 8-32 SHCP (socket head cap screws) and (2) 1" 8-32 SHCP's. I would recommend purchasing these from your local hardware store, but they can also easily be purchased online. Here are the links: 1/2": and 1":
3) You'll need a tap that matches whatever screws you use in the previous step. Since I used 8-32 screws, I purchased an 8-32 tap. Once again, this can be purchased at your local hardware store but if you wish to order online, here is a link:
4) A number 29 drill bit (this corresponds to the 8-32 taps; if you use a different size screw & tap, purchase the appropriate drill bit). NOTE: Many hardware stores sell the taps with the drill bits, which will ensure you purchase the right size. Also available here:

1) I used a drill (can be a hand drill or drill press) and a hacksaw.
2) If you'd rather glue the servo's to the aluminum mount (in lieu of drilling and tapping the holes), I would recommend using JBWeld or Gorilla Glue

Arduino Library:
In addition to the servo library (included with the Arduino softwre), you need the OneWire library.
You can read more about the library here (optional): or just download the library via this link:

Step 2: Building the Servo Mount & Electrical Schematic

Here's a video overview of how to build the servo mount and the schematics of the electronics. Check out the photo's below for more!

Step 3: Arduino Code

A txt file below contains the Arduino code. You can open this file to view the code and then copy/paste it into your Arduino software to run the program.

Video: A basic and then more-thorough walkthrough of the Arduino code.

Step 4: Debugging and Installing

NOTE: If you rest your arduino on a metal surface, make sure you have some rubber feet on the bottom! Otherwise the solder joints on the bottom of the Arduino will touch the metal which will short the board!

Step 5: Final Thoughts & Future Ideas

Final Thoughts:
Thanks for watching! If you're looking for a great way to save energy, save money and still maintain a comfortable apartment, hopefully you've enjoyed this video. During the hot summer months, peak demand forces additional power plants to be brought online, which are often more expensive plants to run and contribute more pollution to our environment. If you have the ability to upgrade your HVAC system to an energy-star compliant or you can install a "professional" thermostat, please do! But if you live in an apartment building and simply don't have those options, please consider this project for the environment!

Future Ideas:
Once you have the servo's in place, there are some great ways you can expand on this project. Here are just a few:
1) Put the Temperature Sensor on a wire so that it can be strategically placed within the room
2) Add buttons to the Arduino in order to have four modes: Off, A/C, Heat, or Temperature Probe mode (i.e. allows you to force the unit off, into heat or A/C or allows the unit to act according to the temperature probe reading)
3) Use a 7-segment LED or an LCD to display the current temperature
4) Use an Ethernet Shield to enable Internet control or to publish your current temperature (i.e. through twitter). This idea is inspired by Adafruit's "Tweet-a-Watt" ( )
5) Use a third servo for to control the hot/cold potentiometer (note: using three servo's on the arduino requires the use of softwareservo's - see here for more:
6) Wireless temp probe via Xbee or RF (for RF, see and )
7) Set temperature threshold ranges at the device using a keypad or a potentiometer
8) Setting the unit to automatically cool the apartment at certain times (i.e. before you arrive home at work) or to go into a "pulse" mode at night, alternating between off & cool in order to keep the apartment cool but not have the AC on all night
9) Use Evil Mad Scientist or ITP Boarduino for a cheaper & smaller unit!
See for the Evil Mad Scientist Boards which you can purchase as a kit which includes the PCB & ATMEL chip and a 16Mhz crystal & caps for ~$12
Read the NYU ITP tutorial on how to create a breadboard arduino!



    • Build a Tool Contest

      Build a Tool Contest
    • Epilog X Contest

      Epilog X Contest
    • Organization Contest

      Organization Contest

    21 Discussions


    4 years ago on Introduction

    Thanks for the great Instuctable -- 5 years later and it's still relevant! I used your code for a slightly different purpose however. I have no outside space (another NYC problem) so I built a window greenhouse for my herbs. Temperatures can reach 100ºF plus in there on sunny days and I wanted a means to open the lid automatically when it gets too hot. In comes your project. I tweaked the code to work with DC motors instead of servos, added a couple of options, and it works like a charm. No more wilted herbs. Now I'm considering adding an 2 line LCD to show the current temperature.


    5 years ago on Introduction

    Wanted to post my thanks for a very thorough and useful Instructable. I have 2 similar A/C / Heating units in my apartment and used your walk-through and code to create my own setup.

    My units only have 1 on/off switch so I used 2 micro-servos instead and tweaked your code a bit to work with them.

    Have you posted this code up to GitHub or any other code side? I would gladly branch and check in a commit if so.

    Many many thanks for taking the time to put this together!


    7 years ago on Step 5

    i have a ge wallthru model AJJ09DFV3 and the controls are not push button but turning controla.. 2 of them , one for hotter or colder 1-10 and the other for heat a/c low and high and fan only.. Any suggestions? Thank you


    8 years ago on Introduction

    I did something close last year but in my car instead.

    Like your AC the car is either on or off. 

    I used a relay and temperature sensor and a PIC micro.  Later i added a pot and display to be able to dial in my settings.

    Interestingly, my gas milage went up as a result.

    Great things there micros.


    9 years ago on Introduction

    For our A/C systems with remotes,I'd probably get a remote and control that with an Arduino xD


    9 years ago on Introduction you say in Engrish not so good...BALLIN!!!!!!!!!!!


    9 years ago on Introduction

    Outstandingly explained! However do be careful about fluctuating heat/cold, but i bet you also factored than into the equation given the detail of this instructable 5/5


    9 years ago on Introduction

    Very nice instructable! Well written and explained, also the device is cheap and easily constructed. I especially like the "tread lightly, leave no footprints" approach to modifying rented property. I always try to modify something in a way that doesn't permanently damage it so I can reverse what I've done if it doesn't work to my liking or restore it to original operation if/when I need to sell it or return it to its rightful owner. Yours fits right in with that kind of philosophy. For that you get a "5"!


    9 years ago on Step 1

    An alternative to the One Wire Digital temperature probe is a LM35 precision linear temperature sensor. They are cost about $1.75 from BGmicro or Jameco and require only one line of code to read the temp from an analog input pin.

    An example of a project that uses the LM35 sensor can be found here.

    This is so useful!! I can't wait to install one in my apartment as the weather gets warmer!


    9 years ago on Introduction

    I can't believe I just spent a half-hour watching a how-to video! But great job. Definitely a plus that you didn't wreck the original control panel! Too many don't respect others' property. I recently bought an Arduino, and these simple how-to videos are great. This is just what an Instructable should be: relatively cheap, easy to grasp, and useful.

    1 reply

    Reply 9 years ago on Introduction

    (OK, I'm not exactly a hands-on kind of person which is why I love, no need, Instructables so the following may be obvious to everyone but me.) I was wondering how you knew what size servos to use, and how I could size the servos I might need. I needed someway to measure the force required to operate a mechanical switch. First, I thought I could use my postal scale (up to 16 oz). I used a pencil to push on the switch then pushed the pencil with the scale bed. Not enough force. Then I hit upon the idea of using my quart water bottle, which is graduated in ounces. I needed 20 oz of water in the bottle to operate the switch. The bottle weighs 5 oz so the total force was 25 oz. (Fortunately, 1 oz of water by volume also weighs 1 oz! ) So, assuming the length of the arm on the servo is 1 inch, I will need at least 25 oz-in torque. Your servos will give me plenty of force to spare! Obviously, this method only works when you can push down on the switch.


    9 years ago on Introduction

    Yes, very good instructable and well worth duplicating by other people for their comfort, lower heating/cooling costs, and lower demand on electrical resources. I had no idea so many apartments in NY had no real thermostatic control, much less programmable control. Also excellent ideas to keep it low / no impact on the original equipment. I probably would not have thought about your idea to pinch it to the top of the inside ridge. Your 'future' ideas would be well worth completing too. Keep us appraised.


    9 years ago on Introduction

    I made something very similar to do almost the same thing in my office. We couldn't keep the temperature constant and it would always be freezing in the morning and boiling by mid afternoon. In comes Tempy (my arduino powered servo controller) who takes temp readings every 15 secs and turns the knob on the thermostat. Good work! Here's Tempy


    9 years ago on Introduction

    Thanks everyone for the kind remarks. I readily admit that not everyone has a need for this Instructable - but there are still millions of these types of units (non-thermostatic and non- energy star) out there! Anyways, my hope is that people will learn from it and possible expand it for similar benefits! I've entered myself into the Epilog Contest; I run a single-person machinist / rapid prototyping shop in NYC and am trying to expand. A Laser Cutter would be a huge asset to my shop. FWIW, I do a lot of free work for folks who are trying to get experiments or prototyping off the ground (I also maintain a day job to pay the bills). Accordingly, I would very much appreciate your vote (which I believe starts Monday 4/20). Thanks!


    Reply 9 years ago on Introduction

    No idea why that happened; i just placed the link and it appears to be working now


    9 years ago on Introduction

    I have no need for this device, but I commend you on your instructable. I'm a big fan. Thanks for being thorough.


    9 years ago on Introduction

    Wow, nice job! Elegant and effective.I love how it doesn't require any modification to the HVAC unit. Great for dorms.