• Arduino
  • Raspberry Pi
  • Raspberry Pi Pico
  • Micro:Bit

KY-052

Der BMP280 ist ein vielseitiger Sensor, der sowohl den Luftdruck als auch die Temperatur misst und die Ergebnisse über den I2C-Bus ausgibt. Mit diesem Sensor können Sie präzise Luftdruck- und Temperaturwerte erfassen, was ihn ideal für Anwendungen wie Wetterstationen, Höhenmesser und mobile Geräte macht.

Er deckt einen breiten Druckbereich ab, der Höhenlagen von +9000 bis -500 Meter über bzw. unter dem Meeresspiegel entspricht. Die gemessenen Daten sind sehr genau, was bedeutet, dass Sie zuverlässige Informationen zur Umgebungsbedingungen erhalten. Der Sensor kann in einem breiten Temperaturbereich arbeiten, von -40 bis +85°C, was ihn für viele Umgebungen geeignet macht.

Dank der digitalen Schnittstellen (I²C und SPI) kann der BMP280 leicht in verschiedene Mikrocontroller- und Computersysteme integriert werden. Dies erleichtert die Entwicklung von Projekten, die genaue Umweltmessungen erfordern. Der geringe Stromverbrauch des Sensors macht ihn zudem ideal für den Einsatz in batteriebetriebenen Geräten.

Insgesamt bietet der BMP280 eine einfache und effektive Lösung für die präzise Überwachung von Luftdruck und Temperatur, was ihn zu einer wertvollen Komponente für eine Vielzahl von Anwendungen macht.

Technische Daten
Messbereich (Druck) 300 bis 1100 hPa (äquivalent zu +9000 bis -500 m über/unter dem Meeresspiegel)
Relative Genauigkeit ±0,12 hPa, äquiv. zu ±1 m (950 bis 1050hPa bei 25°C)
Absolute Genauigkeit ±1 hPa (950 bis 1050 hPa, 0 bis +40 °C)
Temperaturkoeffizient Offset 1,5 Pa/K, entspricht 12,6 cm/K (25 bis 40°C bei 900 hPa)
Digitale Schnittstellen I²C (bis zu 3,4 MHz), SPI (3- und 4-Draht, bis zu 10 MHz)
Stromverbrauch 2,7 µA bei 1 Hz Abtastrate
Messbereich (Temperatur) -40 bis +85 °C

Anschlussbelegung

Dieser Sensor erlaubt es, sowohl an 5 V Systemen, sowie an 3,3 V Systemen angeschlossen und betrieben zu werden.

Arduino Sensor
5 V SDO
5 V CSB
Pin A4 SDA
Pin A5 SCL
5 V +V
GND GND

Code-Beispiel

Dieser Sensor gibt sein Messergebnis nicht als Signal auf seinem Ausgangspin aus, sondern kommuniziert diesen per I2C-Bus. Über diesen lässt sich der Sensor ansteuern und die jeweiligen Messungen zum Druck und der Temperatur starten und auswerten.

Um das folgende Codebeispiel auf Ihren Arduino zu laden, empfehlen wir die Verwendung der Arduino IDE. In der IDE können Sie den passenden Port und das richtige Board für Ihr Gerät auswählen.

Es werden für das Codebeispiel auch die folgenden Bibliotheken verwendet:

Adafruit_BMP280 von Adafruit | veröffentlicht unter der BSD-Lizenz

Diese Bibliotheken können Sie bequem über den Bibliotheken-Manager der Arduino IDE hinzufügen. Kopieren Sie anschließend den unten stehenden Code in Ihre IDE. Um den Code auf den Arduino hochzuladen, klicken Sie einfach auf den Upload-Button.

/***************************************************************************
  This is a library for the BMP280 humidity, temperature & pressure sensor
 
  Designed specifically to work with the Adafruit BMEP280 Breakout 
  ----> http://www.adafruit.com/products/2651
 
  These sensors use I2C or SPI to communicate, 2 or 4 pins are required 
  to interface.
 
  Adafruit invests time and resources providing this open source code,
  please support Adafruit andopen-source hardware by purchasing products
  from Adafruit!
 
  Written by Limor Fried & Kevin Townsend for Adafruit Industries.  
  BSD license, all text above must be included in any redistribution
 ***************************************************************************/
 
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_BMP280.h>
 
// Definiere Pins vom BMP280
#define BMP_SCK 13
#define BMP_MISO 12
#define BMP_MOSI 11 
#define BMP_CS 10

// Initialisiere BMP280
Adafruit_BMP280 bmp;
 
void setup() {
  // Initialisiere seriellen Monitor
  Serial.begin(9600);
  Serial.println(F("KY-052 BMP280 Test"));
  // Baue Verbindung mit BMP280 auf
  if (!bmp.begin()) {  
    Serial.println(F("Konnte keinen gültigen BMP280-Sensor finden, Verkabelung überprüfen!"));
    while (1);
  }
}
 
void loop() {
  // Gebe Messwerte vom BMP280 aus
  Serial.print(F("Temperatur = "));
  Serial.print(bmp.readTemperature());
  Serial.println(" °C");
    
  Serial.print(F("Druck = "));
  Serial.print(bmp.readPressure());
  Serial.println(" Pa");

  Serial.print(F("Höhe = "));
  // Dieser Wert muss an den aktuellen Luftdruck Ihres Standorts geaendert werden
  // ansonsten kommt es zu Ungenauigkeiten
  // Wetterdienste koennen Ihnen Auskunft geben
  // 1013.25 hPa ist der mittlere Luftdruck auf Meereshoehe
  Serial.print(bmp.readAltitude(1013.25)); 
  Serial.println(" m");
    
  Serial.println();
  delay(2000);
}

KY-052

Der BMP280 ist ein vielseitiger Sensor, der sowohl den Luftdruck als auch die Temperatur misst und die Ergebnisse über den I2C-Bus ausgibt. Mit diesem Sensor können Sie präzise Luftdruck- und Temperaturwerte erfassen, was ihn ideal für Anwendungen wie Wetterstationen, Höhenmesser und mobile Geräte macht.

Er deckt einen breiten Druckbereich ab, der Höhenlagen von +9000 bis -500 Meter über bzw. unter dem Meeresspiegel entspricht. Die gemessenen Daten sind sehr genau, was bedeutet, dass Sie zuverlässige Informationen zur Umgebungsbedingungen erhalten. Der Sensor kann in einem breiten Temperaturbereich arbeiten, von -40 bis +85°C, was ihn für viele Umgebungen geeignet macht.

Dank der digitalen Schnittstellen (I²C und SPI) kann der BMP280 leicht in verschiedene Mikrocontroller- und Computersysteme integriert werden. Dies erleichtert die Entwicklung von Projekten, die genaue Umweltmessungen erfordern. Der geringe Stromverbrauch des Sensors macht ihn zudem ideal für den Einsatz in batteriebetriebenen Geräten.

Insgesamt bietet der BMP280 eine einfache und effektive Lösung für die präzise Überwachung von Luftdruck und Temperatur, was ihn zu einer wertvollen Komponente für eine Vielzahl von Anwendungen macht.

Technische Daten
Messbereich (Druck) 300 bis 1100 hPa (äquivalent zu +9000 bis -500 m über/unter dem Meeresspiegel)
Relative Genauigkeit ±0,12 hPa, äquiv. zu ±1 m (950 bis 1050hPa bei 25°C)
Absolute Genauigkeit ±1 hPa (950 bis 1050 hPa, 0 bis +40 °C)
Temperaturkoeffizient Offset 1,5 Pa/K, entspricht 12,6 cm/K (25 bis 40°C bei 900 hPa)
Digitale Schnittstellen I²C (bis zu 3,4 MHz), SPI (3- und 4-Draht, bis zu 10 MHz)
Stromverbrauch 2,7 µA bei 1 Hz Abtastrate
Messbereich (Temperatur) -40 bis +85 °C

Anschlussbelegung

Dieser Sensor erlaubt es, sowohl an 5 V Systemen, sowie an 3,3 V Systemen angeschlossen und betrieben zu werden.

Raspberry Pi Sensor
3,3 V [Pin 1] SDO
3,3 V [Pin 1] CSB
GPIO 2 / SDA [Pin 3] SDA
GPIO 3 / SCL [Pin 5] SCL
3,3 V +V
GND [Pin 6] GND

Code-Beispiel

Das Programm nutzt zur Ansteuerung des BMP280, der auf diesem Sensor-Modul verbaut ist, die BMP280 Python-Library der Firma Adafruit. Diese wurde unter der MIT OpenSource-Lizenz veröffentlicht.

Diese muss vor der Verwendung installiert werden:

Installieren Sie zunächst die pip3-Software, die es Ihnen ermöglicht die entsprechende Bibliothek zu installieren:

sudo apt-get install python3-pip

Als nächstes muss die virtuelle Umgebung eingerichtet werden. Geben Sie dazu die folgenden Befehle ein:

mkdir dein_projekt
cd dein_projekt
python -m venv --system-site-packages env
source env/bin/activate

Mit dem folgenden Befehlen laden Sie sich die Bibliothek herunter und installieren sie.

pip3 install adafruit-circuitpython-bmp280

Nun kann das folgende Python-Code Beispiel verwendet werden. Das Programm startet die Messung am Sensor und gibt die gemessenen Werte für den Luftdruck, die Temperatur und der Höhe über dem Meeresspiegel aus.

# Benoetigte Module werden importiert und eingerichtet
import time
import board
import adafruit_bmp280

# Sensorobjekt erstellen, das ueber den Standard-I2C-Bus des RPi kommuniziert
i2c = board.I2C()   # benutzt board.SCL und board.SDA
bmp280 = adafruit_bmp280.Adafruit_BMP280_I2C(i2c)

# Aendern Sie diesen Wert so, dass er dem Luftdruck (hPa) auf Meereshoehe an ihrem Standort entspricht.
bmp280.sea_level_pressure = 1013.25

while True:
    print("\nTemperature: %0.1f C" % bmp280.temperature)
    print("Pressure: %0.1f hPa" % bmp280.pressure)
    print("Altitude = %0.2f meters" % bmp280.altitude)
    time.sleep(2)

KY-052

Der BMP280 ist ein vielseitiger Sensor, der sowohl den Luftdruck als auch die Temperatur misst und die Ergebnisse über den I2C-Bus ausgibt. Mit diesem Sensor können Sie präzise Luftdruck- und Temperaturwerte erfassen, was ihn ideal für Anwendungen wie Wetterstationen, Höhenmesser und mobile Geräte macht.

Er deckt einen breiten Druckbereich ab, der Höhenlagen von +9000 bis -500 Meter über bzw. unter dem Meeresspiegel entspricht. Die gemessenen Daten sind sehr genau, was bedeutet, dass Sie zuverlässige Informationen zur Umgebungsbedingungen erhalten. Der Sensor kann in einem breiten Temperaturbereich arbeiten, von -40 bis +85°C, was ihn für viele Umgebungen geeignet macht.

Dank der digitalen Schnittstellen (I²C und SPI) kann der BMP280 leicht in verschiedene Mikrocontroller- und Computersysteme integriert werden. Dies erleichtert die Entwicklung von Projekten, die genaue Umweltmessungen erfordern. Der geringe Stromverbrauch des Sensors macht ihn zudem ideal für den Einsatz in batteriebetriebenen Geräten.

Insgesamt bietet der BMP280 eine einfache und effektive Lösung für die präzise Überwachung von Luftdruck und Temperatur, was ihn zu einer wertvollen Komponente für eine Vielzahl von Anwendungen macht.

Technische Daten
Messbereich (Druck) 300 bis 1100 hPa (äquivalent zu +9000 bis -500 m über/unter dem Meeresspiegel)
Relative Genauigkeit ±0,12 hPa, äquiv. zu ±1 m (950 bis 1050hPa bei 25°C)
Absolute Genauigkeit ±1 hPa (950 bis 1050 hPa, 0 bis +40 °C)
Temperaturkoeffizient Offset 1,5 Pa/K, entspricht 12,6 cm/K (25 bis 40°C bei 900 hPa)
Digitale Schnittstellen I²C (bis zu 3,4 MHz), SPI (3- und 4-Draht, bis zu 10 MHz)
Stromverbrauch 2,7 µA bei 1 Hz Abtastrate
Messbereich (Temperatur) -40 bis +85 °C

Anschlussbelegung

Dieser Sensor erlaubt es, sowohl an 5 V Systemen, sowie an 3,3 V Systemen angeschlossen und betrieben zu werden.

Micro:Bit Sensor
Pin 20 SDA
Pin 19 SCL
3 V CSB
3 V SDO
3 V +V
GND GND

Code-Beispiel

Für das folgende Codebeispiel wird eine zusätzliche Library benötigt:

BMP280 von makecode-extensions | veröffentlicht unter der MIT License

Fügen Sie die Library zu Ihrer IDE hinzu, indem Sie auf "Erweiterungen" klicken und die folgende URL in das Suchfeld eingeben: https://github.com/makecode-extensions/BMP280.git Bestätigen Sie die Suche mit [Enter].

	
		let pressure = 0
		let temperature = 0
		
		basic.forever(function () {
		    pressure = BMP280.pressure()
		    temperature = BMP280.temperature()
		    serial.writeNumber(pressure)
		    serial.writeString("Pa, ")
		    serial.writeNumber(temperature)
		    serial.writeLine("")
		    basic.pause(1000)
		})
	

Beispielprogramm Download

microbit-KY-052.zip

KY-052

Der BMP280 ist ein vielseitiger Sensor, der sowohl den Luftdruck als auch die Temperatur misst und die Ergebnisse über den I2C-Bus ausgibt. Mit diesem Sensor können Sie präzise Luftdruck- und Temperaturwerte erfassen, was ihn ideal für Anwendungen wie Wetterstationen, Höhenmesser und mobile Geräte macht.

Er deckt einen breiten Druckbereich ab, der Höhenlagen von +9000 bis -500 Meter über bzw. unter dem Meeresspiegel entspricht. Die gemessenen Daten sind sehr genau, was bedeutet, dass Sie zuverlässige Informationen zur Umgebungsbedingungen erhalten. Der Sensor kann in einem breiten Temperaturbereich arbeiten, von -40 bis +85°C, was ihn für viele Umgebungen geeignet macht.

Dank der digitalen Schnittstellen (I²C und SPI) kann der BMP280 leicht in verschiedene Mikrocontroller- und Computersysteme integriert werden. Dies erleichtert die Entwicklung von Projekten, die genaue Umweltmessungen erfordern. Der geringe Stromverbrauch des Sensors macht ihn zudem ideal für den Einsatz in batteriebetriebenen Geräten.

Insgesamt bietet der BMP280 eine einfache und effektive Lösung für die präzise Überwachung von Luftdruck und Temperatur, was ihn zu einer wertvollen Komponente für eine Vielzahl von Anwendungen macht.

Technische Daten
Messbereich (Druck) 300 bis 1100 hPa (äquivalent zu +9000 bis -500 m über/unter dem Meeresspiegel)
Relative Genauigkeit ±0,12 hPa, äquiv. zu ±1 m (950 bis 1050hPa bei 25°C)
Absolute Genauigkeit ±1 hPa (950 bis 1050 hPa, 0 bis +40 °C)
Temperaturkoeffizient Offset 1,5 Pa/K, entspricht 12,6 cm/K (25 bis 40°C bei 900 hPa)
Digitale Schnittstellen I²C (bis zu 3,4 MHz), SPI (3- und 4-Draht, bis zu 10 MHz)
Stromverbrauch 2,7 µA bei 1 Hz Abtastrate
Messbereich (Temperatur) -40 bis +85 °C

Anschlussbelegung

Dieser Sensor erlaubt es, sowohl an 5 V Systemen, sowie an 3,3 V Systemen angeschlossen und betrieben zu werden.

Raspberry Pi Pico Sensor
3.3V SDO
3.3V CSB
GPIO0 SDA
GPIO1 SCL
3.3V +V
GND GND

Dieser Sensor gibt sein Messergebnis nicht als Signal auf seinem Ausgangspin aus, sondern kommuniziert diesen per I2C-Bus. Über diesen lässt sich der Sensor ansteuern und die jeweiligen Messungen zum Druck und der Temperatur starten und auswerten.

Code-Beispiel

Um das folgende Codebeispiel auf Ihren Pico zu laden, empfehlen wir die Verwendung von der Thonny IDE. Sie müssen nur zunächst unter Run > Configure interpreter … > Interpreter > Which kind of interpreter should Thonny use for running your code? > MicroPython (Raspberry Pi Pico) auswählen.

Es wird für das Codebeispiel die folgende Bibliothek verwendet:

pico-bmp280 von flrrth | veröffentlicht unter der GPL-Lizenz

Um diese Bibliothek zu verwenden, müssen Sie sich aus der obigen Bibliothek den Ordner bmp280 herunterladen und auf den Pico in einem Ordner namens lib (Sie müssen diesen ggf. erstellen) laden. Danach können Sie den untenstehenden Code nun in Ihre IDE kopieren und klicken Sie auf Run.

# Bibliotheken laden
from machine import Pin, I2C
from utime import sleep
from bmp280 import BMP280I2C

# Initialisierung der I2C Schnittstelle
i2c0_sda = Pin(0)
i2c0_scl = Pin(1)
i2c0 = I2C(0, sda = i2c0_sda, scl = i2c0_scl, freq = 400000)

# Initialisierung des Sensor Objekts
bmp280_i2c = BMP280I2C(0x77, i2c0)

# Endlosschleife zum Auslesen des Sensors mit Serieller Ausgabe
while True:
    readout = bmp280_i2c.measurements
    print(f"Temperatur: {round(readout['t'], 2)} °C \t Luftdruck: {round(readout['p'], 2)} hPa")
    sleep(1)