Der barometrische Sensor GY-BME280 ist ideal für deine Mikrocontroller-Projekte um unkompliziert Temperatur, Luftfeuchtigkeit und Luftdruck zu messen.
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
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.
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.
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); }