WeatherBeacon is an optical weather indicator showing current temperature, humidity, and precipitation from my backyard weather station.  Updated every minute, WeatherBeacon is a conspicuous device designed to attract attention and display weather conditions as a single color.  While it’s not the first WeatherBall or Beacon, its round shape and colors are more natural than the glowing digits of bank thermometers often found on outdoor weather displays.

wxbeacon1 wxbeacon2

See a time lapse movie  of WeatherBeacon:

Why I created WeatherBeacon:

  1. Subtle changes in weather conditions are hard to feel.  You can’t easily sense the weather by viewing numbers, charts, and digits.  I wanted to create a physical devise to communicate slight meteorological changes in a simpler, more intuitive way.  I also wanted to combine three weather parameters (temperature, humidity, precipitation) into a single color, similar to other projects (WeatherDots and WeatherTrace).
  2. How does wireless communication really work?  I had no clue, but wanted to find out.  It’s really not as hard as you might think to both understand and program, albeit with some guidance (Tom Igoe’s Making Things Talk – a great book!).

How WeatherBeacon works:

Outside, weather conditions are continuously measured by the weather station and sent wirelessly every 2 seconds to the Weather Console (located indoors).

Inside, software on a computer queries the Weather Console every 2 seconds and updates a current conditions file (data.csv).

I wrote the WeatherBeaconHub program in Processing.  This program reads the current weather data, computes color values, communicates with the Xbee radio, and provides diagnostic and test information (such as color-range tests, turning off the LEDs, and controlling the LED intensity).  Every minute, WeatherBeaconHub sends the latest color values via Xbee back outside to the WeatherBeacon.

Outside, an Arduino microcontroller receives the signal and controls WeatherBeacon’s LEDs.  I modified a program created by Tom Igoe to receive the signal (red, blue, and green values); perform error checking; send confirmation back to WeatherBeaconHub; and load the RGB values into the LEDs.  I also adapted code developed by Garrett Mace to control the LEDs.   Several single-color LEDs attached to the microcontroller indicate if signals are being received (yellow) or transmitted (blue).

WeatherBeacon v0.5 was constructed with more hardware and software than I’d like – a bit of a kludge.  If Davis Weather published their weather station wireless transmission specs, I could reduce the kludgeness.  It would be nice for the weather station to transmit directly to a receiver on the Arduino; however, Davis Weather considers their wireless specs proprietary.

Plans for the next version of WeatherBeacon:

  • Weatherproof microcontroller and Xbee radio
  • Create a smaller footprint base and mount on metal mast
  • Mount mast on top of weather station
  • Improve error checking in Hub and Station software programs
  • Put light diffusers on the ShiftBrite LEDs
  • Have fun…

Technology used:

  • 2 – XBee 1mW Wire Antenna – for wireless communications
  • 1 – XBee Explorer USB – adaptor to connect Xbee to USB on computer
  • 12 – ShiftBrite RGB LEDs – provide 1024 different colors in the beacon
  • 1 – ShiftBrite Shield -for the Arduino and handles power
  • 1 – 18″ Polycarbonate White Globe – serves as the Beacon
  • 1 – Arduino Duemilanove – microcontroller for communications, driving the LEDs, and error checking
  • 4 – Single colored LEDs – to indicate actions (data transmissions)
  • Davis Weather Station (Vantage Pro II) – Measures temperature, winds, and precipitation  (pic of my weather station)
  • VPLive – Acquires data from Weather Console
  • Citizen Weather Observer Program (CWOP) – Shares weather data
  • WeatherUnderground – Archives weather data
  • Processing software – Fetches data, generates the display, and sends data via the Xbees to the WeatherBeacon.  Want the program? Just email me.

I’d like your feedback and suggestions – please comment.