Uživatelské nástroje

Nástroje pro tento web


education:arduino_bmp280

BMP280

BMP280

  • Senzor barometrického tlaku a teploty
  • Komunikace přes I2C, nebo SPI
  • Napájení 1.8 - 3.6V

Adafruit_BMP280_Library
Data sheet

BMP280 ARDUINO ESP32
I2C SDA A4 GPIO21
SCL A5 GPIO22
SPI SCL 13 GPIO18
SDO 12 GPIO19
SDA 11 GPIO23
CSB LIBOVOLNÝ

Knihovna obsahuje:
readTemperature(); - Čtení teploty [°C]
readPressure(); - Čtení naměřeného tlaku [Pa]
readAltitude(seaLevelhPa); - Výpočet nadmořské výšky. seaLevelhPa je aktuální tlak přepočtený na hladinu moře (0mnm). Lze ho zjistit z předpovědi počasí.
seaLevelForAltitude(altitude, atmospheric); - Přepočet tlaku na hladinu moře. altitude je nadmořská výška ve které byla hodnota tlaku naměřena [m]. atmospheric je naměřená hodnota tlaku určená k přepočtu [hPa]
waterBoilingPoint(pressure); - Výpočet přesné teploty varu vody[°C]. pressure je tlak podle kterého bude vypočten bod varu

Funkcí setSampling(); lze nastavit chování senzoru.1)

MODE OVERSAMPLING FILTERING STANDBY
MODE_NORMAL SAMPLING_NONE FILTER_OFF STANDBY_MS_1
MODE_FORCED SAMPLING_X1FILTER_X2 STANDBY_MS_63
MODE_SLEEP SAMPLING_X2FILTER_X4 STANDBY_MS_125
MODE_SOFT_RESET_CODE SAMPLING_X4 FILTER_X8 STANDBY_MS_250
SAMPLING_X8 FILTER_X16 STANDBY_MS_500
SAMPLING_X16 STANDBY_MS_1000
STANDBY_MS_2000
STANDBY_MS_4000
BMP280.ino
#include <Adafruit_BMP280.h> // Kód je psaný pro verzi knihovny 2.6.6
 
/* Vlastní nastavení SPI */
#define BMP_SCK 13   // SCL
#define BMP_MISO 12  // SDO
#define BMP_MOSI 11  // SDA
#define BMP_CS 10    // CSE
 
Adafruit_BMP280 bmp;  // I2C
//Adafruit_BMP280 bmp(BMP_CS); // hardware SPI
//Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK);  //vlasní SPI
 
void setup() {
  Serial.begin(9600);
  Serial.println("\nBMP280 test");
  //Wire.begin(SDA, SCL); // Vlastní nastavení I2C
  //bool status = bmp.begin(); // použití výchozí I2C adresy (0x77)
  bool status = bmp.begin(BMP280_ADDRESS_ALT, BMP280_CHIPID);  // návratová hodnota určuje jestli senzor komunikuje
 
  if (!status) {
    Serial.println(F("Nepodarilo se navazat komunikaci se senzorem. Zkontrolujte zapojeni, "
                     "nebo pouzijte jinou I2C adresu senzoru. (radek 17) "));
    while (1) delay(10);
  }
 
  /* Výchozí nastavení podle datasheetu */
  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. */
}
 
void loop() {
  float teplota = bmp.readTemperature();                                 // načtení teploty
  float tlak = bmp.readPressure() / 100.0;                               // načtení tlaku, převod z Pa na hPa
  float tlak_hl_more = bmp.seaLevelForAltitude(250 /*n. výška*/, tlak);  // přepočet tlaku na hladinu moře
  float vyska = bmp.readAltitude(1013.25 /*tlak 0mnm*/);                 // měření nadmořské výšky
  float bod_varu = bmp.waterBoilingPoint(tlak);                          // výpočet bodu varu
 
  Serial.println("\nTeplota\t\tTlak\t\tTlak 0 mnm\tVyska\t\tBod varu");
  Serial.print(teplota);      Serial.print(" °C\t");
  Serial.print(tlak);         Serial.print(" hPa\t");
  Serial.print(tlak_hl_more); Serial.print(" hPa\t");
  Serial.print(vyska);        Serial.print(" mnm\t");
  Serial.print(bod_varu);     Serial.println(" °C");
 
  delay(2000);
}
1)
viz tabulka
education/arduino_bmp280.txt · Poslední úprava: 2023/08/18 12:37 autor: 127.0.0.1