Zum Hauptinhalt springen

Schnellstart

Verbinden Sie das Breakout mit den I2C-Pins Ihres Controllers, installieren Sie das Soldered-BME690-MicroPython-Modul und führen Sie dessen Forced-Mode-Beispiel aus. Es löst jede Sekunde eine Messung aus und gibt Temperatur, Druck, Luftfeuchtigkeit und Gaswiderstand jeder abgerufenen Messung in der Shell aus.

Sie programmieren den Controller, der mit diesem Breakout verbunden ist. Das Breakout selbst wird nicht geflasht.

1. Das Breakout-Board verbinden​

Die Beispiele des Moduls erzeugen den Sensor mit BME690() und ohne I2C-Objekt. Auf den MicroPython-Ports esp32 und esp8266 (und einer Soldered-Board-Firmware) öffnet das Modul dann I2C(0) mit SDA an Pin 21 und SCL an Pin 22, verdrahten Sie also diese Pins. Bei anderen Pins oder auf einem Port, für den das Modul keine Pins wählt, erstellen Sie ein eigenes machine.I2C auf den von Ihnen verdrahteten Pins und übergeben es als BME690(i2c=...). Die Stiftleiste und beide Qwiic-Connectors führen dieselben Leitungen 3V3, GND, SDA und SCL.

NULA MiniSoldered BME690 AI temperature, humidity & gas sensor breakout
Qwiic connectorQwiic connector
Schaltplan: das NULA Mini, über ein Qwiic-Kabel mit dem Soldered BME690 AI temperature, humidity & gas sensor breakout verbunden

Das Diagramm verwendet ein NULA Mini als Beispiel für einen Controller, der mit einem Qwiic-Kabel an einen der beiden Qwiic-Connectors des Breakouts angeschlossen ist: beide führen dieselben vier Leitungen. Der Qwiic-Connector eines Controllers liegt nicht immer an den Pins 21 und 22: Beim NULA Mini liegt er an IO6 (SDA) und IO7 (SCL). Prüfen Sie, welche Pins der Connector Ihres Controllers verwendet, und übergeben Sie ein I2C-Objekt auf diesen Pins, wie oben beschrieben.

Versorgen Sie das Board mit 3,3 V. Der Pin 3V3 speist den Sensor direkt, ohne Regler: Er verträgt 1,71 bis 3,6 V, und 4,25 V sind das absolute Maximum des Sensors.

2. Das Modul installieren​

Verwenden Sie mim oder installieren Sie, nachdem Sie das Paket mpremote installiert haben, die Bibliothek mit dem folgenden Befehl auf Ihrem Board:

mpremote mip install github:SolderedElectronics/Soldered-BME690-MicroPython-Library

Oder, wenn Sie ein Windows-Betriebssystem verwenden:

python -m mpremote mip install github:SolderedElectronics/Soldered-BME690-MicroPython-Library

🔗Soldered BME690 MicroPython-Bibliothek

Geprüftes MicroPython-Modul bei Commit 91a07b5

→

Tipp: Download von GitHub. Öffnen Sie ohne mpremote die .py-Datei des Moduls auf GitHub und klicken Sie auf Download raw file. Öffnen Sie sie dann in Thonny und kopieren Sie sie über File → Save as... → MicroPython device auf das Board.

3. Das erste Beispiel ausführen​

Dies ist das Beispiel bme690-forcedMode.py des Moduls. Es legt Oversampling, einen IIR-Filter und einen Heizschritt mit 300 °C und 100 ms fest, löst dann jede Sekunde eine Messung aus und gibt sie aus. Wenn Sie den ADDR-Jumper auf 0x77 setzen, erzeugen Sie den Sensor stattdessen mit BME690(address=BME69X_I2C_ADDR_HIGH) und fügen BME69X_I2C_ADDR_HIGH zu den Namen hinzu, die das Beispiel aus bme690 importiert. Wenn Sie in Schritt 1 ein eigenes I2C-Objekt erstellt haben, übergeben Sie es ebenfalls, als i2c=.

# FILE: bme690-forcedMode.py
# AUTHOR: Josip Simun Kuci @ Soldered
# BRIEF: Read temperature, pressure, humidity and gas resistance from the
# BME690 in forced mode, one measurement at a time
# WORKS WITH: BME690 breakout board: solde.red/333411
# LAST UPDATED: 2026-09-16

from bme690 import (
BME690,
BME69X_ERROR,
BME69X_FILTER_SIZE_3,
BME69X_FORCED_MODE,
)
import time

# Start the sensor on the default I2C address (0x76). Use
# BME690(address=BME69X_I2C_ADDR_HIGH) if the address jumper is soldered.
sensor = BME690()

# Oversampling for temperature, pressure and humidity.
sensor.set_tph()

# IIR filter for the temperature and pressure readings.
sensor.set_filter(BME69X_FILTER_SIZE_3)

# Heat the gas sensor plate to 300 degrees Celsius for 100 milliseconds.
sensor.set_heater_prof(300, 100)

if sensor.check_status() == BME69X_ERROR:
raise Exception("BME690 setup failed: " + sensor.status_string())

print(
"Timestamp(ms), Temperature(C), Pressure(Pa), Humidity(%), "
"Gas resistance(Ohm), Status"
)

while True:
# Trigger a single measurement.
sensor.set_op_mode(BME69X_FORCED_MODE)

# Wait for the measurement to finish, the heater duration included.
time.sleep_us(sensor.get_meas_dur())

if sensor.fetch_data():
data, _ = sensor.get_data()

print(
"{}, {:.2f}, {:.2f}, {:.2f}, {:.2f}, 0x{:02x}".format(
time.ticks_ms(),
data.temperature,
data.pressure,
data.humidity,
data.gas_resistance,
data.status,
)
)

time.sleep(1)

🔗Vollständiges Beispiel öffnen

Examples/bme690-forcedMode.py bei Commit 91a07b5

→

4. Das Ergebnis prüfen​

Die Shell gibt zuerst die Spaltenüberschrift aus:

ShellMicroPython
Timestamp(ms), Temperature(C), Pressure(Pa), Humidity(%), Gas resistance(Ohm), Status

Danach gibt jeder Durchlauf der Schleife, in dem fetch_data() eine neue Messung findet, eine Zeile in derselben Reihenfolge aus: den Millisekundenzähler des Controllers, dann die Temperatur in °C, den Druck in Pa, die Luftfeuchtigkeit in % r. F. und den Gaswiderstand in Ω, jeweils mit zwei Nachkommastellen, und das Status-Byte in Hex. Ein Status von 0xb0 bedeutet neue Daten, eine gültige Gasmessung und eine stabile Heizung.

Meldet die Heizungskonfiguration, der letzte Aufruf vor der Prüfung, einen Fehler, stoppt das Skript mit BME690 setup failed: und dem Grund. Antwortet der Sensor überhaupt nicht, löst der Konstruktor BME690 not responding on address 0x76 aus.

Read in forced mode erklärt jede Funktion, die das Beispiel verwendet.

5. Wenn es nicht funktioniert​

Fahren Sie mit Fehlerbehebung fort und wiederholen Sie dieses kleinste Beispiel nach jeder Änderung.