BMP280 - Tem­pe­ra­tur und Luft­druck mes­sen

Lese­zeit: 4 Minu­ten
Navi­ga­ti­on

Der Sen­sor BMP280 kann die Tem­pe­ra­tur mes­sen und den Luft­druck bestim­men. Er wird über ➨I2C ange­steu­ert. Auf einem LCD sol­len Tem­pe­ra­tur und Luft­druck ange­zeigt wer­den.

So soll es aus­se­hen:

Benö­tig­te Bau­tei­le:

  • BMP280
  • LCD 1602
  • Lei­tungs­dräh­te

Der BMP280 wird auch in ande­ren Bau­for­men mit unter­schied­li­cher Pin­be­le­gung ange­bo­ten.

Die Schal­tung weist eine Beson­der­heit auf:

Weil I²C ein seri­el­les Bus­sys­tem ist, kön­nen die Daten­lei­tun­gen auf die Lei­ter­plat­te geführt wer­den. Die Anschlüs­se für 5V (VCC) und GND befin­den sich auf der ande­ren Sei­te der Steck­pla­ti­ne.

Quel­le: http://​pro​me​tec​.org/​d​i​s​p​l​a​y​s​/​t​h​e​-​i​2​c​-​bus (eige­ne Bear­bei­tung)

Benö­tig­te Biblio­the­ken:
Sketch → Biblio­thek ein­bin­den → Biblio­the­ken ver­wal­ten

Bin­de die benö­ti­gen Biblio­the­ken und defi­nie­re die Bau­tei­le.

# include <Adafruit_BMP280.h>
# include <LiquidCrystal_I2C.h>

// LCD definieren
// 0x27 -> Hex-Adresse, 20 Zeichen, 4 Zeilen
LiquidCrystal_I2C lcd(0x27, 20, 4);

Adafruit_BMP280 bmp;

Im setup-Teil wer­den das LCD und der BMP280 gestar­tet:

void setup()
{
  // BMP280 starten
  bmp.begin();

  // LCD starten
  lcd.init();
  lcd.backlight();
}

Im loop-Teil wird die Tem­pe­ra­tur und der Luft­druck gemes­sen. Beach­te die Kom­men­ta­re.

void loop()
{
  // readTemperature() Temperatur messen und Messergebnis formatieren
  String Temperatur = String(bmp.readTemperature());

  // . durch , ersetzen
  Temperatur.replace(".", ",");

  /* 
    readPressure() Luftdruck messen und Messergebnis formatieren
    readPressure() liest in Pascal, ausgabe in hPa (Hekto-Pascal)
    Ergebnis durch 100 teilen
  */
  String Luftdruck = String(bmp.readPressure() / 100);
  Luftdruck.replace(".", ",");

  // Ausgabe Serieller Monitor
  Serial.println("Temperatur: " + Temperatur + "°C");
  Serial.println("Luftdruck: " + Luftdruck + " hPa");

  // Ausgabe LCD
  lcd.setCursor(0, 0);
  lcd.print("Temperatur: ");
  lcd.setCursor(0, 1);

  // \337C -> °
  lcd.print(Temperatur + "\337C");

  lcd.setCursor(0, 2);
  lcd.print("Luftdruck: ");
  lcd.setCursor(0, 3);
  lcd.print(Luftdruck + " hPa");

  delay(3000);
}

Ver­gleich der Mess­da­ten DHT22 und BMP280

Das dazu­ge­hö­ri­ge Pro­gramm:

# include <SimpleDHT.h>
# include <Adafruit_BMP280.h>
int SENSOR_DHT22 = 8;
SimpleDHT22 dht22(SENSOR_DHT22);
Adafruit_BMP280 bmp;

void setup()
{
  Serial.begin(9600);
  bmp.begin();
}

void loop()
{
  float TemperaturDHT22;
  float LuftfeuchtigkeitDHT22;

  String AnzeigeTemperaturBMP280 = String(bmp.readTemperature());
  AnzeigeTemperaturBMP280.replace(".", ",");
  
  dht22.read2(&TemperaturDHT22, &LuftfeuchtigkeitDHT22, NULL);
  String AnzeigeTemperaturDHT22 = String(TemperaturDHT22);
  AnzeigeTemperaturDHT22.replace(".", ",");

  Serial.println("DHT22: " + AnzeigeTemperaturDHT22);
  Serial.println("BMP280: " + AnzeigeTemperaturBMP280);
  Serial.println("------------------------------");
  delay(3000);
}


Ver­wand­te Auf­ga­ben:


Letzte Aktualisierung: 3. Apr 2020 @ 10:11