Haus Garten Computer Technik
und analoge Fotografie

BME680 Sensor von Berrybase am Raspberry Pi

Damit ihr nicht auch solange suchen müßt, hier eine kurze Anleitung, wie ihr den BME680 am Raspberry Pi anschließt und in Betrieb nehmt.
22.02.2025

Das Problem

Der Sensor wird nicht erkannt mit i2cdetect.

Lösung

Ich hatte noch einen zweiten Sensor am Raspi hängen, den DHT11, am Pin 7. Wenn ich diesen Sensor mit python auslese, wird der i2c-Kanal irgendwie dauerhaft blockiert. Erst nach einem Stop dss DHT11-Prozesses und einem Reboot des Raspi wird der BME680 am i2c erkannt.

Anleitung

es geht um diesen Sensor

Bildschirmfoto vom 2025-02-22 13-48-26.png

Anschluß an den Raspberry Pi 3

Ich habe mich genau an die Anleitungen, die man im Netz findet, gehalten. Vcc geht an den Pin 1 (3,3V), SDA an den Pin 3 (i2C Data), SCL an den Pin 5 (i2C Clock) und GND (Masse) an irgendeinen Pin mit GND, zB Pin 9. Wobei ich hier die Pins vom Raspberry Pi meine. Zusätzlich hatte ich auch noch SDO auf GND gelegt, weil ich da den Fehler suchte. SDO ist für die Adresse zuständig, die der Sensor im i2C-Bus bekommt. Wird SDO auf GND gelegt, ist die Adresse 0x76, ansonsten 0x77.

Wie auch immer, ich habe mit

raspi-config

das i2C eingeschaltet unter dem Menüpunkt ". Es gab dann ein /dev/i2c-1 und alles sah gut aus. Nach der Installation von i2cdetect mit apt install i2c-tools wollte ich den Sensor testen mit

i2cdetect -y 1

Da gabs zunächst nur leere Felder, und die Abfrage dauerte auch ziemlich lange, so 10s. Wie schon oben geschrieben, störte ein zweiter Temperatursensor, der DHT11, den i2c-bus. Nach dem Stop des DHT11-Prozesses wurde dann der Sensor auf Kanal 76 erkannt:

0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 --

Jetzt gehts hier weiter mit python, um die Daten des Sensors auszulesen.

Auslesen der Sensorwerte

sudo pip3 install adafruit-circuitpython-bme680

Beispielprogramm

aber:

def read(self, count: Optional[int] = None, /) -> Optional[bytes]:
SyntaxError: invalid syntax

Problem erkannt: ich habe noch python-3.7 auf dem Raspi laufen. Die adafruit-circuit Bibliothek scheint aber python-3.8 vorauszusetzen. Da ich faul bin, habe ich eine älter Version der typing-Bibliothek installiert:

sudo pip3 install adafruit-circuitpython-typing==1.10.1

Jetzt können wir das Script nochmal starten und staunen:

Temperature: 15.5 C
Gas: 77598 ohm
Humidity: 39.5 %
Pressure: 967.431 hPa
Altitude = 388.65 meters

Calibrierung, Auswertung und Bewertung

Der Luftdruck weicht vom erwarteten Wert ab, Temperatur und Luftfeuchte sind ok.