|Product Performed to Expectations:||10|
|Specifications were sufficient to design with:||10|
|Demo Software was of good quality:||5|
|Product was easy to use:||5|
|Support materials were available:||10|
|The price to performance ratio was good:||10|
|TotalScore:||50 / 60|
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 Sense Hat as a weather station. I will be testing the temperature, humidity and pressure sensors of the Sense Hat.
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 Sense Hat, I have placed it next to the Acurite station and collected data from the Sense Hat using the same software, weewx, loaded on the Raspberry Pi3 and perform analysis by comparing the two stations' data and adjusting the Sense Hat readings, as necessary, to match as close as possible the Acurite readings.
This is the product I received:
There was NO software provided.
I chose to use the TEAM brand 16Gb microSD card shown below to load the software and operate the Raspberry Pi3. This brand has worked reliably for me in past applications:
I used the below power adapter that I had on hand. It is marked 3A but after testing it I can only get about 1.5A out of it reliably. However, 1.5A is sufficient for this application and I had no problem using it:
I placed the Raspberry Pi3 in the bottom half of this case to protect it from damage due to placing the system on various surfaces:
I used the Logitech K400r keyboard which worked very well for setting up the initial software on the Raspberry Pi3:
The first steps are to load the following standard software on the Raspberry Pi3 with the Sense Hat 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 Sense- HAT drivers per https://www.raspberrypi.org/documentation/hardware/sense-hat/
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.
To make sure everything is working and to demonstrate the LED function of the Sense-HAT the python script "weather.py"(attached) was run showing a continuous display of temperature, humidity and pressure data from the sensors. See the video below:
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 Sense-HAT 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.py"(attached) to write to this text file and to also apply any calibrations as indicated in the second set of tests.
The first set of data below was obtained comparing the Acurite and the Sense HAT pressure, temperature and humidity readings for 48 consecutive hours at 5 minute intervals: See attached Excel file "before.xlsx" for complete data in both table and graph formats:
As you can see, the data consistently moves almost linearly between the two weather stations.
However, I can improve the operation of the Sense-HAT weather station by providing some calibration math to the "weewx.py" script.
A well known defect exists in the Sense-HAT temperature sensor in that it picks up heat from the cpu and artificially gives a reading that is too high.
I applied the algorithm, "temp_calibrated = temp - ((cpu_temp - temp)/FACTOR)" to calibrate the Sense-HAT temperature readings. I calculated "FACTOR" by averaging the difference in the Temp column from the attached Excel table from the "before.xlsx" file and modified the "weewx.py" script to apply it. Now the script dynamically takes into account the CPU temp and compensates for it. FACTOR = 5.4
I also calibrated the pressure and humidity Sense-HAT readings by applying a simple linear correction value. The pressure correction factor = "-0.17" and humidity correction factor = "+15". These values were also derived by averaging the respective difference columns in the attached Excel table from the "before.xlsx" file. The pressure readings required little correction but the humidity readings needed a larger amount of correction probably because the CPU may be drying the air a little around the sensor causing artificially lower readings.
The modified script is listed in "weewx calibrated.py"(attached).
The second set of data below was obtained using this modified script. Again, the data below was obtained comparing the Acurite and the Sense HAT pressure, temperature and humidity readings for 48 consecutive hours at 5 minute intervals. See attached Excel file "after.xlsx" for complete data in both table and graph formats:
As you can see, the compared readings between the Acurite and Sense-HAT sensors are very close and acceptable.
In conclusion, I would say that the Sense-HAT/Raspberry Pi3 Weather Station performs very well, once some calibration is applied to the sensor readings.