Project tutorial
Arduino Weather Station v1.0 (BMP280)

Arduino Weather Station v1.0 (BMP280) © GPL3+

This is the first version of my Arduino Weather Station, a very simple project that will give you weather information.

  • 7,311 views
  • 15 comments
  • 43 respects

Components and supplies

Apps and online services

About this project

First version of a very simple weather station made with an Arduino UNO, a BMP280 sensor and a LCD.

I'm already working on the v2.0 (which will be wireless), so keep up with me to stay updated! ;)

Code

Arduino CodeC/C++
With this code you'll be able to send data from the sensor to the LCD.
#include <LiquidCrystal.h> //Library for the LCD screen
#include <BMP280.h> // Library for the BMP280 sensor

BMP280 bmp; //Initialize your sensor
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); /*Initialize your LCD, make sure you wired                                                       it correctly */

#define P0 1013.25 //Standard atmospheric pressure
#define contrast 9 //9 and 10 are the pins where you wire the matching LCD pins
#define brightness 10 //for contrast and brightness regulation

double T = 0; //Starting temperature value
double P = 0; //Starting pressure value
char measure = 0;

void collectData() {
  measure = bmp.startMeasurment();
  if(measure != 0) {
    delay(measure);
    measure = bmp.getTemperatureAndPressure(T, P);
    if(measure != 0) {
      P = P + 17; // '+17' is a correction for the sensor error
      T = T - 0.8; // like said above
      lcd.clear();
      lcd.print("T: ");
      lcd.print(T);
      lcd.print(" C");
      lcd.setCursor(0, 1);
      lcd.print("P: ");
      lcd.print(P);
      lcd.print(" hPa");
    }
    else
      lcd.print("Error.");
  }
  else
    lcd.print("Error.");
}

void setup() {
  lcd.begin(16, 2);
  pinMode(contrast, OUTPUT);
  pinMode(brightness, OUTPUT);
  analogWrite(contrast, 100); // '100' and '255' are the contrast and brightness
  analogWrite(brightness, 255); // values I suggest, but you can change them as
  if(!bmp.begin()) {             // you prefer
    delay(1000);
    lcd.print("Init. failed.");
    lcd.setCursor(0, 1);
    delay(1000);
    lcd.print("Check wiring.");
    while(1);
  }
  else
    lcd.print("Init. OK.");
    
    bmp.setOversampling(4);
    delay(2000);
    collectData();
}

void loop() {
  collectData();
  delay(2000);
}

Schematics

wiring_lwR7Z3oZQ0.jpg
With this wiring you shouldn't have problem
Wiring lwr7z3ozq0

Comments

Similar projects you might like

AWS - Arduino Weather Station

Project tutorial by GilettaStefano

  • 19,313 views
  • 13 comments
  • 63 respects

Wireless weather station (Arduino + ESP8266 + Thingspeak)

Project tutorial by Alin-Constantin Paun

  • 8,862 views
  • 2 comments
  • 11 respects

$10 Portable Arduino Weather Station (AWS)

Project tutorial by Prajjwal Nag

  • 31,648 views
  • 6 comments
  • 59 respects

Arduino Easy Weather Station With BME280 Sensor

Project tutorial by Nick Koumaris

  • 16,301 views
  • 1 comment
  • 28 respects

Weather Station v.1.0

Project showcase by derapados

  • 10,388 views
  • 3 comments
  • 36 respects

Weather Station with Thingspeak

Project showcase by Tittiamo

  • 3,011 views
  • 2 comments
  • 6 respects
Add projectSign up / Login