← Alle Bauteile

BMP280

Sensor

Praeziser Luftdruck- und Temperatursensor von Bosch. Kommuniziert ueber I2C. Aus dem Luftdruck kann man die Hoehe ueber dem Meeresspiegel berechnen!

Tipps: Die meisten Breakout-Boards haben schon einen Spannungsregler — deshalb kann man sie trotzdem an 5V betreiben. I2C-Adresse ist meistens 0x76 oder 0x77.
Frag den Lernhelfer

Technische Daten

KategorieLuftdruck/Temperatur
SchnittstelleI2C (auch SPI moeglich)
PinbelegungVCC, GND, SCL, SDA
Anzahl Pins4
MessgroesseLuftdruck, Temperatur
MessbereichDruck: 300–1100 hPa, Temperatur: -40 bis 85 °C
GenauigkeitDruck: +-1 hPa, Temperatur: +-1 °C
Betriebsspannung1.8V – 3.6V
Stromverbrauch0.3 mA
DatenblattPDF oeffnen

Anschluss

Arduino Uno R3

Pins: 5V=VCC (Breakout hat Regler), A4=SDA, A5=SCL, GND=GND

Hinweise: I2C: SDA an A4, SCL an A5 (beim Uno fest). Adresse 0x76 oder 0x77.

Codebeispiele

Luftdruck und Temperatur messen (I2C) Mittel

Der BMP280 misst Luftdruck und Temperatur ueber die I2C-Schnittstelle. I2C braucht nur 2 Datenleitungen (SDA und SCL) und kann mehrere Geraete an denselben Pins betreiben. Aus dem Luftdruck kann man sogar die ungefaehre Hoehe berechnen!

Benoetigte Bibliotheken: Adafruit_BMP280.h, Adafruit_Sensor.h (im Library Manager suchen)

// ============================================
// BMP280: Luftdruck und Temperatur messen
// ============================================
// Anschluss (I2C): VCC=5V, GND=GND, SDA=A4, SCL=A5

#include <Wire.h>             // I2C-Kommunikation
#include <Adafruit_BMP280.h>  // BMP280-Bibliothek

Adafruit_BMP280 bmp;  // Sensor-Objekt

void setup() {
  Serial.begin(9600);
  Serial.println("BMP280 Sensor wird gesucht...");

  // Sensor initialisieren (0x76 ist die Standard-I2C-Adresse)
  if (!bmp.begin(0x76)) {
    Serial.println("FEHLER: BMP280 nicht gefunden!");
    Serial.println("Pruefen: Verkabelung, I2C-Adresse (0x76 oder 0x77?)");
    Serial.println("Tipp: I2C-Scanner-Sketch laufen lassen!");
    while (1);  // Programm anhalten
  }

  Serial.println("BMP280 gefunden und bereit!");
  Serial.println("-------------------------");
}

void loop() {
  // Temperatur auslesen
  float temperatur = bmp.readTemperature();
  Serial.print("Temperatur: ");
  Serial.print(temperatur);
  Serial.println(" °C");

  // Luftdruck auslesen (in Pascal, wir rechnen in hPa um)
  float druck = bmp.readPressure() / 100.0;  // Pa -> hPa
  Serial.print("Luftdruck:  ");
  Serial.print(druck);
  Serial.println(" hPa");

  // Ungefaehre Hoehe berechnen (Referenz: 1013.25 hPa auf Meereshoehe)
  float hoehe = bmp.readAltitude(1013.25);
  Serial.print("Hoehe:      ");
  Serial.print(hoehe);
  Serial.println(" m (ungefaehr)");

  Serial.println("-------------------------");
  delay(2000);
}

Haeufige Probleme

BMP280 wird nicht erkannt (I2C)

Symptom: Fehlermeldung 'BMP280 nicht gefunden' beim Start

Ursache: Falsche I2C-Adresse, SDA/SCL vertauscht, oder Kabel locker

Loesung:

1. I2C-Scanner-Sketch hochladen (Datei > Beispiele > Wire > i2c_scanner) 2. Im Seriellen Monitor schauen welche Adresse angezeigt wird 3. Diese Adresse im Code eintragen: bmp.begin(0x76) oder bmp.begin(0x77) 4. SDA an A4 und SCL an A5? (Beim Arduino Uno fest!)

Vermeidung: Zuerst immer den I2C-Scanner laufen lassen wenn ein I2C-Bauteil nicht geht.

Projekte mit diesem Bauteil

Wetterstation mit LCD-Anzeige Mittel (Luftdruck-Sensor)

Probleme mit BMP280?

KI-Lernhelfer fragen