KY-052

Dieser Drucksensor misst den Luftdruck am Sensorausgang (kleines Loch am silbernen Sensorgehäuse) und gibt das Ergebnis kodiert auf den I2C-Bus aus.

Für dieses Modul wird eine entsprechende Bibliothek benötigt - siehe Codebeispiele unten.

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 900hPa)
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 5V System, sowie an 3,3V Systemen angeschlossen und betrieben zu werden. Hierbei ist zu beachten, dass nur einer der jeweiligen Spannungsversorgungspins angeschlossen wird; passend zum Spannungslevel des verwendeten Systems - weiteres entnehmen Sie den unteren Beispielen zum Anschluss des Arduino (5V) oder des Rasperry Pi's (3,3V)

Codebeispiel Arduino

Anschlussbelegung Arduino

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

Dieser Sensor gibt sein Messergebnis nicht als Signal auf einen 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 dieses Sensormoduls gibt es mehrere Möglichkeiten - als besonders zugänglich hat sich die Adafruit_BMP280 Library erwiesen, die die Firma Adafruit unter der OpenSource BSD-Lizenz veröffentlicht hat.

Das unten stehende Beispiel verwendet diese besagte Library - hierzu empfehlen wir diese von Github 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 dieses Codebeispiel und folgende Projekte zur Verfügung steht. Alternativ ist diese auch im unten stehenden Download Paket ebenfalls 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

Codebeispiel Raspberry Pi

Anschlussbelegung Raspberry Pi

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

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

Diese muss vorab erst installiert werden. Hierzu muss folgendermaßen vorgegangen werden:

Zuerst muss die Bibliothek von Adafruit installiert werden:

sudo pip3 install adafruit-circuitpython-bmp280

Damit der Raspberry Pi mit dem Sensor auf dem I2C-Bus kommunizieren kann, muss auch vorab die I2C-Funktion beim Raspberry Pi aktiviert werden. Hierzu müssen folgende Zeilen am Ende der Datei "/boot/config.txt" hinzugefügt werden:

dtparam=i2c_arm=on

Die Datei kann mit folgenden Befehl editiert werden:

sudo nano /boot/config.txt

Mit der Tastenfolge [Strg+X -> Y -> Enter] kann die Datei, nach dem hinzufügen der Zeile am unteren Ende, gespeichert und geschlossen werden.

Außerdem werden zusätzliche Bibliotheken benötigt, um I2C innerhalb Python nutzen zu können. Um diese zu installieren muss folgender Befehl in die Konsole eingegeben werden:

sudo apt-get install python-smbus i2c-tools -y

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, der Temperatur und der Höhe über dem Meeresspiegel aus.

# Benoetigte Module werden importiert und eingerichtet
import time
import board
# import digitalio für benutzung mit SPI
import adafruit_bmp280

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

# ODER Sensorobjekt erstellen, das über den Standard-SPI-Bus des RPi kommuniziert
# spi = board.SPI()
# bmp_cs = digitalio.DigitalInOut(board.D10)
# bmp280 = adafruit_bmp280.Adafruit_BMP280_SPI(spi, bmp_cs)

# Ändern Sie diesen Wert so, dass er dem Luftdruck (hPa) auf Meereshöhe 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

Codebeispiel Micro:Bit

Anschlussbelegung Micro:Bit:

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

Hierbei handelt es sich um ein MakeCode Beispiel für Micro:Bit welches essenziel das gleiche macht wie die Beispiele der anderen beiden Varianten. Jedoch ist dieses Beispiel eher näher an das Beispiel des Raspberry Pi angelehnt als an das Beispiel des Arduino.

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

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

Diese Librarie müssen Sie vor der benutzung des Codes erst zu ihrer IDE hinzufügen.

Dies tun Sie indem Sie in ihrer IDE auf Erweiterungen gehen und, mit der folgenden URL https://github.com/makecode-extensions/BMP280.git, nach der Librarie suchen um diese dann hinzuzufügen.

Beispielprogramm Download

microbit-KY-052.zip