Introduction to Raspberry Pi Controlled Weather Station:- Humidity, Temperature and Pressure are three basic parameters to build any weather station and to measure environmental conditions. A Raspberry Pi Controlled Weather Station is a weather station which is used for collecting local climate and environmental data for various purposes. There are many weather application that you can get information with this project, the weather application examples are as follow: -Humidity -Temperature -Air Quality -Wind Speed -Wind Gust -Wind direction -Rainfall -Active mechanical sensors
Components Required:-
1: Raspberry Pi 3
Raspberry Pi 3 is a small sized computer. By simply just adding a keyboard, mouse, display, power supply, micro SD card with installed Linux Distribution and we will have a amall sized portable computer that can run applications from word processors and spreadsheets to games and so on.
2: Raspberry Pi Weather Shield
Raspberry PI Weather Shield is a sensor module which is used to measure weather applications like humidity, preassure and temperature. It is also called raspberry pi weather hat sensor module.
3: Jumper Wires
Jumper Wires is used for circuit interconnections.
5: Steps to follow
Weather will work in the following steps:
STEP1:
Sensor senses the humidity & temperature data and also measure the atmospheric pressure.
STEP2:
After interconnections of sensors with Raspberry, it will read the sensor module’s output by using single wire protocol and pressure sensor’s output by using I2C protocol and extracts both sensors values into a suitable number in percentage (humidity), Celsius scale(temperature), hector pascal or millibar (pressure).
STEP3:
These value will sent to server by using inbuilt WiFi of Raspberry PI.
STEP4:
It will analyse the data and shows it in a graph form.
6: Circuit diagram & connections
7:Code
#Register Address
regCall = 0xAA
regMean = 0xF4
regMSB = 0xF6
regLSB = 0xF7
regPres = 0x34
regTemp = 0x2e
# Read temperature
bus.write_byte_data(addr, regMean, regTemp)
time.sleep(0.005)
(msb, lsb) = bus.read_i2c_block_data(addr, regMSB, 2)
P2 = (msb<< 8) + lsb
# Read pressure
bus.write_byte_data(addr, regMean, regPres + (sample << 6))
time.sleep(0.05)
(msb, lsb, xsb) = bus.read_i2c_block_data(addr, regMSB, 3)
P1 = ((msb<< 16) + (lsb<< 8) + xsb) >> (8 - sample)
# Refine temperature
X1 = ((P2 - AC6) * AC5) >> 15
X2 = (MC << 11) / (X1 + MD)
B5 = X1 + X2
temperature = (B5 + 8) >> 4
# Refine pressure
B6 = B5 - 4000
B62 = B6 * B6 >> 12
X1 = (B2 * B62) >> 11
X2 = AC2 * B6 >> 11
X3 = X1 + X2
B3 = (((AC1 * 4 + X3) << sample) + 2) >> 2
}