Arduino Weather Station Project - Overview


In this project we are putting together a Weather Station using a variety of sensors. The platform being used is an Arduino board (Freetronics EtherTen) with built in Ethernet. This will provide communications to the sensor along with a power source provided by POE (Power Over Ethernet).

As we work through the project we will connect up the various sensors. In this process we create the software sketch that will run the weather station.

We could also use a WiFi connection to provide the data communications. This would however require an alternative power source such as a solar panel and battery. We will add WIFI at a later stage.

On completion of the project the following data will be available:

  • External Temperature (DS18B20)
  • Internal Temperature (BME280)
  • Humidity (BME280)
  • Barometric Pressure (BME280)
  • Rain Gauge (Hydreon RG-ll)
  • Wind Speed (Davis Anemometer)
  • Wind Direction (Davis Anemometer)

To aid in the testing process two LED's have been included. One is to indicate there is power being supplied to the controller box. This LED is connected to the 12V input via a resistor. The other LED is used to indicate when data is being transmitted to the remote server.

The Arduino board and the BME280 will be mounted inside a container made from a 100mm PVC pipe. In fact the container and wind shield were made from common plumbing and gardening materials available from your local home hardware store. Alternatively some of the materials can be obtained as left overs from building sites.

Live Data from Arduino Weather Station

Click on the button below to view the live data from the Test Weather Station. The station is located in Perth, Western Australia


The project is broken up into many parts. We work through connecting each sensor and developing the software as we connect each sensor to the Arduino. The software we use is based on the hookup guides for each sensor and the software library for that sensor. Once all of the sensors and software is covered we have a section on mounting the Arduino and sensors into a container.

Arduino Weather Station Project

Note 1: The weather station is powered by 12V DC. This is then fed into a DC-DC buck converter that takes the 12V input and outputs 9V. The 9V is then fed into the Arduino board.

Note 2: The DS18B20 requires a 4k7 pullup resistor that is not shown here.

Note 3: The Hydreon RG-11 requires 12V which we take from the 12V DC plug. This sensor also requires 2 resistors.

Note 4: The Davis Anemometer uses an interesting wiring colour scheme. Be careful. The colours shown here match the cable that was supplied with the anemometer. The anemometer requires a 4k7 resistor that is not shown here.

The sensors chosen for this project are based on the interface method they use and the available inputs on the Arduino. There are a mixture of digital inputs and one analog input. We also have a sensor that requires an I2C interface. The inputs are as follows:

  • External Temperature (DS18B20) - (D9) Digital Input 9 (Uses Dallas commmunications protocol)
  • Temperature, Humidity, Barometric Pressure (BME280) - (A4 & A5) I2C Interface using A4 and A5
  • Rain Gauge (Hydreon RG-ll) - (D3) Digital Input 3 - Interrupt enabled
  • Wind Speed (Davis Anemometer) (D2) Digital Inpt 2 - Interrupt enabled
  • Wind Direction (Davis Anemometer) (A3) Analog Input

Hardware Required

The weather station uses hardware and sensors that can be purchased from a variety of suppliers.The hardware used for this weather station is as follows:

  • Freetronics EtherTen Board
  • Freetronics Shield
  • Temperature (DS18B20) - Adafruit Waterproof DS18B20 PN:
  • Temperature, Humidity, Barometric Pressure (BME280) - Adafruit BME280 PN:
  • Rain Gauge (Hydreon RG-ll)
  • Wind Anemometer (Davis)

Terminal Shield

Although the weather station can be wired up without one it is a lot easier to use one. The terminal shield provides screw terminals that allow the connection wires to be securely connected to the Arduino. There are many types of terminal shields available from a multiple of suppliers. The one used here is the Freetronics Terminal Shield.

Freetronics Terminal Shield

The connection wires can be inserted and screwed down in the terminal. We have used ferrules and crimped them over the wire. This allows a secure screw in connection. They also provide protection for multi-stranded wire.

Power Supply

To power the Arduino and range of sensors we need 12V DC. The hydreon RG-11 requires 12V however all other hardware requires only 5V. To get power to the weather station we are going to inject the 12V through the ethernet cable. Because the Arduino Ethernet is only running at 10MB/s we only require 2 pairs of the 4 pairs of wires in the ethernet cable. So this allows us to use the other pairs not in use. To run power through this cable we will only use 1 pair. For more details about running power through Ethernet check out the following tutorial.

We could power the Arduino board using 12V DC but this puts the voltage regulator at it's maximum input voltage. It has to convert the 12V to 5V. Most of the voltage drop is converted to heat which makes the regulator run pretty hot. To avoid this we have used a voltage buck converter that takes the 12V and outputs it at 9V. This is adjustable via the blue trimpot on the board. (Image not to scale)

DC-DC Buck Converter

Next Step

In part 2 of this project we are going to connect up the DS18B20 temperature sensor and start the Arduino Weather Station Sketch with the code for this sensor.