Main Menu

Secondary Menu

Raspberry Pi Weather Station

Introduction: Raspberry Pi Weather Station

Hello, this is a simple implementation of a personal portable weather station using the Raspberry Pi. The weather station displays the current temperature and atmospheric pressure on an LCD display, and also uploads it onto an IoT platform called ThingSpeak along with a few more parameters that can be measure using the BMP 180 sensor.

Let's get started..

Step 1: Creating a Channel

First off, we'll need to create a channel on ThingSpeak. If you don't already have an account, you'll need to do that first, obviously!

We created a channel with 4 fields (2 through 5).

The attached image will give you an idea on how to create the fields.

Note: We had reserved field 1 for the future implementation of another parameter such as humidity, although more fields can always added at the end.

Step 2: Components

• Raspberry Pi

• BMP 180 sensor

• 16x2 LCD display

Step 3: Installing Libraries

For the sensor we are using (BMP 180) you'll need to install an additional library. This can be done by executing the following commands in terminal -

sudo apt-get update

sudo apt-get install git build-essential python-dev python-smbus

git clone https://github.com/adafruit/Adafruit_Python_BMP.git

cd Adafruit_Python_BMP

sudo python setup.py install

The BMP 180 sensor requires I2C to be enabled. This can be done by executing -

sudo raspi-config

then selecting advanced options finally and enable I2C option.

Step 4: The Circuit

Make the connections as shown in the diagram.

We're listing out the Pi to LCD connections for easy reference :

LCD_RS => 18

LCD_E => 23

LCD_D4 => 24

LCD_D5 = >16

LCD_D6 => 20

LCD_D7 => 21

The potentiometer is used for adjusting the contrast.

Step 5: The Program

Once the connections are made, you'll need to enter the Write API Key of the channel you created into the 'key' string in the program.

Now the program is ready to be run on your Raspberry Pi.

If you decide to add/ remove and fields you'll just have to change the finalURL string in the program.