BME680 (Humidity, Pressure, Temperature & Air Quality Sensor)

By | February 7, 2022

The BME680 sensor measures humidity, air pressure, temperature and air quality (IAQ). The BME280 ? is the little sister of the BME680 ? and does not measure air quality. The cost of the BME680 is about 20 Euro. The BME280 costs about 7 Euro.

The BME680 requires the I2C bus of the Raspberry Pis. The I2C bus is located at the Raspberry Pi on pins 3 and 5. Several sensors can be connected to the I2C bus. Each sensor type has its own address. The BME680 has the address 0x76. Since each address can only occur once, only sensors of different types or with different addresses can be connected.

Air quality (IAQ)

The air quality index is calculated from a measured gas value and the air humidity. Further information about Index Air Quality (IAQ) and how the air quality is calculated can be found here: BST-BME680-DS001-00

Data sheet

Humidity sensor

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

Pressure sensor

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)

Temperature sensor

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

Air quality sensor

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

Source of the data sheet: https://www.watterott.com/de/BME680-Breakout

Translated 28.07.2019 by JK

27 thoughts on “BME680 (Humidity, Pressure, Temperature & Air Quality Sensor)

  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

Leave a Reply

Your email address will not be published. Required fields are marked *