WeatherPiArduino is a weather station controller board designed to interface to Arduino and Raspberry Pi computers. It is an interface board developed by SwitchDoc Labs to allow the user to easily build a fully functioned Weather Station while allowing customization of functions.

WeatherPiArduino is derived from Project Curacao. Generation 1 of this board was deployed and tested in Curacao before Generation 2 was released to production. The full WeatherPiArduino article was published in Raspberry Pi Geek magazine in September, 2014 and a follow up article will be published in April, 2015 (including the new lightning detector). The WeatherPiArduino comes with a SwitchDoc Labs DS3231/EEPROM board.

WeatherPiArduino with Included DS3231/EEPROM

Combine the WeatherPiArduino with a SunAir or SunAirPlus board to create a solar powered weather station.

Software for WeatherPiArduino Board

Specification

WeatherPiArduino in Solar Powered WeatherPi

You can download the Full WeatherPiArduino Product Specification here (Note: The Arduino Mega Fritzing diagram in the specification has a mistake. The line from the WeatherPiArduino should plug into GPIO 18 on the Arduino Mega board and NOT GPIO 5 as shown!).

WeatherPiArduino Fully Populated

Fritzing Diagrams

(Note: The Arduino Mega Fritzing diagram has a mistake. The line from the WeatherPiArduino should plug into GPIO 18 on the Arduino Mega board and NOT GPIO 5 as shown! On the Pi connection diagram, the pink line is NOT needed. GPIO17 is for connecting to the external Dual WatchDog timer. Why we have it connected to A2 of the ADS1015 ADC is beyond us in that diagram. )

Block Diagram

WeatherPiArduino Block Diagram

It was specifically designed to interface with the SwitchDoc WeatherRack, ArgentData Weather Sensors, SparkFun Weather Meters SEN-08942 along with auxiliary I2C units.

I2C Device Specifications

Software

SwitchDoc Labs has now released the first version of the Arduino C++ Class software for the WeatherPiArduino board. You can find it here on the switchdoclabs github. The Raspberry Pi Pure Python Software is here.

The SDL_Weather_80422 class library is designed to provide all the functions of the SwitchDoc WeatherRack, ArgentData Weather Sensors, SparkFun Weather Meters SEN-08942 in one C++ class.

The library is easy to use and hides the complexity of the interface to the sensors. The C++ class has two Interrupt Service Routines (ISR), one each for the anemometer and the rain bucket. The wind vane is connected to an Analog to Digital Converter (ADC) input pin on the Arduino. Note that the C++ class is designed to be a singleton, in other words, you only can interface one sensor package without some additional work (mostly involving Interrupts). The article in Raspberry Pi Geek magazine discusses this in detail.

There are two main modes for the class.

SDL_MODE_SAMPLE

SDL_MODE_SAMPLE mode means return immediately after asking for the wind speed. The wind speed is averaged at sampleTime or since you last asked, whichever is longer. If the sample time has not passed since the last call, the class returns the last calculated wind speed. That means that you will never see changes faster than the specified sample time. This allows you to not wait for the wind speed, you can just grab the last valid reading.

SDL_MODE_DELAY

SDL_MODE_DELAY mode means to wait for the set sample time to expire and return the average wind speed at the expiration. You would use this if you want to make sure you have the latest value and your program architecture allows you to pause for the sample time before continuing. Which mode you use depends on the specific software architecture of your Arduino application.

Typically, I use SDL_MODE_SAMPLE because I can tolerate not having a current value of wind speed.