GY-BME280 Barometrischer Sensor für Temperatur, Luftfeuchtigkeit und Luftdruck

Der barometrische Sensor GY-BME280 ist ideal für deine Mikrocontroller-Projekte um unkompliziert Temperatur, Luftfeuchtigkeit und Luftdruck zu messen.

Meine Empfehlung

Der Sensor wurde bereits werksseitig kalibriert. Die Spezifikationen bzgl. Druck- und Temperaturmessung sind mit dem BMP280 identisch. Dank Festspannungsregler und Logiklevelkonverter „on Board“ arbeitet dieser Sensor hervorragend mit allen Mikrocontrollern zusammen.

Spezifikation und Messbereiche

Druck:

Temperatur:

Luftfeuchte:

300 – 1100 hPa

-40 – 85°C

0 – 100 %

Auflösung: bis 0,0018hPa

bis 0,01°C

bis 0,008 %

Absolute Genauigkeit: +/- 1,0hPa

+/- 0,5°C

+/- 3%

Stromverbrauch: 714 – 0,1µA
Interface: 3,2µA

Pinout GY-BME280

Der Sensor arbeitet mit 3.3 V. VIN und GND werden direkt am Arduino angeschlossen.

VIN <> 3.3V Arduino
GND <> GND Arduino

Die I2C Ausgänge des Sensors müssen an einen Pegelwandler wie bspw. dem TXS0108E angeschlossen werden um die Logiklevel an den Arduino anzupassen.

SCL <> A4 Pegelwandler
SDA <> A3 Pegelwandler

Quelle: AZ-Delivery

Anschlussbelegung GY-BME280 (Sensor) + TXS0108E (Pegelwandler) + Arduino

In diesem Schematic siehst du die komplette Anschlussbelegung aller drei Komponenten.

Das „blaue“ Modul ist der Pegelwandler. Er verfügt über acht Kanäle, links sind die 3.3V Kanäle A1-A8 und auf der rechten Seite die 5V Kanäle B1-B8.

VA wird an die 3.3V Versorgungsspannung angeschlossen während die Gegenseite VB an 5V des Arduino angeschlossen wird. Die Versorgungsspannungen liegen im Bereich VA: 1,2V bis 3,6V – VB: 1,65V bis 5,5V.

Quelle: AZ-Delivery

OE muss auf „high“ gesetzt, damit der Pegelwandler betriebsbereit ist. Dazu wird einfach ein 10kΩ Widerstand zwischen OE und VA (3.3V) des Pegelwandlers dazwischen geschaltet.

Die I2C Konfiguration sieht demnach so aus:

  • SCL ist mit A5 (Arduino) über das blaue Kabel verbunden.
  • SDA ist mit A4 (Arduino) über das grüne Kabel verbunden.
Meine Empfehlung

Programmierung

Ich gehe davon aus dass deine Arduino IDE eingerichtet ist und mit deinem Mikocontroller-Board kommunizieren kann.

Bibliotheken einrichten

Bevor wir loslegen können muss zunächst noch die Bibliothek Adafruit BMP280 installiert werden, dies geschieht über den Menüpunkt Tools > Manage Libraries….

Zusätzlich wird das Paket für die Adafruit Sensoren benötigt:
https://github.com/adafruit/Adafruit_Sensor

Die ZIP-Datei bitte über  Sketch > Include Library > Add.ZIP Libary… hinzufügen.

Beispiel laden und ausführen

Bitte lade über File > Examples > Adafruit BMP280 Library das Beispielprogramm bmp280test.

Da wir den BME280 Sensor verwenden, muss die I2C-Adresse in der Header-Datei Adafruit_BMP280.h abgeändert werden.

Die Header-Datei findest du an folgendem Ort:
C:\Users\{Username}\Documents\Arduino\libraries\Adafruit_BMP280_Library

Suche nun nach der Zeile

#define BMP280_ADDRESS (0x77)

und ändere den Wert auf 0x76. Lade den Code nun auf deinen Arduino hoch und starte den Serial Monitor über Tools > Serial Monitor. Wenn alles korrekt läuft, sollte nun eine Ausgabe der Sensorwerte erfolgen.

Beispiel-Quellcode

/***************************************************************************
  This is a library for the BMP280 humidity, temperature & pressure sensor
  Designed specifically to work with the Adafruit BMP280 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);
  }
 
  /* Default settings from datasheet. */
  bmp.setSampling(Adafruit_BMP280::MODE_NORMAL,     /* Operating Mode. */
                  Adafruit_BMP280::SAMPLING_X2,     /* Temp. oversampling */
                  Adafruit_BMP280::SAMPLING_X16,    /* Pressure oversampling */
                  Adafruit_BMP280::FILTER_X16,      /* Filtering. */
                  Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
}
 
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)); /* Adjusted to local forecast! */
    Serial.println(" m");
 
    Serial.println();
    delay(2000);
}

Kommentar hinterlassen