Projekte mit dem Raspberry Pi: Anschluss des Sensors BME680

Lesezeit 4 min.

Temperatur und Luftfeuchtigkeit sind die wichtigsten Faktoren, die die Wetterbedingungen beeinflussen, denen wir täglich ausgesetzt sind. Die Messung dieser Werte kann unseren Komfort erheblich verbessern, indem sie uns die Möglichkeit gibt, uns auf die Außenbedingungen vorzubereiten. Aus elektronischer Sicht werden aber auch Kontrollsysteme in der Lage sein, diese Vorteile zu nutzen – es muss nur ein geeigneter Sensor verwendet werden.

Heute werden wir einen BME680-Sensor zur Messung von Temperatur, Druck, Feuchtigkeit und Gas anschließen. Die Anleitung gilt für die Raspberry Pi Modelle 4, 3B+, 3B, 3A+, II, B, Zero W und Zero.

BME680-Sensor

Das Modul, das wir uns heute ansehen werden, ist das mit dem BME680, einem hochwertigen digitalen Temperatur-, Feuchte-, Gas- und Drucksensor. Für Systeme zur Messung der Wetterbedingungen oder zur Steuerung auf der Grundlage von Umweltdaten ist er perfekt geeignet. Er kann in zwei Modi arbeiten: Schlaf- und Zwangsmessungsmodus. Für den Anschluss muss jedoch gelötet werden, wofür es fünf Lötstellen gibt.

Die wichtigsten Parameter des Sensormoduls BME680:

  • Versorgungsspannung: 3,3 bis 5 V
  • Temperaturmessbereich: -40°C bis 85°C
  • Luftfeuchtigkeitsmessbereich: 0% bis 100% RH
  • Druckmessbereich: 300 bis 1100 hPa
  • Auflösung der Widerstandsmessung des Gassensors: 0,05 bis 0,11%.
  • Toleranz von bVOC: 10% bis 20%.
  • Zertifizierte bVOC-Genauigkeit: 2% bis 5%
  • Große Lötstellen: 2,54 mm

Konfigurieren des RaspberryPI für die Zusammenarbeit mit dem Modul

A. Aktivieren Sie Kanal eins des I2C-Busses am Raspberry PI
a. sudo raspi-config menu F5 => Einstellungen auswählen I2C activieren speichern, verlassen. sudo reboot now

b. Bearbeiten Sie die Datei /boot/config.txt und fügen Sie die folgenden Direktiven hinzu:
dtparam=i2c_arm=on
dtparam=i2c_arm_baudrate=10000
speichern und daan RPI neu starten

B. Prüfen Sie, ob I2C geladen ist: ls /dev/*i2c*. Dieser Befehl sollte etwa Folgendes anzeigen:/dev/i2c-1

C. Überprüfen Sie die I2C-Kommunikation des Sensors [CCS811 sollte angeschlossen sein, siehe Verkabelung im nächsten Abschnitt]. Führen Sie den Befehl aus i2cdetect -y 1. In der Ausgabe des Befehls sollte die s-Sense CCS811 I2C-Standardadresse 0x5A aufgeführt sein.

D. Installieren Sie die erforderlichen Python-Pakete
a. geben Sie den Befehl ein sudo apt-get install python-setuptools
b. geben Sie dann ein wget https://files.pythonhosted.org/packages/6a/06/80a6928e5cbfd40c77c08e06ae9975c2a50109586ce66435bd8166ce6bb3/smbus2-0.3.0.tar.gz *
c. Entpacken Sie das heruntergeladene Archiv. Eingabe tar.gz. tar -xf smbus2-0.3.0.tar.gz
d. chdir smbus2-0.3.0
e. sudo python setup.py install

* Das Paket python-smbus2 ist auch hier verfügbar: https://itbrainpower.net/downloadables/smbus2-0.3.0.tar.gz

Anschluss des Raspberrys an den BME680-Sensor

Alle Verkabelungsanweisungen sind Beispiele für Raspberry Pi 4, 3B+, 3B, 3A+, II, B, Zero und Zero W. Die in der Verkabelungsbeschreibung und der Software verwendete GPIO-Benennungskonvention lautet “GPIO-Pin-Nummer” – GPIO.setmode(GPIO.BOARD). Kurz gesagt, die Verkabelung sollte wie folgt vorgenommen werden:

BME680 Lötfelder Raspberry Pi: GPIO-Pin-Nummer Pin-Funktion auf dem Raspberry Pi
Vin GPIO 1 RPi 3.3V *
Vdd (3V3) nicht anschließen nicht anschließen
SDA GPIO 3 SDA
SCL GPIO 5 SCL
GND GPIO 9 GND

* Stromversorgung des Sensors ->, um den RPi 3V3 zu schonen, lesen Sie, wie man den I2C-Sensor über den 5V-Pin des Rasberry Pi versorgt, aber die I2C-Referenz bei 3,3V hat!

Versorgen Sie den Sensor nicht mit 5 V, bevor Sie nicht genau wissen, was Sie tun! Sie werden Ihr Raspberry Pi Board beschädigen!

Anschlussplan für BME680-Sensor mit Raspberry Pi

Python-Software für BME680-Sensor

a. Laden Sie die BME680 Raspberry Pi Python-Bibliothek herunter. Sie können dies HIER tun.

b. Entpacken Sie das tar.gz-Archiv. Geben Sie dann den neu erstellten Ordner ein.

c. Kopieren Sie den nachstehenden Code, fügen Sie ihn in eine neue Datei ein und speichern Sie die Datei unter dem Namen “bme680_simple.py” im Ordner “Python library”. Hier herunterladen (mit der rechten Maustaste anklicken und “Speichern unter” wählen): BME680 – Raspberry Pi. Messdaten des Sensors – Python

				
					"""
s-Sense BME680 by itbrainpower.net sensors breakout example - v1.0/20200218. 

Compatible with:
                s-Sense BME680 I2C sensor breakout [PN: SS-BME680#I2C, SKU: ITBP-6003], info https://itbrainpower.net/sensors/BME680-BVOC-TEMPERATURE-HUMIDITY-PRESSURE-I2C-sensor-breakout
		all Raspberry PI, using Python 2.7

Reading temperature, pressure, humidity and gas resistance values example (pulling at 2sec) - based on Zanshin_BME680 Arduino library
version 1.0.2 / 2019-01-26 - https://github.com/SV-Zanshin. Thank you Zanshin! Great job! 
 
We've ported Zanshin functions into python, patch them, add some variables, functions and functionalities.                


Mandatory wiring [bellow for RPi B/B+/II/3B/3B+/4/Zero/Zero W]:
        - sensor Vin            <------> RPI pin 1 [3V3 power] *
        - sensor I2C SDA        <------> RPI pin 3 [i2c-1 SDA]
        - sensor I2C SCL        <------> RPI pin 5 [i2c-1 SCL]
        - sensor GND            <------> RPI pin 9 [GND]

Wiring notes:
        *    to spare 3V3 power - read about RPI I2C sensors 5V powering

WIRING WARNING:
        Wrong wiring may damage your RaspberryPI or your sensor! Double check what you've done.


BME680 definitions are placed in bme680_param.py


Bellow, how to set-up i2c on RPi and install requiered python packages and other utilities.

Enable I2C channel 1
        a. sudo raspi-config
                menu F5		=> 	enable I2C
                save, exit and reboot.
        
        
        b. edit /boot/config.txt and add/enable following directives:
               dtparam=i2c_arm=on
               dtparam=i2c_arm_baudrate=10000

           save and reboot.

Check i2c is loaded:
        run: ls /dev/*i2c*
        should return: /dev/i2c-1

Add i2c-tools packages:
        sudo apt-get install -y i2c-tools

Check sensor I2C connection:
        run: i2cdetect -y 1
        you should see listed the s-Sense BME680 I2C address [0x76]

Install additional python packages:
        a. sudo apt-get install python-setuptools
        b. wget https://files.pythonhosted.org/packages/6a/06/80a6928e5cbfd40c77c08e06ae9975c2a50109586ce66435bd8166ce6bb3/smbus2-0.3.0.tar.gz
        c. expand archive
        d. chdir smbus2-0.3.0
        e. sudo python setup.py install


You are legaly entitled to use this SOFTWARE ONLY IN CONJUNCTION WITH s-Sense BME680 I2C sensors DEVICES USAGE. Modifications, derivates and
redistribution of this software must include unmodified this COPYRIGHT NOTICE. You can redistribute this SOFTWARE and/or modify it under the terms 
of this COPYRIGHT NOTICE. Any other usage may be permited only after written notice of Dragos Iosub / R&D Software Solutions srl.

This SOFTWARE is distributed is provide "AS IS" in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
or FITNESS FOR A PARTICULAR PURPOSE.


itbrainpower.net invests significant time in design phase of our IoT products and in associated software and support resources.
Support us by purchasing our environmental and air quality sensors from here https://itbrainpower.net/order#s-Sense


Dragos Iosub, Bucharest 2020.
https://itbrainpower.net
"""

from time import sleep
from bme680 import *


#default settings       =>      BMx280_OSR_X1, BMx280_OSR_X1, BMx280_OSR_X1, BMx280_Mode_Forced, BMx280_StandbyTime_1000ms, BMx280_Filter_Off
bme680Begin()                                                                   #start BMx280 w. default settings


#bme680Begin()                                                                          #start BME680 w. default settings
#bme680SetSettings(BME680_OSRX4, BME680_OSRX4, BME680_OSRX4, BME680_Filter_2)            #set specific settings

bme680SetGas(320, 150)                                                                  #set gas heater at 320C for 150 miliseconds


while(1):
        bme680ReadData()
        temperature = bme680GetTemperature()
        pressure = bme680GetPressure()
        humidity = bme680GetHumidity()
        print "Temperature: %.2f C" %temperature
        print "Pressure: %.2f Pascals" %pressure
        print "Relative Humidity : %.2f %%" %humidity
        
        gas = bme680GetGas()
        print "Gas resistence : %.2f mOhm" %gas

        sleep(2)
				
			

c’. Der obige Code ist im BME680 Raspberry Pi Python-Bibliothekspaket enthalten.

d. Überprüfen Sie die BME680-Parameter in der Datei “bme680_param.py”. Führen Sie den BME680-Code mit dem Befehl aus “python bme680_simple.py“.

Hinweise:
  • Wenn Sie den Code in der Datei “bme680_param.py” aktualisieren, führen Sie das Tool “./clean” aus, um die vorkompilierten Python-Dateien zu entfernen, bevor Sie sie ausführen.
  • Um Maßeinheiten umzurechnen, die Höhe zu berechnen und mehr, verwenden Sie die Python-Bibliothek s-Sense air quality utils.

Artikel veröffentlicht mit der Erlaubnis von: itbrainpower.net

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 4.8 / 5. Stimmenzahl: 9

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Teilen:

Picture of Maciej Figiel

Maciej Figiel

Vielseitig, bereit Herausforderungen anzunehmen, weil er überzeugt ist, dass dies der schnellste Weg ist sich zu entwickeln. Er schätzt den Kontakt mit der Natur und die aktive Erholung. Hat eine Leidenschaft für Autos und neue Technologien.

Siehe mehr:

Schreibe einen Kommentar

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

Aus Sicherheitsgründen ist die Verwendung des reCAPTCHA-Dienstes von Google erforderlich, der den Google-Datenschutzbestimmungen und Nutzungsbedingungen unterliegt..