Raspberry Pi 2/3 Weather Sensor Shield - Review

Table of contents

RoadTest: Raspberry Pi 2/3 Weather Sensor Shield

Author: ljakes

Creation date:

Evaluation Type: Development Boards & Tools

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?: null

What were the biggest problems encountered?: Preventing the CPU temperature from affecting the various shield temperature sensors.

Detailed Review:



Thanks to Element 14 for the opportunity to thoroughly test this product to the best of my capability with the support test equipment and test aids that I have at hand.  In this review I am demonstrating the use of the Raspberry Pi3 with the DPP904R00 Weather Shield as a weather station.  I will be testing the temperature, humidity and pressure sensors of the Weather Shield.


I currently operate a weather station using an Acurite 5 in 1 weather station connected to a Raspberry Pi2 computer running the weewx software. I continuously send weather data to both weather underground(Big Len), https://www.wunderground.com/personal-weather-station/dashboard?ID=KPAGOULD3#history  and Citizen Weather Observer Program(EW7892), http://www.findu.com/cgi-bin/wxpage.cgi?call=EW7892 , where this data is checked against neighboring stations for qualitiy control.


In order to test the Weather Shield, I have placed it near the Acurite station and collected data from the Weather Shield using the same software, weewx, loaded on the Raspberry Pi3 and perform analysis by comparing the two stations' data.


The  Raspberry Pi 2/3 Weather Sensor Shield is a very interesting product which contains four sensor chips providing an astounding seven different simultaneous readings:

     TSYS-01 Temperature Sensor

     HTU21D Relative Humidity and Temperature Sensor

     MS5637 Barometric Pressure and Temperature Sensor

     TSD305 Thermopile and Temperature Sensor


In this project I will place the Raspberry Pi 2/3 Weather Sensor Shield in the same vicinity as my Acurite Weather Station and collect data from each of these sensors and compare the data with the Acurite over a period of several days.






Hardware /Software:


This is the product I received:





The DPP904R000 Weather Shield.


There was NO software provided.




These are items used that I had on hand:


Raspberry Pi 3.




Micro SD Flash Memory Card.



90 degree header adapter.



Logitech K400r keyboard.



5 volt 3 Amp ac to dc power adapter.





The first steps are to load the following standard software on the Raspberry Pi3 with the Temperature Shield connected in the following sequence:


    1.  Raspbian Jessie Lite OS dated 05 July 2017, Kernel Version 4.9


    2.  Run raspi-config and make sure that the i2c bus and ssh client are enabled.


    3.  Run update and upgrade to make sure that the latest Linux drivers are in place.


    4.  Setup static IP so that I can SSH into the Raspberry Pi3 from my desktop and continue loading software from there and disconnect the monitor and keyboard from the Raspberry Pi3 and also know exactly where the Raspberry Pi3 is located(IP) on my home network at all times.


    5.  Install Apache2 software so that I can view the weewx data with a web browser.


    6.  Install samba software so I can easily transfer data to my desktop for analysis using Microsoft Excel.


    7.  Install Temperature Shield drivers per https://github.com/TEConnectivity/piweathershield-python


    8.  Install Weewx software per http://www.weewx.com/docs/debian.htm


    9.  Install sqlite3 so that I can view and manipulate the weewx.sdb database on the Raspberry Pi3.



Since the weewx software does not have a driver specifically for the raspberry pi, the fileparse driver must be installed in accordance with https://github.com/weewx/weewx/tree/master/examples/fileparse. In this manner data from the Temperature Shield can be written to a text file and subsequently read by the weewx software to be used in its database.


I wrote the custom python script "weewx-weathershield.py"(attached) to write data to this text file.



I connected the Weather Shield to the Raspberry Pi3 GPIO connector as below:



I started to take readings from all sensors at room temperature and immediately realized that the CPU Temperature from the PI3 greatly influenced the Temperature and Humidity readings to a point that I feel makes this configuration unuseable. With the CPU Temperature at 105ºF, the Weathershield Temperature Sensors were reading between 11ºF to 16ºF high and the Humidity Sensor was reading about 12% low.  However, the Thermopile and Pressure Readings remain unaffected by the CPU Temperature and could therefore be used in this configuration if those were the only sensors you wanted to read. 


For my project though this configuration could not be used so I reinstalled the Weathershield using a 90º connector as below:





Now this configuration solved the CPU Temp problem and I proceeded to place this unit outside near my Acurite Weather Station and began to take readings.


Everything was working fine until the TSD305 Sensor began to crash with "divide by zero" errors.  I then realized that the TSD305 could not be used in my application since its specified range is only between 0º and 100º Centigrade.  I then had to "rem" out the code for the TSD305 and only use the other three remaining sensors in my tests.



The graphed set of data below was obtained comparing the Acurite and the Weathershield pressure, temperature and humidity readings for 56.75 consecutive hours at 5 minute intervals or 681 samples (See attached Excel file "ws.xlsx" for complete data in both table and graph formats):











As you can see, the Pi Weathershield performed very well when compared to my Acurite Weather Station.


In particular, when compared to the Acurite Weather Station:

      the MS5637 Pressure Sensor performed within 0.02%.

     the HTU21D Humidity Sensor performed within 10%.

     the TSYS-01 Temperature Sensor performed within 2.4%.

     the HTU21D Temperature Sensor performed within 4.7%.

     the MS5637 Temperature Sensor performed within 6.5%.


The largest discrepancy came from the Humidity readings.  This can be explained by the fact that the Pi Weathershield was placed in a patio area below the roof whereas the Acurite Humidity Sensor is located on a pole above the roof which subjects it to more condensation.



In conclusion, I would say that the Raspberry Pi 2/3 Weather Sensor Shield performed very well with the proper positioning.  The biggest fault is that all the temperature and humidity sensors are adversely affected by the Pi's CPU temperature when the Weatheshield is connected directly to the Pi GPIO Port.  That causes some inconvenience since you must use either a 90º connector or extension cable.  Another con is that the range of the TSD305-1C55 Digital Thermopile Sensor is very limited at 0º to 100º Centigrade.