The Weather Board w/Grove - Interface board for Weather Instruments for Raspberry Pi / Arduino
The Weather Board w/Grove - Interface board for Weather Instruments for Raspberry Pi / Arduino
The Weather Board w/Grove - Interface board for Weather Instruments for Raspberry Pi / Arduino
The Weather Board w/Grove - Interface board for Weather Instruments for Raspberry Pi / Arduino
The Weather Board w/Grove - Interface board for Weather Instruments for Raspberry Pi / Arduino

The Weather Board w/Grove - Interface board for Weather Instruments for Raspberry Pi / Arduino

Regular price
Sold out
Sale price
Unit price

Weather Board For The Raspberry Pi / Arduino - Grove


Note: This is a replacement board for the WeatherPiArduino Board. The WeatherPiArduino Version 1 product page is here and the WeatherPiArduino Version 2 product page is here.


(This board is also known as the WeatherPiArduino V3)


Want to build a Weather Station with the board?

Look at these two sources (more on the way):


WeatherBoard Specification -


New GroveWeatherPi Tutorial -

The Weather Board for the Raspberry Pi / Arduino is now available and in stock! WeatherRack Weather Sensors now available. Outdoor Temperature and Humidity Sensors now available.

Weather Board

Weather Board

] The Weather Board 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. The Weather Board is derived from Project Curacao and the WeatherPiArduino. 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 has been published in April, 2015 (including the new lightning detector).  Combine the Weather Board with a SunControl or SunAirPlus board to create a solar powered weather station.


Downloads for the Weather Board

New! The new Weather Board software auto detects your weather devices and can be configured for the ThunderBoard Lightning Detector and SunAirPlus / SunControl for Solar Power.

What are Grove Connectors?

Grove connectors are standardized plugs for connecting devices together easily and without soldering. See our Full Grove Tutorial here.


Startup of Raspberry Pi Test Software

pi@RPIZero:~/SDL_Pi_WeatherBoard $ vi

AM2315 = 28.1000003815

Weather Board Demo / Test Version 1.6 - SwitchDoc Labs

Program Started at:2016-07-24 22:29:47

DS3231:   		Present
BMP280:   		Present
FRAM:   		Not Present
HTU21DF:   		Present
AM2315:   		Present
ADS1015:   		Not Present
ADS1115:   		Present
AS3935:   		Present
OLED:   		Present
SunAirPlus:   		Present
switch to Bus0
 DS3231 Real Time Clock
Raspberry Pi=	2016-07-24 22:29:47
DS3231=		2016-07-24 22:29:47
DS3231 Temperature= 	29.25 C
 WeatherRack Weather Sensors
Rain Total=	0.00 in
Wind Speed=	0.00 MPH
MPH wind_gust=	0.00 MPH
Wind Direction=			 270.00 Degrees
Wind Direction Voltage=		 4.472 V
 BMP280 Barometer
Temperature = 	29.48 C
Pressure = 	94.49 KPa
Altitude = 	584.90 m
Sealevel Pressure = 	94.49 KPa
 AM2315 Temperature/Humidity Sensor
AM2315 temperature: 28.2
AM2315 humidity: 31.2
AM2315 crc: 1
 HTU21DF Temp/Hum
Temperature = 	28.40 C
Humidity = 	36.70 %
 AS3935 Lightning Detector
Last result from AS3935:
----No Lightning detected---
Lightning Count =  0
 FRAM Not Present

 SunAirPlus Present
LIPO_Battery Bus Voltage: 4.18 V 
LIPO_Battery Shunt Voltage: 0.64 mV 
LIPO_Battery Load Voltage:  4.18 V
LIPO_Battery Current 1:  6.40 mA

Solar Cell Bus Voltage 2:  3.08 V 
Solar Cell Shunt Voltage 2: 0.00 mV 
Solar Cell Load Voltage 2:  3.08 V
Solar Cell Current 2:  -0.00 mA

Output Bus Voltage 3:  4.98 V 
Output Shunt Voltage 3: 22.44 mV 
Output Load Voltage 3:  5.01 V
Output Current 3:  224.40 mA

Sleeping 10 seconds



Weather Board Solar Powered Weather Board[/caption] You can download the Full Weather Board Specification here . The specification contains wiring lists for connecting the Weather Board to the Raspberry Pi and the Arduino family of products.

Weather Board Weather Board and Weather Rack[/caption]

Block Diagram

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

Interfaces on Weather Board

  • I2C for Raspberry Pi and Arduino (Board works at 3.3V and 5V)
  • RJ11 Plugs installed for SwitchDoc Labs WeatherRack, etc.
  • Wind Vane, Rain Bucket, Anemometer computer connections for Raspberry Pi and Arduino
  • Grove Connections for all interfaces

I2C devices Included with the Weather Board

Plug in I2C Interfaces provided

  • DS3231 RTC With EEPROM
  • SwitchDoc Labs Thunder Board Lightning Detector board
  • Adafruit HTU21D-F Temperature/Humidity breakout board
  • Adafruit 32KB FRAM I2C breakout board
  • Adafruit ADS1015 4 Channel A/D I2C board

I2C Device Specifications

BMP280 (Barometer / Temperature) DS3231 (Real Time Clock) AT24C32 (EEPROM)

ADS1015 (12 bit ADC)

AS3935 (Thunder Board - Lightning Detector)

HTU21D-F (Humidity)

FRAM (32KB Fast Non-Volatile Storage)


SwitchDoc Labs WeatherRack Sensors

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 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 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. The example code for the SDL_Weather_80422 library is shown below:

SDL_Weather_80422_Library.ino - Example for using SDL_Weather_80422 Library
For SwitchDoc Labs WeatherRack 
Weather Sensor Assembly 80422 Argent Data Systems
Created by SwitchDoc Labs July 27, 2014.
Released into the public domain.

#include "SDL_Weather_80422.h"

#define pinLED 13 // LED connected to digital pin 13
#define pinAnem 18 // Anenometer connected to pin 18 - Int 5
#define pinRain 2 
#define intAnem 5
#define intRain 0

// for mega, have to use Port B - only Port B works.
Arduino Pins PORT
------------ ----
Digital 0-7 D
Digital 8-13 B
Analog 0-5 C

// initialize SDL_Weather_80422 library
SDL_Weather_80422 weatherStation(pinAnem, pinRain, intAnem, intRain, A0, SDL_MODE_INTERNAL_AD);

uint8_t i;

float currentWindSpeed;
float currentWindGust;
float totalRain;
void setup()

Serial.println("WeatherPiArduino SDL_Weather_80422 Class Test");
Serial.println("Version 1.0");

weatherStation.setWindMode(SDL_MODE_SAMPLE, 5.0);
//weatherStation.setWindMode(SDL_MODE_DELAY, 5.0);
totalRain = 0.0;

void loop()

currentWindSpeed = weatherStation.current_wind_speed()/1.6;
currentWindGust = weatherStation.get_wind_gust()/1.6;
totalRain = totalRain + weatherStation.get_current_rain_total()/25.4;
Serial.print(""" wind_speed=");
Serial.print("MPH wind_gust=");
Serial.print("MPH wind_direction=");



When you run this, you should get a result similar to this:


WeatherArduino SDL_Weather_80422 Class Test
Version 1.0

rain_total=0.00 wind_speed=13.20MPH wind_gust=12.40MPH wind_direction=90.00
rain_total=0.00 wind_speed=9.60MPH wind_gust=9.48MPH wind_direction=90.00
rain_total=0.00 wind_speed=10.20MPH wind_gust=9.23MPH wind_direction=90.00
rain_total=0.00 wind_speed=11.10MPH wind_gust=9.84MPH wind_direction=90.00