BME680 Sensor von Berrybase am Raspberry Pi
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
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
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.