Weather Monitor




Introduction: Weather Monitor

This Instructable shows you how to build a micro-controller based weather monitoring device. Built on the Arduino Uno board it can easily be extended and modified should you have additional sensors at hand.

Main requirements:
- Measure temperature (accuracy +/- 0,5 degree Kelvin)
- Measure barometric air pressure (+/- 0,1 Pascal)
- Display measured values on a LCD on demand by pressing a button

Main components:
- Arduino Uno board as controller unit
- 16x2 LCD for data output
- BMP085 Sparkfun breakout board as sensor unit for barometric pressure and temperature

In order to build this device some experience with soldering is required. Especially the wiring of the LCD and the Sparkfun break-out need to be soldered carefully.
Experience with Arduino Boards is also required and some C-Programming is needed should you want to modify the sources provided or if you have only different components available.

In order to run the Weather Monitor you have to build up the following components:
- A Sensor Box for the barometric/temperature sensor
- A Control Box containing the arduino board, the LCD and connects to the sensor box
- The Arduino control software which controls the operation of the system

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Required Components

List of System Components

  • Microcontroller Board: Ardino Uno R3
  • LCD: Gleichmann GE-C1602B-TFH-JT/R
  • Barometric & Temperature Sensor: Bosch BMP085
  • Power Supply: Energiespar-Steckernetzteil USPS-600, Voltcraft
  • Housing: Spelsberg TK Kunststoffgehäuse 180 x 94 x 57 mm plus Montageplatte
  • Illuminated Push-Button: SCI Drucktaster 250 V/AC 0,5 A beleuchtet R13-529ALBL 1x Aus/(Ein)
  • Status LED: Duo-LED 5 mm CQX 95 / WU-1-91EWG Rot, Grün 60 ° Gehäuseart 5 mm 90/70 mcd

Depending on your preferred method to connect the components you may need additional wiring or a breadboard.

Step 2: Electrical Wiring

This section lists the required wiring. There is currently no graphical schematic available, but I hope it is possible for you to connect up the components based on the following listing:

Summary on Arduino Pins
A0 ---> PushButton Manual OP
A1 ---> PushButton LED Manual OP
A2 ---> Operation Panel LED RED
A3 ---> reserved
A4 ---> BMP085
A5 ---> BMP085

0 ---> reserved
1 ---> reserved
2 ---> LCD
3 ---> LCD
4 ---> LCD
5 ---> LCD
6 ---> Illumination LEDs and LCD Backlight
7 ---> Operation Panel LED GREEN
8 ---> LCD
9 ---> LCD
10 X reserved for Ethernet/SPI
11 X reserved for Ethernet/SPI
12 X reserved for Ethernet/SPI
13 X reserved for Ethernet/SPI


BMP085 ---> Arduino Uno
VCC ---> 3.3V
GND ---> GND
SCL ---> A5
SDA ---> A4


Arduino ---> LCD 16x2
GND ---> Gnd (pin 1)
5V ---> VCC (pin 2)
digital 9 ---> RS (pin 4)
GND ---> R/W (pin 5)
digital 8 ---> E (pin 6)
digital 5 ---> D4 (pin 11)
digital 4 ---> D5 (pin 12)
digital 3 ---> D6 (pin 13)
digital 2 ---> D7 (pin 14)
digital 6 ---> Backlight (pin 15)
Arduino --> 10K Poti --> LCD
Poti-ends to +5V and Ground
Wiper ---> LCD VO (pin 3)


Arduino ---> Illumination LEDs
digital 6 ---> White LEDs PLUS (PWM)
GND ---> White LEDs MINUS


Arduino ---> Operator Panel
A0 ---> PushButton Manual OP
A1 ---> PushButton LED Manual OP
A2 ---> Operation Panel LED Error
digital 7---> Operation Panel LED OK

Step 3: Assembly of Sensor Box

Take care when mounting the connector strip to BMP085 breakout board. Try to avoid too much heat during soldering since the sensor readout may become unstable.
In order to operate the BMP085 outside a building it needs to be put into a casing to protect its electric circuit.
A fluffy housing for the sensor board ensures a stable measurement of barometric pressure.
Nevertheless the casing should allow air circulation in order to timely measure of temperature and correct measurement of the air pressure.

Step 4: Assembly of Control Box

The suggested casing allows to mount the Arduino board and additional connectors on the bottom of the casing. First picture above show a suggested layout before mounting the LCD. Connect the Arduino, LCD and BMP085 as listed in Step 2. Additionally I added a operation button and a status LED for manual operation for more convenience and feedback.
Instead of a battery I recommend to use a DC power supply shown above, which is available for less than 10 EUR.

Step 5: Control Software

The full source code can be found attached (file CWM_R1_03.ino).

Here we list the Arduino main loop only.

void loop()  //start of main loop
  if (manualState == HIGH) {   // if in Manual Operation Mode
  if ( (millis() - manualTimer) < manualInterval) {   
   if ( (millis() - uploadTimer) > updateInterval) {  
   readBMP();  // read sensor values from BMP085
   displayLCD();  // update values on LCD
   uploadTimer = millis();
  else {
   manualState = LOW;    // if not in Manual Operation Mode
   analogWrite(LED_ILLUM_PIN, 0);  // Switch off Illumination LEDs
checkManualOP();   // check if manual operation button has
// been pressed and timer value not over
  delay(250);   // sleep some time  
}  // end loop

Step 6: Complete System

Now connect the control box with the sensor box and the power supply. Then download the control software to the Arduino and the system is ready for operation. Pushing the button runs a system check and if successful the green status LED illuminates. Also the currently measured sensor values are displayed on the LCD.

Have Fun!!!

Step 7: Outlook

There are always ideas to improve an extend the weather monitor and I am looking forward to your feedback and suggestions.
Some immediate next steps I plan is to hook up the Cademis Weather Monitor to the Internet and store the measured values in a MySQL DB. This requires the extension of the control box with a WIFI or Network Shield.

Also the extension with additional sensors seems useful. Either as a temperature sensor network or with some environmental sensors like radioactivity, CO and Feinstaub!

Hope you find this Instructable useful and you enjoy it!

Be the First to Share


    • Finish It Already Speed Challenge

      Finish It Already Speed Challenge
    • Arduino Contest 2020

      Arduino Contest 2020
    • First Time Author Contest

      First Time Author Contest

    3 Discussions


    6 years ago on Introduction

    Hi great tutorial.

    I was just wondering what happens with pin 7 - 10(D0 - D3)of the lcd?

    They're not connected to the arduino, so just let em float or is it better to ground them?


    Reply 6 years ago on Introduction

    Thanks for your comment.

    Actually I just relied on the wiring from the website and put not much thought on the remaining pins :-)

    Here the link to the wiring:


    Reply 5 years ago on Introduction

    I'm new to Arduino, I have a question, the push button, is it needed for operation? If so may I have the wiring diagram for A0,1,2. I'm not sure how to hook the wires up. Right now, A),1,2 are not connected and all I get is one row of bars, no digits or letters. I did adjust the contrast, that's not the problem.