The project provides instructions and code to build a heating controller for your home or remote country house, which can be controlled and monitored by GSM via SMS commands. I started to design it as we needed a reliable and remotely accessible heating controller for our country home, which is in deep in the countryside where temperatures fall down to -30°C in wintertime and where there is no reliable (and affordable) internet connection. Commercially available controllers either did not offer GSM control, or did not have the safety features nor the relative ease of comparably plain-text command operation we required.

Step 1: Description & Partslist

The device is built around an Arduino compatible Freeduino ATMega328, has a rather simple customs shield for timing, temperature measurement and interfacing and communicates via RS232 with a tc35i Siemens GSM modem. It is housed in a picture frame and unobtrusively hangs on the wall. Most important, it has been working flawlessly for a year now. It offers the following functionality:

- on/off control (as opposed to more advanced control algorithms like PID or control protocols like Opentherm) of heater (gas central heating), which is switched via a simple relay
- interactive control through 3 button keyboard and simple large LCD with plaintext menu system
- 6 operating modes:
    o manual temperature control
    o comfort (daytime) or economy (night) temperature regimes
    o cycle: switches to programmable comfort level in the morning, and to reduced night temperature level in the evening
    o profile: freely programmable temperature profile per day or group of days for selected days of week
    o antifreeze: keep temperature at low programmable temperature (e.g. 8 °C)
- real time clock with battery buffer
- inside and outside (optional) temperature measurement
- control of all operations and parameters by plaintext SMS (e.g. “antifreeze on”, “time set 09:20” …)
- editable phonebook for up to five registered users
- status return SMS by a call to the device (left unanswered, so at no cost for caller)
- regular daily logging by SMS to 1 user to monitor operations
- SMS alerts for crossing temperature limits and suspected heater malfunction
- all parameters are stored in non-volatile memory to safeguard against power outages

So typically during wintertime, the house is kept in antifreeze mode. Several hours before arrival, we send a SMS to start heating up to a comfortable temperature level. We switch to ‘cycle’ mode and the device switches between 20°C during daytime and 17°C at night. In addition, every morning the device reports about the current status by SMS to my mobile. If we reliably know our schedule, we program the device to heat up automatically before our new arrival.

The challenges in design were threefold: apart from the basic requirements for functionality and GSM interfacing, space on the ATMega has been a major limitation. Finally the rather rustic and traditional log house required some nice and aesthetically appealing casing. The golden picture frame fits well.

As a general disclaimer, I urge caution when modifying existing heating systems, as this may result in major damage. Also, the typical precautions when handling high voltages must be applied. Finally, I do not assume any responsibility on the working of the device or code. Suggestions or improvements are welcome.

What you need:

• 1 Freeduino Serial V1.2 from Fundamental Logics (ATMega 328) any Duemilia compatible will do, however, it requires a serial port (or an adaptor circuit) to interface with the GSM Modem
• 1 Siemens tci35 or mc35i GSM Modem
• 1 antenna for Siemens (in my case a simple wire would do)
• 2 D-Sub 9-pole male connectors for soldering the RS232 cable
• 1 LCD Display 20x4 or 16x4 characters preferably with backlight (e.g. 20x4 with large 9mm characters: HITECH DISPLAYS, Model: HMC020487SY-LY, 146.00 x 57.30mm)
• 1 power supply (12V, 2.0 A) with 2.1 mm center postive plug
• 1 female 2.1 mm connector
• 1 male 2.1 mm connector
• 1 Western 6 pole male connector for connecting to the GSM Modem
• 1 (inside only) or 2 (inside+outside) Dallas DS18B20 temp. sensors TO92
• 1 capacitor 100nF for the outside temperature sensor (solder between +5V & GND to increase one-wire bus stability at longer cable lenghts)
• 3 push buttons (2 black, 1 different color)
• 1 capacitor 10uF / 16V
• 1 capacitor 150nF  / 16V
• 3 diodes 1N4148
• 1 battery CR2032H
• 1 battery holder for CR2032H
• 2 pinheads 1X08 2.54 mm, 19mm pins (for stacking onto Arduino)
• 1 pinhead 1X06 2.54 mm, 19mm pins (for stacking onto Arduino)
• 1 pinhead 1X06 2.54 mm
• 1 pinhead 1X04 2.54 mm
• 1 pinhead 1X09 2.54 mm (depends on LCD pinout, particularly backlight)
• 2 connectors 2.54 mm to solder to LCD
• 1 Relay Omron G6C-2117P
• 1 Quartz 32.768kHz
• 2 resistors 10k
• 1 trimmer 10k
• 1 resistor 1k5
• 2 transistors BC547 TO92
• 1 timer chip Dallas DS2417 TSOC6
• 1 connector  3 contact phoenix-350 – may take 220V if required
• 2 connectors  3 contact phoenix-254 – 5V only for one wire temp sensors
• a suitable casing (in my case a 30cm x 40cm picture frame with thick passe-partout to hold the components)
• two aluminum angels (to accomodate pushbuttons), screws
• PCB (eagle files attached)
• some wires
• glue or hotmelt
• 4 screws 2.5 mm x 10 mm plus nuts to fix the LCD
• some velcro

• Standard electronics tools
• a crimping tool for Western 6 pole connector
• soldering iron, additionally a flat soldering tip for soldering the 2417 SMD
• PCB etching equipment & supplies (e.g. for toner transfer method)
• Arduino IDE (> 1.0.5, may work with earlier versions)
• Arduino standard libraries
• USB to RS232 cable to program the ATMega, alternatively a programmer, recommended in any case for testing GSM-Arduino communications
• Program code and custom libraries (attached)

Operations (optional):
• GSM SIM card, startup PIN request switched off
very very thanks for sharing... it is working perfect...
<p>Very impressive!!! Thanks for sharing.</p>
Thank you for sharing! I want to make a system like this that controls an outdoor wood boiler and an indoor propane boiler.
I like this project very much. With a &quot;minimum&quot; of electronics and a maximum of effort a flexible remote heating controller had been established. Great job!
Good project man!! thanks to share with us

About This Instructable




More by kohleick:Arduino based House Heater Controler with SMS User Interface 
Add instructable to: