Weather Station Receiver

The incredible popularity of home weather stations shows that it's not just farmers who are interested in the weather. Many people want to be able to track and record weather events within their local environment rather than relying on a state or national weather service that may not have adequate local details.

Home weather stations typically consist of two major parts: the sensors that sit outside and measure temperature, wind speed and direction, humidity, rainfall, and barometric pressure; and the display unit that lives inside in a convenient place so you can read the external temperature while sitting around the fire warming your feet and deciding whether it's too cold to go fishing. Generally the external sensors connect together with cables with one sensor also acting as a transmitter to send updates wirelessly to the display unit.

Many weather stations transmit their data at approximately 433MHz using a band reserved for low-power unlicensed use, which is ideal from a hacker's perspective because 433MHz receiver modules are commonly available for about US$10 and can be easily interfaced with an Arduino to let you eavesdrop on the data feed. In fact it's not just weather stations that use this approach: many short-range wireless devices work on the same 433Mhz band so the techniques used in this project can be just as easily applied to intercepting data from other devices such as domestic power consumption monitoring systems. Best of all there's no modification required to the original device because it just transmits its data as usual, not even aware that it's being received and interpreted by another device. This project is essentially an exercise in listening to an unknown wireless data feed and converting the raw stream of data into values that make sense.

Once you can receive the data and process it in your Arduino there are a wide range of things you can do with the information: you can simply display it as it updates, or you can log the readings and generate reports of trends over time, or you can even use it as the basis for making decisions such as sending rainfall data to an irrigation system to minimize water usage.

For this project we used a weather station from La Crosse, a popular brand that seems to be available in many parts of the world, but the same approach should work with other brands - as long as you can work out the data format!

Many weather stations (including the La Crosse model we used) come with a serial interface on the display unit to feed data to a PC, but by doing the work directly in an Arduino with a receiver module you don't even need the display unit at all and gain far more control over what you can do with the data. And since many weather station sensors are available individually you may find you can buy just the sensors you want and save some money compared to buying a complete system, while also gaining the flexibility of managing the data through an Arduino.

Weather Station Receiver Schematic

View as JPG: weather-station-receiver-schematic.jpg

View as PDF: weather-station-receiver-schematic.pdf

View as SCH: weather-station-receiver-schematic.sch

Source Code

WeatherStationReceiver sketch: github.com/practicalarduino/WeatherStationReceiver

Hardware Suppliers

You can now buy a ready-built 433MHz Receiver Shield from Freetronics. The 433MHz Receiver Shield implements exactly the same circuit as documented in this project except that it uses an RXB6 receiver module for improved sensitivity to weak signals.

Errata

If you find an error in this project please let us know.

Gallery

Have you built this project or something inspired by it? Please let us know and we'll put a picture of it here!

Bullet Reader Kayne Richens from Melbourne/Australia built the hardware as described in the book and then with the assistance of Marc Alexander (one of our Tech Reviewers for the book and author of the original Weather Station Receiver software) modified the software to allow it to process data from a BIOS/Thermor DG950R weather station purchased from Jaycar.

Find out more in his blog post at kayno.net/2010/01/15/arduino-weather-station-receiver-shield/.

Bullet Kelsey Jordahl started with the basic circuit from the book and added a thermistor to log indoor temperature, and also modified the software to work with a La Crosse TX4U. However, he didn't stop there: he also feeds the data to a script that updates a static HTML web page showing the latest readings.

Learn more about his version at mysite.verizon.net/kajordahl/weather.html.