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

KY-052

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

KY052-Arduino.zip

KY-052

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

KY052-RPi.zip

Zu starten mit dem Befehl

sudo python3 KY052-RPi.py

KY-052

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

microbit-KY-052.zip

KY-052

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)

Beispielprogramm Download

KY052-Pico.zip