Wireless thermometer for home automation based on ATmega8 (open hardware and open source DIY hobby construction)

Update 2021: A respin of the board has been developed using the more modern RFM119 transmitter module, see thermometer_v2.pdf and thermometer_v2.zip. Firmware will follow.



As external sensors for my wireless thermostat I have build a few of the thermometers described below. Transmitting temperature data from different rooms to the intelligent thermostat they together form a "heating (and/or A/C) subsystem" of the home automation system, which is controlled by a home linux server based on Raspberry Pi.

Both hardware and software is open (GPLv3 licensed) and I used the open source KiCad program for the PCB design to be completely free. The KiCad design files as well as Gerber and Excellon files for production are in the file thermometer_hw.zip, the firmware source is in file thermometer_sw.zip. For convenience, PDF export of the schematics is here. The wireless communication is very simple using the amplitude modulated 433.92MHz modules from Aurel, all modulation is handled in software, sending 128-bit long datagrams. Authentication is achieved using the rolling code method and as a cipher I used for historic reasons double Keeloq, although today I would switch to AES128, if I had time to rewrite the code. This is preferable over more advance wireless protocols like e.g. Wifi connectivity, since the amount of data to be transferred is tiny, so WiFi would be an overkill and would cost much more, would require much more advanced MCU etc. Even the range of the wireless link achievable with this device (when using the optional amplifier on the PCB) is better then when using WiFi without special antennas.
The device has been in non-stop operation since 2007 and required no maintanance during the years.
When compiling the firmware, the name "generic" can be changed by changing #define LOCATION in termometer.c and appropriate renaming of the header files, which allows compilation of firmware for thermostats placed in different locations (houses) with different encryption keys. Thermostats within one house (or appartment) working within one home automation system must have the same LOCATION and differ just by SERIAL number and appropriate encryption keys must be defined in the header. (Of course, you need to replace the dummies 0xffffffff by your own keys (obtained e.g. from /dev/random) in the header file. Note that the file generic_keys.h contains shared keys for all sorts of home automation, only one sensor key corresponding to the SERIAL number #defined in termometer.c should be set.)

Images to appear soon...



My Electronics page


My hobby page


My main page with e-mail contact


TOP of my family pages