Senzorul BMP280

In acest articol vom folosi un modul BMP280 pentru a obtine temperatura, presiunea atmosferica si altitudinea.

Modulul folosit de mine se alimenteaza la +3.3V si poate fi conectat la Arduino atat pe interfata I2C (cea pe care o vom folosi in acest articol) cat si pe SPI.

Pentru a putea folosi acest modul va trebui sa instalam 2 librarii suplimentare. Prima librarie este Adafruit Sensor iar a doua este Adafruit BMP280 Library.

O poza cu modulul folosit de mine este mai jos:

 

 

Pentru a afisa informatiile oferite de senzor vom folosi un display LCD 2004 cu adaptor I2C. Acesta se va conecta conform acestui articol.

Sketchul folosit este cel de mai jos:

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_BMP280.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 20, 4);

Adafruit_BMP280 bmp; // use I2C interface
Adafruit_Sensor *bmp_temp = bmp.getTemperatureSensor();
Adafruit_Sensor *bmp_pressure = bmp.getPressureSensor();
float alt;
byte celsius[] = {
  B00110,
  B01001,
  B01001,
  B00110,
  B00000,
  B00000,
  B00000,
  B00000
};

void setup() {
  lcd.begin();
  lcd.setCursor(0, 0);
  lcd.print("Testare modul");
  lcd.setCursor(0, 1);
  lcd.print("barometric BM280");
  lcd.setCursor(1, 3);
  lcd.print("electronicstore.ro");
  delay(3000);
  lcd.clear();

  if (!bmp.begin(0x76)) {
    lcd.setCursor(0, 0);
    lcd.print("BMP280 nu a putut fi");
    lcd.setCursor(0, 1);
    lcd.print("initializat...");
    lcd.setCursor(1, 3);
    lcd.print("electronicstore.ro");
    while (1);
  }

  bmp.setSampling(Adafruit_BMP280::MODE_NORMAL,     /* Operating Mode. */
                  Adafruit_BMP280::SAMPLING_X2,     /* Temp. oversampling */
                  Adafruit_BMP280::SAMPLING_X16,    /* Pressure oversampling */
                  Adafruit_BMP280::FILTER_X16,      /* Filtering. */
                  Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */

  bmp_temp->printSensorDetails();
  delay(3000);
  lcd.createChar(0, celsius); 
}

void loop() {
  sensors_event_t temp_event, pressure_event;
  bmp_temp->getEvent(&temp_event);
  bmp_pressure->getEvent(&pressure_event);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Temp.: ");
  lcd.print(temp_event.temperature);
  lcd.print(" ");
  lcd.write(byte(0));
  lcd.print("C");
  
  lcd.setCursor(0, 1);
  lcd.print("Pres.: ");
  lcd.print(pressure_event.pressure);
  lcd.print(" hPa"); 
  
  alt = bmp.readAltitude(995.5); /* presiune la nivelul marii la locatia actuala */

  lcd.setCursor(0, 2);
  lcd.print("Alt.: ");
  lcd.print(alt);
  lcd.print(" m.");

   lcd.setCursor(1, 3);
  lcd.print("electronicstore.ro");
  delay(3000);
}

 Poze cu montajul in functiune sunt mai jos:

 

Un filmulet cu montajul in functiune se poate viziona mai jos:

Autentificare