Kostenloser Versand für Bestellungen über 60 €

BlueDot BME280 Weather Station

Die BlueDot BME280 Wetterstation ist eine hervorragende Möglichkeit, Temperatur, Luftfeuchtigkeit, Druck und Höhe zu messen. Der für mobile Anwendungen entwickelte BME280 Sensor von Bosch Sensortec vereint hohe Präzision und geringen Stromverbrauch in einem kleinen Gehäuse. Beginnen wir nun mit dem BlueDot BME280 und machen wir unsere ersten Schritte mit diesem Sensor.

Beschreibung

Hier sind fünf Funktionen, die die Verwendung der BlueDot BME280 Wetterstation sehr einfach machen:

  • Temperatur-, Feuchtigkeits-, Druck- und Höhenmessungen. Sie können Temperatur, relative Luftfeuchtigkeit und Luftdruck mit hoher Präzision messen. Außerdem ermöglichen Ihnen die Druckmessungen, Ihre Höhe mit einer Genauigkeit von ± 1,0 Metern zu berechnen.
  • 3,3 V und 5 V Spannungsversorgung. Der integrierte Spannungsregler akzeptiert Spannungen zwischen 2,6 V und 5,5 V zur Versorgung des BME280 Sensors.
  • SPI- und I²C-Kommunikation. Abhängig von Ihrem Projekt können Sie zwischen den Protokollen SPI und I²C wählen, um mit dem Sensor zu kommunizieren.
  • Datenübertragung mit 5 V und 3,3 V Geräten. Während Geräte wie der Arduino Uno ein 5 V Signal als logisches HIGH interpretieren, verwendet der BME280 3,3 V als logisches HIGH. Der integrierte Logikpegelwandler wandelt die 5 V Signale in 3,3 V Signale um.
  • BlueDot BME280-Bibliothek für Arduino. Das Beste zum Schluss! Mit der BlueDot BME280-Bibliothek können Sie sofort mit der Messung beginnen. Laden Sie die Bibliothek einfach von der Arduino IDE, Github oder unserer Website herunter.

Diese Kurzanleitung zum BlueDot BME280 zeigt Ihnen, wie Sie die ersten Schritte mit diesem Umgebungssensor unternehmen.

Montage

Der erste Schritt bei der Wetterstation BME280 besteht darin, den 6-Pin-Header zu löten, der mit der Platine geliefert wird. Der einfachste Weg, die Platine zu löten, besteht darin, den Header in ein Steckbrett einzuführen (lange Stifte nach unten) und die kurzen Stifte an die Platine anzulöten.

Verbindung über I²C

Der Anschluss des BME280 an den I²C-Bus ist sehr einfach. Der erste Schritt besteht darin, die Platine an die Stromversorgung anzuschließen.

  • VCC-Pin. Verbinden Sie den VCC-Pin der Platine mit dem 5 V oder 3,3 V Ausgang Ihres Arduino.
  • GND-Pin. Verbinden Sie den GND-Pin der Platine mit dem GND-Pin des Arduino.

Super! Jetzt müssen wir den Sensor an den I²C-Bus anschließen. Die I²C-Kommunikation erfolgt über zwei Drähte. Das Taktsignal wird vom Arduino erzeugt und über die SCL-Leitung an den Sensor übertragen. Der Arduino kann über die SDA-Leitung Befehle an den Sensor senden. Und umgekehrt, alle Daten vom Sensor werden über die SDA-Leitung an den Arduino zurückgesendet. Aus diesem Grund ist die SDA-Leitung bidirektional.

  • SDI-Pin. Verbinden Sie den SDI-Pin der Platine mit der SDA-Leitung des Arduino. Dies entspricht dem Pin A4 am Arduino Uno.
  • SCK-Pin. Verbinden Sie den SCK-Pin der Platine mit der SCL-Leitung Ihres Arduino. Dies entspricht dem Pin A5 am Arduino Uno.
  • SDO-Pin. Hier haben wir zwei Möglichkeiten. Lassen Sie den SDO-Pin unverbunden, um die Standard I²C-Adresse (0x77) zu verwenden. Stattdessen können wir den SDO-Pin mit GND verbinden, um die alternative I²C-Adresse (0x76) zu verwenden.
  • CS-Pin. Lassen Sie es unverbunden.

Verbindung über Hardware-SPI

Wir können auch über das SPI-Protokoll mit dem BME280 Sensor kommunizieren. Wie zuvor besteht der erste Schritt darin, die Platine an eine Stromversorgung anzuschließen.

  • VCC-Pin. Verbinden Sie den VCC-Pin der Platine mit dem 5 V oder 3,3 V Ausgang Ihres Arduino.
  • GND-Pin. Verbinden Sie den GND-Pin der Platine mit dem GND-Pin des Arduino.

Im Gegensatz zum I²C-Protokoll verwendet die SPI-Kommunikation vier verschiedene Leitungen. Alle Daten vom Sensor werden über die SDO-Leitung (Serial Data Output) zurück zum Arduino übertragen, während alle Befehle vom Arduino über die SDI-Leitung (Serial Data Input) übertragen werden. Das Taktsignal wird vom Arduino erzeugt und über die SCK-Leitung (Serial Clock) gesendet. Schließlich wird die CS- oder Chip-Select-Leitung verwendet, um dem Sensor mitzuteilen, wann die Kommunikation beginnt oder endet.

  • SDI-Pin. Verbinden Sie den SDI-Pin der Platine mit dem MOSI-Pin des Arduino. Der MOSI-Pin (Master Out Slave In) befindet sich auf dem ICSP-Header.
  • SCK-Pin. Verbinden Sie den SCK-Pin der Platine mit dem SCK-Pin Ihres Arduino. Sie finden den SCK-Pin auch auf dem ICSP-Header.
  • SDO-Pin. Verbinden Sie den SDO-Pin der Platine mit dem MISO-Pin des Arduino. Der MISO-Pin (Master In Slave Out) befindet sich ebenfalls auf dem ICSP-Header.
  • CS-Pin. Verbinden Sie den CS-Pin der Platine mit dem digitalen Pin 10 des Arduino. Wenn Sie möchten, können Sie jeden anderen digitalen Pin verwenden. Denken Sie jedoch daran, auch das Programm zu ändern.

Sie sind sich nicht sicher, wo sich der ICSP-Header befindet? Beim Arduino Uno ist es der Header auf der anderen Seite der Platine, in der Nähe des Mikrocontrollers.

ICSP-Header auf Arduino UNO

Verbindung über Software-SPI

Wir können die SPI-Kommunikation auch ohne den ICSP-Header nutzen und stattdessen normale digitale Pins verwenden. In diesem Fall wird die Kommunikation Software-SPI genannt.

  • VCC-Pin. Verbinden Sie den VCC-Pin der Platine mit dem 5 V oder 3,3 V Ausgang Ihres Arduino.
  • GND-Pin. Verbinden Sie den GND-Pin der Platine mit dem GND-Pin des Arduino.
  • SDI-Pin. Verbinden Sie den SDI-Pin der Platine mit dem digitalen Pin 13 des Arduino.
  • SCK-Pin. Verbinden Sie den SCK-Pin der Platine mit dem digitalen Pin 12 des Arduino.
  • SDO-Pin. Verbinden Sie den SDO-Pin der Platine mit dem digitalen Pin 11 des Arduino.
  • CS-Pin. Verbinden Sie den CS-Pin der Platine mit dem digitalen Pin 10 des Arduino.
Software-SPI-Anschlussdiagramm für das BlueDot BME280-Board

Installieren der Arduino-Bibliothek

Der einfachste Weg, Ihren BME280 Sensor zu verwenden, besteht darin, die BlueDot BME280-Bibliothek für Arduino herunterzuladen und zu installieren. Öffnen Sie einfach die Arduino IDE und gehen Sie zu Sketch > Include Library > Manage Libraries… Suchen Sie im Bibliotheksmanager nach der BlueDot BME280-Bibliothek. Alternativ können Sie die neueste Version der Bibliothek aus dem GitHub-Repository oder von der offiziellen Arduino-Website herunterladen.

Beispielskizze hochladen

Nach der Installation der Bibliothek können wir eine Beispielskizze öffnen. Gehen Sie einfach zu File > Examples > BlueDot BME280 Library und öffnen Sie die Skizze BME280_Weatherstation.

Wie haben Sie Ihren BME280 Sensor mit dem Arduino verbunden? Verwenden Sie I²C, Hardware-SPI oder Software-SPI? Der allererste Schritt besteht darin, diese Informationen in den Code einzufügen. Ändern Sie einfach die Variable bme280.parameter.communication auf 0 (I²C), 1 (Software-SPI) oder 2 (Hardware-SPI).

  //Choose between the SPI and I2C Communication protocols
  //Or leave the I2C Communication as default

  //0:        Set to 0 for I2C (default value)
  //1:        Set to 1 for Software SPI
  //2:        Set to 2 for Hardware SPI

bme280.parameter.communication = 0; //Choose communication protocol

Verbinden Sie den BME280 über die I²C-Kommunikation? Dann müssen wir in das Programm schreiben, welche I²C-Adresse wir verwenden müssen. Wenn Sie den SDO-Pin nicht angeschlossen haben, verwenden Sie die Standard I²C-Adresse (0x77). Wenn der SDO-Pin mit GND verbunden ist, verwenden Sie die alternative I²C-Adresse (0x76). Ändern Sie in jedem Fall einfach die Variable bme280.parameter.I2CAddress in 0x76 oder 0x77.

  //Set the I2C address of your breakout board  
  //Or ignore this, if you're using SPI Communication

  //0x76:       Alternative I2C Address (SDO pin connected to GND)
  //0x77:       Default I2C Address (SDO pin unconnected)
  
    bme280.parameter.I2CAddress = 0x77;                  //Choose I2C Address

Wenn Sie stattdessen die SPI-Kommunikation verwenden, müssen wir den Chip Select Pin (CS) definieren. Standardmäßig ist der digitale Pin 10 als CS-Pin programmiert. Wenn Sie den digitalen Pin 10 für etwas anderes verwenden möchten, können Sie die Variable bme280.parameter.SPI_cs in etwas anderes ändern.

Verwenden Sie Software-SPI oder Hardware-SPI? Wenn der BME280 Sensor an den ICSP-Header angeschlossen ist, verwenden Sie Hardware-SPI und der Chip Select Pin ist der einzige, der programmiert werden muss. Lassen Sie die anderen Zeilen der Sendung einfach kommentiert.

  //Set the pins for SPI Communication
  //Or ignore this, if you're using I2C Communication instead

     bme280.parameter.SPI_cs = 10;                         //Then you need to define the Chip Select Pin.
    
   //bme280.parameter.SPI_mosi = 13;                       //For Hardware SPI you can leave this line commented.
   //bme280.parameter.SPI_miso = 11;                       //Just comment this out for Hardware SPI.
   //bme280.parameter.SPI_sck = 12;                        //Same as before. For Hardware SPI, just comment this out.

Wenn Sie jedoch den BME280 Sensor an vier digitale Pins anschließen, verwenden Sie Software-SPI und wir müssen alle vier Pins programmieren. Entfernen Sie in diesem Fall die Kommentare zu den drei verbleibenden Zeilen und wählen Sie Pins für die Zeilen MOSI, MISO und SCK.

  //Set the pins for SPI Communication
  //Or ignore this, if you're using I2C Communication instead

    bme280.parameter.SPI_cs = 10;                         //Then you need to define the Chip Select Pin.
    
    bme280.parameter.SPI_mosi = 13;                       //For Hardware SPI you can leave this line commented.
    bme280.parameter.SPI_miso = 11;                       //Just comment this out for Hardware SPI.
    bme280.parameter.SPI_sck = 12;                        //Same as before. For Hardware SPI, just comment this out.

Dies ist die Ausgabe des seriellen Monitors.

Serial Monitor Output with BME280

Präzise Höhenmessungen

Da es einen Luftdrucksensor enthält und der Luftdruck mit der Höhe variiert (das wissen Sie vermutlich bereits), können Sie den BME280 als Höhenmesser verwenden. Die BlueDot BME280-Bibliothek enthält bereits Funktionen zur Berechnung Ihrer Höhe in Metern und Fuß.

    bme280.readAltitudeMeter();
    bme280.readAltitudeFeet();  

Wenn Sie die Beispielskizze ausführen und einen Blick auf die Höhenwerte werfen, fragen Sie sich vielleicht, warum die Höhenwerte täglich variieren. Heute haben Sie eine Höhe von 550 Metern gemessen, gestern betrug Ihre gemessene Höhe 620 Meter, obwohl sich Ihr Sensor überhaupt nicht bewegt hat. Was ist los?

Internationale barometrische Formel

Nun, die BlueDot BME280-Bibliothek verwendet die internationale barometrische Formel, um die Höhe des Sensors zu berechnen. Diese Gleichung beschreibt die Beziehung zwischen dem Atmosphärendruck und der Höhe über dem Meeresspiegel.

Internationale barometrische Formel

Die Formel geht von einem durchschnittlichen Luftdruck auf Meereshöhe von 1013,23 hPa und einer Durchschnittstemperatur von 15°C bzw. 288,15 Kelvin aus. Aus diesem Grund erhalten Sie mit diesen Standardwerten nur grobe Höhenschätzungen. Was können Sie also tun?

Ändern Sie einfach diese beiden Standardwerte in Ihrer Beispielskizze. Unter der  setup() Funktion finden Sie diesen Abschnitt, in dem Sie den Druck auf Meereshöhe und Ihre lokale Außentemperatur ändern können. 

  //For precise altitude measurements please put in the current pressure corrected for the sea level
  //On doubt, just leave the standard pressure as default (1013.25 hPa)
  
    bme280.parameter.pressureSeaLevel = 1002.25;           //default value of 1013.25 hPa

  //Now write here the current average temperature outside (yes, the outside temperature!)
  //You can either use the value in Celsius or in Fahrenheit, but only one of them (comment out the other value)
  //In order to calculate the altitude, this temperature is converted by the library into Kelvin
  //For slightly less precise altitude measurements, just leave the standard temperature as default (15°C)
  //Remember, leave one of the values here commented, and change the other one!
  //If both values are left commented, the default temperature of 15°C will be used
  //But if both values are left uncommented, then the value in Celsius will be used    
  
    bme280.parameter.tempOutsideCelsius = 5;              //default value of 15°C
  //bme280.parameter.tempOutsideFahrenheit = 59;           //default value of 59°F

Mittlerer Druck auf Meereshöhe

Es kann etwas schwierig sein, den mittleren Druck auf Meereshöhe für Ihren Standort zu ermitteln. Sie können ihn als den atmosphärischen Druck an Ihrem Standort betrachten, als ob Sie sich auf Meereshöhe befänden. Zum Beispiel beträgt der atmosphärische Druck zum Zeitpunkt dieses Schreibens in München (Deutschland) etwa 940 hPa, und das ist der Wert, den ich vom BME280 Sensor erhalte. Allerdings beträgt der mittlere Luftdruck auf Meereshöhe für München derzeit 1001 hPa. Das wäre der Luftdruck hier in München, wenn es auf Meereshöhe läge und nicht wie üblich 530 Meter darüber.

Die Website Weather.us ist eine großartige Möglichkeit, den mittleren Luftdruck auf Meereshöhe für Ihren Standort zu ermitteln, da sie Daten für Länder auf der ganzen Welt enthält. Klicken Sie auf diesen Link, um zu ihrer Website zu gelangen und wählen Sie Ihre Stadt mit den Dropdown-Menüs auf der linken Seite des Bildschirms aus.

Lesen Sie den atmosphärischen Druck auf Meereshöhe auf der Website Weather.us ab

Der zweite Parameter, den Sie in die Beispielskizze eintragen müssen, ist die Außentemperatur an Ihrem Standort. Das geht ganz einfach, da es sich dabei lediglich um die Messung der Lufttemperatur in Ihrer Region handelt. Mit anderen Worten: Wie hoch ist die Temperatur derzeit in Ihrer Stadt?

Selbstverständlich können Sie die Temperatur auch mit Ihrem BME280 Sensor messen. Denken Sie daran, den Sensor vor direkter Sonneneinstrahlung zu schützen, da die Platine die zusätzliche Wärme speichern und Ihre Messung verfälschen würde.

Eine letzte Anmerkung zur barometrischen Formel: Sie funktioniert gut für die Troposphäre (bis zu einer Höhe von 11 km), wo die Lufttemperatur pro Meter um etwa 0,0065 Kelvin sinkt. Aber darüber hinaus erreicht man die Tropopause und die Stratosphäre, wo sich die Lufttemperatur mit zunehmender Höhe unterschiedlich ändert und diese Formel nicht mehr gilt.

3D-Modell

Ein 3D-Modell des BlueDot BME280 Boards ist als STEP-Datei verfügbar (zum Herunterladen hier klicken). Eine STEP-Datei ist ein CAD-Dateiformat, das häufig für den Austausch von CAD-Dateien zwischen Unternehmen verwendet wird und von den meisten (wenn nicht allen) CAD-Softwareanwendungen problemlos gelesen werden kann.

Sie können 3D-Modelle auch online betrachten, ohne Software auf Ihrem Computer installieren zu müssen. Die folgenden Bilder wurden mit Autodesk Viewer aufgenommen, einem kostenlosen Online-Tool von Autodesk. Es ist zwar eine Registrierung bei Autodesk erforderlich, aber es lohnt sich!

Schaltplan

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert