Raspberry Pi Weather Station
by dsberman in Circuits > Raspberry Pi
23 Views, 0 Favorites, 0 Comments
Raspberry Pi Weather Station
Raspberry Pi is a perfect tool to get Internet of Things (IoT) up and running - a Linux computer with access to I2C.
Things Used in This Project
Hardware components
- Raspberry Pi 3 Model B x 1
With micro-USB power supply, micro-SD card and Ethernet cable to router - XinaBox BR01 x 1
xChip Interface to Raspberry Pi - XinaBox SW01 x 1
xChip based on the BME280 Weather Sensor - XinaBox XC10 x 1
xBUS connector between xChips
Software apps and online services
Story
This is an example of building a weather station using a few components, that clicks together with no need for wiring or soldering.
Ready the Raspberry Pi
- Download Raspbian Lite and unzip
- Download Etcher and install
- Insert the Micro-SD card into your computer
- Run Etcher using Raspbien Lite as input and the Micro-SD card as output
- Create a empty file called 'ssh' on the root of the Micro-SD card. On a Mac that is easiest done by opening a terminal window and type:
cd /Volumes/boot touch ssh
- Now eject the Micro-SD card from your computer.
Assemble the Components
Assemble the Raspberry Pi with the xChips as illustrated in the "video" at the top.
- Click the IR02 into the Raspberry Pi with the header connected to the pins closest to the Micro-SD card end of the Pi
- Click an XC10 connector into the IR02
- Click the SW01 into the connector. Make sure the sensor is facing up (the SW01 name is facing up, similar to the IR02 name), and make sure the xChips are aligned. Only 2 of the sides of the SW01 will fit into the IR02.
- Insert the Micro-SD card into the Raspberry Pi
- Connect an Ethernet cable from your router to the Pi
- Connect a Micro-USB power source to your Pi
Configure Your Raspberry Pi
- Connect to your Raspberry Pi using ssh. From a Windows computer, you have to install an ssh program such as PuTTY, but from a Mac you simply open a terminal window, and type:
ssh pi@raspberrypi.local
The default password is 'raspberry'.
Once you are logged in, type this:
sudo raspi-config
That opens a configurations program where you:
- Choose: 5 Interfacing Options
- Then choose: P5 I2C
- Then answer "Yes" to "Would you like the ARM I2C interface to be enabled?"
Then we need to install a bit of software:
sudo apt-get update sudo apt-get install i2c-tools python-pip sudo pip install RPi.bme280
Let's just check that we can see the Weather sensor, type:
i2cdetect -y 1
And see if you get this:
pi@raspberrypi:~ $ i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- 76 -- pi@raspberrypi:~ $
Program and Run
Copy the 5 line program below into a file. Let's call it test.py, just cut and paste the following into you terminal
echo ' import smbus2 import bme280 bus = smbus2.SMBus(1) bme280.load_calibration_params(bus, 0x76) print(bme280.sample(bus, 0x76)) ' > test.py
Now run the code:
python test.py
...and you should see this:
pi@raspberrypi:~ $ python test.py compensated_reading(id=7c98f6f7-a677-4766-92dd-8b5def7c038a, timestamp=2017-10-09 21:03:46.202243, temp=27.583 °C, pressure=1023.24 hPa, humidity=38.52 % rH) pi@raspberrypi:~ $
Code
Weather Station Demo Python
A small Python demo reading the weather information from the SW01. Code kept short for simplicity.
import smbus2 import bme280 bus = smbus2.SMBus(1) bme280.load_calibration_params(bus, 0x76) print(bme280.sample(bus, 0x76))