Погодная станция Ардуино для начинающих

В этом уроке мы создадим простую метеостанцию на Arduino, очень простой проект, который дает информацию о погоде.

Комплектующие

Начинаем по традиции с комплектующих для погодной станции Ардуино.

  • Arduino UNO (Genuino UNO) × 1
  • Adafruit стандартный LCD дисплей  16x2 × 1
  • GY-BM E/P 280 × 1
  • Резистор 221 ом × 1
  • Провода (на выбор)

Дополнительно нам понадобится Arduino IDE.

Схема соединения

Итак, это первая версия очень простой метеостанции, созданной с помощью Arduino UNO, датчика BMP280 и ЖК-дисплея.

Версия v 2.0 (которая будет беспроводной) выйдет уже совсем скоро, так что добавляйте наш сайт в избранное и следите за новостями.

Следуйте схеме выше для соединения всех комплектующих.

Код

Вы можете скопировать или скачать код погодной станции Ардуино ниже.

#include  //Library for the LCD screen
#include  // 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);
}

Итоговый результат

В итоге у Вас должно получиться что-то вроде этого.

Отдельно можно сделать корпус для метеостанции и использовать PCB вместо макетной платы. Тогда у вас будет очень интересное и законченное устройство.

Ардуино+