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.
Acest modul costa 22 lei si poate fi cumparat de aici.
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: