BME680 (Luftfeuchtigkeits-, Druck-, Temperatur- & Luftgütesensor)

By | Februar 7, 2022

Der BME680 Sensor misst Luftfeuchtigkeit, Luftdruck, Temperatur und die Luftgüte (IAQ). Der BME280 🛒 ist die kleine Schwester vom BME680 🛒 und misst keine Luftgüte. Die Kosten des BME680 betragen ca. 20 Euro. Der BME280 kostet dagegen nur ca. 7 Euro.

Der BME680 und der BME280 benötigt das I2C-Bus des Raspberry Pis. Das I2C-Bus befindet sich am Raspberry Pi auf Pin 3 und 5. An den I2C-Bus können mehrere Sensoren angeschlossen werden. Jede Sensorart hat eine eigene Adresse. Der BME680 hat je nach Hersteller die Adresse 0x76 oder 0x77. Da jede Adresse nur einmal vorkommen kann, können nur Sensoren verschiedener Art bzw. mit unterschiedlichen Adressen angeschlossen werden. Der BME280 hat ebenfalls die Adresse 0x76 oder 0x77.

Luftgüte (IAQ) des BME680

Der Luftgüte Index berechnet sich aus einem gemessenen Gaswert und der Luftfeuchtigkeit. Weitere Informationen über Index Air Quality (IAQ) und wie die Luftgüte berechnet wird kann hier nachgelesen werden: BST-BME680-DS001-00

Für den Außenbereich ist die Luftgüte kein aussagekräftiger Messwert, daher tut es auch ein BME280 Sensor. Der BME280 ist ein relativ zuverlässiger und genauer Sensor.

BME280 wird häufig mit dem BMP280 verwechselt

Leider vertauschen Onlinehändler häufig den BME280 mit dem BMP280, weil sie ähnlich aussehen, aber nicht gleich sind. Das führt dann natürlich zu Fehlern. Deshalb achte darauf, dass der Onlinehändler, bei dem du deinen BME280 bestellt, dir auch den richtigen Sensor zugesandt hat.

Datenblatt des BME680

Luftfeuchtigkeitssensor
Response time (τ63%) 8s
Accuracy tolerance ± 3 % relative humidity
Hysteresis ≤ 1,5 % relative humidity

Drucksensor
Pressure range 300 … 1100 hPa (equiv. to +9000…-500 m above/below sea level)
Relative accuracy ±0.12 hPa, equiv. to ±1 m (950 … 1050hPa @25°C)
Absolute accuracy typ. ±1 hPa (950 …1050 hPa, 0 …+40 °C)

Temperatursensor
Operating range Operational -40°C – +85°C
Full accuracy 0°C – +65°C

Luftgütesensor
Response time (τ33-63%) 1s
Indoor air quality (IAQ) index output

Quelle des Datenblatts: https://www.watterott.com/de/BME680-Breakout
Print Friendly, PDF & Email

27 thoughts on “BME680 (Luftfeuchtigkeits-, Druck-, Temperatur- & Luftgütesensor)

  1. Andreas

    Im Protokoll habe ich für meinen BME280 nachstehende Fehlermeldung obwohl die Messwerte angezeigt werden:
    ERROR | HoneyPi.read_bme280 | Unhandled Exception in measure_bme280
    Traceback (most recent call last):
    File „/home/pi/HoneyPi/rpi-scripts/read_bme280.py“, line 43, in measure_bme280
    if isinstance(temperature, (int, float)) and isinstance(humidity, (int, float)) and isinstance(absoluteHumidity, (int, float)) and isinstance(air_pressure, (int, float)):
    UnboundLocalError: local variable ‚absoluteHumidity‘ referenced before assignment

    Raspi Zero W, firmware 1.4.1

    Reply
      1. Andreas

        Hallo Javan,

        hier das Protokoll direkt nach einem Neustart, also nicht aus dem Wartungsmodus heraus. Der Wägesensor ist gerade nicht angeschlossen:

        2024-02-06 17:58:31,877 | INFO | HoneyPi | HoneyPi v1.4.1 Started on Raspberry Pi Zero W Rev 1.1 as User root
        2024-02-06 17:59:04,324 | WARNING | HoneyPi | Thread to syncronize time with NTP Server is still not finished!
        2024-02-06 17:59:05,009 | INFO | HoneyPi.main | Time syncronized to NTP – difference was: 18.12s
        2024-02-06 17:59:08,536 | ERROR | HoneyPi.read_hx711 | HX711 DT: 12 SCK: 13 Channel: A initializing failed, Please check cabling and configuration! Returning empty HX711.
        2024-02-06 17:59:44,593 | INFO | HoneyPi.read_and_upload_all | First time doing a measurement. Time is now: 2024-02-06 17:59
        2024-02-06 17:59:44,874 | ERROR | HoneyPi.read_bme280 | Unhandled Exception in measure_bme280
        Traceback (most recent call last):
        File „/home/pi/HoneyPi/rpi-scripts/read_bme280.py“, line 43, in measure_bme280
        if isinstance(temperature, (int, float)) and isinstance(humidity, (int, float)) and isinstance(absoluteHumidity, (int, float)) and isinstance(air_pressure, (int, float)):
        UnboundLocalError: local variable ‚absoluteHumidity‘ referenced before assignment

        Reply
        1. Javan Post author

          Dann nehm den Sensor aus der Liste der konfigurierten Sensoren, solange er nicht angeschlossen ist. Vielleicht ist das die Ursache für den Logeintrag.

          Reply
  2. Peter

    Hallo,
    ich habe einen Adafruit BM680. Wenn ich diesen im Wartungsmodus anschließe, fängt mein Raspi Zero zum blinken an und wechselt in den Normalbetrieb. Was mache ich falsch?

    Reply
    1. Javan Post author

      Starte nochmal den Wartungsmodus und schau ins Protokoll. Eventuell warst du zu lange im Wartungsmodus?

      Reply
  3. David

    Gibt es jemanden der die Firmwar auf den BMP280 umgeschrieben hat? Damit könnte man doch einen Wetterumschwung messen, wegen des geänderten Luftdrucks? In Kombi mit dem DHT22, habe ich doch eine günstigere Alternative als den BME680. Oder sehe ich das falsch?

    Reply
  4. Robert

    Hallo!
    Erstmal vielen Dank an alle die an diesem tollen Projekt mitarbeiten.
    Ich hoffe ich darf mein Problem mit den SHT31 Sensoren hier posten.
    Wenn ich einen Sensor hinzufüge werden die Werte ausgelesen, Adresse 0x44 oder 0x45
    Sobald ein zweiter SHT31 hinzugefügt wird, werden keine Werte, der SHT31 Sensoren, ausgelesen
    Ob der 2.Sensor angeschlossen ist oder nicht macht keinen unterschied.
    Die Softwareversion ist 1.3.6.
    Im Protokoll ist kein Eintrag der den SHT31 betrifft.
    Kann mir da jemand helfen? Könnte die Ursache eventuell an der Software liegen?
    Schöne Grüße
    Robert

    Reply
    1. Javan Post author

      Hi Robert,

      aktuell wird nur der SHT31 Sensor mit der Adresse 0x44 ausgelesen. Im Webinterface fehlt das Feld, um die I2C-Adresse auszuwählen. Das Auswahlfeld kommt in der nächsten Softwareversion.

      Viele Grüße
      Javan

      Reply
  5. Rene

    Hallo,
    sehe ich das auf dem Schaltplan richtig, das eine Brücke beim BME680 zwischen GND und SD0 gesetzt werden muss??? Im Moment habe ich da nichts.
    Ich bin seit Tagen dabei den BME680 zum laufen zu bringen, ohne Erfolg. Ich habe schon einen Raspberry PI3 sowie den Raspberry Zero ausprobiert und verzweifel gerade.
    Vielen lieben Dank für ein Antwort.
    René

    Reply
    1. Javan Post author

      Die Brücke ist nur notwendig, wenn du zwei BME680 anschließen möchtest. Die ISC2-Adresse (0x76) ist je nach Hersteller deines Sensors anders. Steht aber auch im Datenblatt deines Sensors. Im HoneyPi Wartungsmodus/Webinterface kannst du die Adresse auswählen.

      Reply
  6. Klaus Johann

    Hallo zusammen,
    sehe ich das richtig, dass sowohl der BME680 also auch AD/DA-Wandler für die Spannungsmessung der Batterie an GPIO2 (Pin 3) angeschlossen werden? Funktioniert das mit 2 „Geräten“ an einem GPIO oder muss ich für eines der beiden Geräte einen andern GPIO benutzen und wo würde ich das umkonfigurieren?

    Schon jetzt vielen Dank für Eure Unterstützung,
    Beste Grüße
    Kluas

    Reply
    1. Florian

      Hi, ja beide an SDA und SCL. Musst nix weiter umkonfigurieren.

      Grüße Florian

      Reply
  7. Thomas

    Hallo zusammen,
    ich beobachte leider einen fast regelmässigen Absturz meines BME680. Er liefert keine Werte mehr. Nach einem Reboot (sorry „stromlos“ schalten des Raspberry, reboot reicht nicht), läuft er weiter für ein paar Tage.
    Habt ihr diesen Effekt auch schon beobachtet?
    Ich bin etwas unsicher, glaube aber das der Effekt erst nach Installation eurer neuen Version auftrat. Das muss aber nicht zusammenhängen.
    Kann so etwas durch Kondenswasser geschehen? Eigentlich ist er gut belüftet, ich habe ihn aus dem Brutraum herausgenommen und lasse ihn die Außenwerte einlesen. Die Brutraumtemperatur übernimmt jetzt ein DS18B20.

    Ich bin etwas ratlos..

    Achja, ich würde mich, wie andere auch, sehr darüber freuen wenn jemand den kleinen günstigen Bruder BME280 als Sensor mit in die HoneyPi Software einbauen würde. Die Luftgüte ist für mich kein wichtiges Merkmal, zumal die Werte über den Tag derart unterschiedlich sind das ich keinen Nutzen daraus ziehen kann.
    Leider kann ich nicht programmieren 🙁 könnte aber einen falsch bestellten und bei mir liegenden BME280 als Spende zur Verfügung stellen…

    Weiter so HoneyPi Team!!!!! Ich bin immer noch schwer von euch begeistert!!

    Gruss, Thomas

    Reply
    1. Javan Post author

      Vielen Dank Thomas, wir suchen nun gemeinsam nach der Ursache. Wenn das bei jemanden noch auftritt gerne Email an mich.

      Reply
      1. Javan Post author

        Hallo Martin, ja Ausreißer treten derzeit vereinzelnd auf. Ich hoffe mit dem kommenden Firmwareupdate diese nun endgültig eliminiert zu haben. Version v0.1.1 kommt heute.

        Reply
        1. Javan Post author

          Vielen Dank! Wir haben die Pins vertauschen müssen, da das nun unterstütze WittyPi Modul die GPIO4 und GPIO 17 (BCM) für sich beansprucht.

          Reply
      2. Javan Post author

        Bin gespannt wie sich das mit der neuen Firmware nun verbessert.

        Reply
  8. Lilienstich

    Hallo Javan,
    Ist es vielleicht möglich, den BME280 einzubinden. Dieser Sensor ist deutlich billiger und hat die gleichen Funktionen wie der BME680 allerdings ohne die „Luftqualität“ zu messen, die m.E. ja nur in Innenräumen eine Rolle spielt .
    Übrigens funzt der neue Umschalter hervorragend! Gute Arbeit!!

    Reply
    1. Javan Post author

      Vielen Dank! ja, das wäre möglich. Die beiden Sensoren unterscheiden sich nur in der Chip-ID für den SMBus. Ich habe keinen BME280 zu Hause.

      Nachtrag: Inzwischen unterstützt die Firmwareversion auch den BME280 Sensor.

      Reply
  9. Andreas

    Hallo,

    habt ihr auch einen Tipp für ein passendes Gehäuse, in das der BME680 in der Beute verbaut werden kann?

    Viele Grüße

    Andreas

    Reply
  10. Sascha Hollmann

    Hallo, ich verwende den BlueDot BME680 und bekomme beim abrufen der Messwerte über das Webinterface immer folgende Fehlermeldung:
    BME680 is connected to SMBus
    Measurement: BME680 Not Found. Invalid CHIP ID: 0x60
    None
    SD0 ist mit GND verbunden, wenn das nicht der Fall ist bekomme ich eine andere Fehlermeldung. Ist das ein bekanntes Problem, oder habt ihr eine Idee wie ich den Sensor angesprochen bekomme?
    Ich verwende die Version v0.4 mit RPi3B

    Reply
    1. Javan Post author

      Wo hast du den Sensor bestellt? Am besten mit Produktlink.
      Das Problem hatten wir bislang noch nicht, die von uns verlinkten Sensoren von PIMORONI und Blue Dot wurden getestet.
      Diese haben die Chip-ID „0x61“.
      Hast du vielleicht statt dem BME680 den BME280 angeschlossen? Denn dieser hat die CHIP-ID 0x60

      Reply
      1. Sascha Hollmann

        Ich habe den BlueDot BME680 bei Ebay bestellt, ich habe leider nie auf das Board geschaut. Das habe ich dann mal nach deiner Antwort getan und musste feststellen das ich ein falsches Board geschikt bekommen habe(es handelt sich tatsächlich um ein BME280). Der Händler tauscht mir den Sensor um, dann sollte alles gut sein.

        Reply

Schreibe einen Kommentar zu Sascha Hollmann Antworten abbrechen

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