Weather Station Design Project

This prototype MetPod automatic weather station (AWS) is designed around a Raspberry Pi but any micro-processor board capable of running Linux and Python could be used. I wanted the design to be 'power off' safe so that in the event of a power failure or the plug being pulled, the device would not suffer from data corruption. List of required features:

  • Power off safe (i.e. no risk of corruption should power be suddenly lost or removed).
  • Interface to multiple sensors using RS232 and RS485 standards.
  • Tipping bucket rain gauge.
  • Analogue sensors.
  • Low power draw for possible solar powering.
  • Wireless connection to remote sensors option.
  • Optional network connectivity to send data to AWS IoT and online services such as Weather Underground and Met office WoW.
  • Optional local display.

The PiCore linux operating system was chosen as this runs entirely in memory and can be easily configured with the extra Python modules required for the MetPod system.

RS232/485 interfacing is via FTDI USB adapter cables, the tipping bucket connects directly to the GPIO pins of the Pi and any analogue sensors via an ADC HAT board. Xbee 802.15.4 units were used to make a wireless link between the sensors and processor where required.

Data is continuously updated from the sensors and sent at regular intervals to Weather Underground, Met Office WoW and Amazon IoT. A simple configuration file is read at start up to determine the desired transmission interval and is also used to set various other parameters including:

  • Station height above sea level.
  • Station ID.
  • Barometer height above surface.
  • Anemometer offset.
  • Transmission intervals for each destination service.

I also intend to develop an optional wireless local display unit in the future. Wireless connections can be replaced with RS485 if desired.

Though the MetPod software will run on one Raspberry Pi with all sensors connected to this unit, I also developed a standalone serial-multiplexer/data aggregator using a Raspberry Pi Zero (MetPod Hub). Multiple serial sensors can be connected to this as well as the tipping bucket rain gauge, it simply reads data from each of the sensors as it becomes available and sends it to the main unit (via wireless or RS485). This just provides some interfacing flexibility, allowing the main processing unit to reside indoors close to an ethernet socket.

Once the data has been sent to AWS IoT, a 'rule' stores it in a Dynamo database which is then accessed from the clients web browser using the AWS cognito service. Data tables and graphs are drawn on the web page using javascript. The Charts.js library is used to produce the graphs you can see on the live data page.

You can view the MetPod code on GitHub here: MetPod and the web site code where the live data is displayed: MetPod Web. Note that the system is still under active development.