KY-052 Drucksensor / Temperatursensor (BMP280)
Dieser Drucksensor misst den Luftdruck am Sensorausgang und gibt das Ergebnis kodiert auf den I2C-Bus aus.
- Arduino
- Raspberry Pi
- Raspberry Pi Pico
- Micro:Bit
Dieser Drucksensor misst den Luftdruck am Sensorausgang und gibt das Ergebnis kodiert auf dem I2C-Bus aus.
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 |
Pin Belegung
Dieser Sensor erlaubt es, sowohl an 5 V Systemen, sowie an 3,3 V Systemen angeschlossen und betrieben zu werden.
Codebeispiel Arduino
Anschlussbelegung Arduino
Arduino | Sensor |
---|---|
5 V | SDO |
5 V | CSB |
Pin A4 | SDA |
Pin A5 | SCL |
5 V | +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.
Zur Ansteuerung empfehlen wir die Verwendung der Adafruit_BMP280, die die Firma Adafruit unter der OpenSource BSD-Lizenz veröffentlicht hat.
Das unten stehende Beispiel basiert auf dieser Library. Hierzu empfehlen wir diese herunterzuladen, zu entpacken und im Arduino-Library-Ordner, welcher sich standardmäßig unter (C:\Benutzer\[Benutzername]\Dokumente\Arduino\libraries) befindet, zu kopieren, damit diese für das Codebeispiel und folgende Projekte zur Verfügung steht. Alternativ ist die Library auch im unten stehenden Download-Paket enthalten.
/***************************************************************************
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>
#define BMP_SCK 13
#define BMP_MISO 12
#define BMP_MOSI 11
#define BMP_CS 10
Adafruit_BMP280 bmp; // I2C
//Adafruit_BMP280 bmp(BMP_CS); // hardware SPI
//Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK);
void setup() {
Serial.begin(9600);
Serial.println(F("BMP280 test"));
if (!bmp.begin()) {
Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
while (1);
}
}
void loop() {
Serial.print(F("Temperature = "));
Serial.print(bmp.readTemperature());
Serial.println(" *C");
Serial.print(F("Pressure = "));
Serial.print(bmp.readPressure());
Serial.println(" Pa");
Serial.print(F("Approx altitude = "));
Serial.print(bmp.readAltitude(1013.25)); // this should be adjusted to your local forcase
Serial.println(" m");
Serial.println();
delay(2000);
}
Beispielprogramm Download
Dieser Drucksensor misst den Luftdruck am Sensorausgang und gibt das Ergebnis kodiert auf dem I2C-Bus aus.
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 |
Pin Belegung
Dieser Sensor erlaubt es, sowohl an 5 V Systemen, sowie an 3,3 V Systemen angeschlossen und betrieben zu werden.
Codebeispiel Raspberry Pi
Anschlussbelegung Raspberry Pi
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 |
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
Zusätzlich ist die Installation der I2C-Bibliotheken notwendig. Installieren Sie diese über den folgenden Befehl:
sudo apt-get install python3-smbus i2c-tools -y
Installieren Sie nun die Bibliothek mit Hilfe des folgenden Befehls:
sudo pip3 install adafruit-circuitpython-bmp280
Damit eine Kommunikation zwischen dem Sensor und dem Raspberry Pi möglich ist, muss zusätzlich die I2C-Schnittstelle des Raspberry Pis aktiviert werden. Öffnen Sie dazu die config.txt-Datei über den folgenden Befehl:
sudo nano /boot/config.txt
Fügen Sie die folgende Zeile an das Ende der Datei an:
dtparam=i2c_arm=on
Speichern Sie die Datei mit der Tastenkombination [STRG+O], bestätigen Sie mit [Enter] und verlassen Sie den Editor mit der Tastenkombination [STRG+X].
Hiernach 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)
Beispielprogramm Download
Zu starten mit dem Befehl
sudo python3 KY052-RPi.py
Dieser Drucksensor misst den Luftdruck am Sensorausgang und gibt das Ergebnis kodiert auf dem I2C-Bus aus.
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 |
Pin Belegung
Dieser Sensor erlaubt es, sowohl an 5 V Systemen, sowie an 3,3 V Systemen angeschlossen und betrieben zu werden.
Codebeispiel Micro:Bit
Anschlussbelegung Micro:Bit:
Micro:Bit | Sensor |
---|---|
Pin 20 | SDA |
Pin 19 | SCL |
3 V | CSB |
3 V | SDO |
3 V | +V |
GND | GND |
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].

Beispielprogramm Download
Dieser Drucksensor misst den Luftdruck am Sensorausgang und gibt das Ergebnis kodiert auf dem I2C-Bus aus.
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 |
Pin Belegung
Dieser Sensor erlaubt es, sowohl an 5 V Systemen, sowie an 3,3 V Systemen angeschlossen und betrieben zu werden.
Codebeispiel Raspberry Pi Pico
Anschlussbelegung Raspberry Pi Pico
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.
Für das folgende Codebeispiel wird eine zusätzliche Library benötigt:
pico-bmp280 von flrrth | veröffentlicht unter der GPL-Lizenz
# 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) # Adresse könnte abweichen
# Endlosschleife zum Auslesen des Sensors mit Serieller Ausgabe
while True:
readout = bmp280_i2c.measurements
print(f"Temperature: {readout['t']} °C, pressure: {readout['p']} hPa.")
sleep(1)