Zum Hauptinhalt springen

Den Selbsttest ausführen

Was dieses Beispiel zeigt​

Das Beispiel gibt die eindeutige ID des Sensors aus und führt seinen integrierten Selbsttest durch. Der Test misst mit der Heizung bei 350 °C und 150 °C, prüft, ob die Messwerte plausibel sind, und meldet, ob er bestanden wurde.

Das Beispiel erstellt den Sensor mit BME690(). Auf den Ports esp32 und esp8266 verwendet es daher I2C(0) mit SDA an Pin 21 und SCL an Pin 22 unter der Adresse 0x76.

Der Beispielcode​

# FILE: bme690-selfTest.py
# AUTHOR: Josip Simun Kuci @ Soldered
# BRIEF: Run the built-in self test of the BME690 and print the result
# WORKS WITH: BME690 breakout board: solde.red/333411
# LAST UPDATED: 2026-09-16

from bme690 import BME690, BME69X_OK

sensor = BME690()

print("Unique ID: 0x{:08x}".format(sensor.get_unique_id()))
print("Running the self test, this takes a few seconds...")

# The sensor is left in sleep mode with its own configuration afterwards,
# so it has to be set up again before it is used for measurements.
if sensor.self_test() == BME69X_OK:
print("Self test passed.")
else:
print("Self test failed: " + sensor.status_string())

🔗Das vollständige Beispiel öffnen

Examples/bme690-selfTest.py im Commit 91a07b5

→

Erwartetes Ergebnis: Die Shell gibt zuerst Unique ID: 0x aus, gefolgt von der ID Ihres Sensors als acht Hexadezimalziffern. Danach:

ShellMicroPython
Running the self test, this takes a few seconds...
Self test passed.

Schlägt eine Prüfung fehl, lautet die letzte Zeile Self test failed: gefolgt von dem Grund, zum Beispiel Self test failed: Self test failed.

Verwendete Funktionen​

BME690(i2c=None, address=BME69X_I2C_ADDR_LOW, amb_temp=25)returns BME690

Erstellt das Sensorobjekt. Es setzt den Sensor per Soft-Reset zurück, prüft seine Chip-ID (0x61) und liest die Kalibrierdaten. Es löst eine Ausnahme aus, wenn der Sensor nicht antwortet oder sich ein anderer Chip unter der Adresse befindet; jede andere Funktion hält ihr Ergebnis im Status fest, statt eine Ausnahme auszulösen.

ReturnsDas Sensorobjekt.

Parameter

TypNameBeschreibung
I2Ci2cEin fertiges machine.I2C-Objekt. Wird es weggelassen, öffnet das Modul auf den Ports esp32 und esp8266 sowie bei einer Soldered-Board-Firmware I2C(0) mit SCL an Pin 22 und SDA an Pin 21; auf jedem anderen Port löst es eine Ausnahme aus.
intaddressDie I2C-Adresse: BME69X_I2C_ADDR_LOW (0x76, der Standardwert) oder BME69X_I2C_ADDR_HIGH (0x77).
intamb_tempUmgebungstemperatur in °C, mit der die Heizungseinstellung berechnet wird. Standardmäßig 25.
sensor.get_unique_id()returns int or None

Liest die eindeutige ID des Sensors aus seinen Registern.

ReturnsDie eindeutige ID als Ganzzahl, `None`, wenn das Lesen fehlgeschlagen ist.

sensor.self_test()returns int

Führt den integrierten Selbsttest durch. Er initialisiert den Sensor erneut und führt erzwungene Messungen mit der Heizung bei 350 °C und 150 °C durch (einmal 1 s Wartezeit, dann sechsmal 2 s). Der Test schlägt fehl, wenn die erste 1-s-Messung keinen gültigen Gaswert liefert oder ihre Heizstromeinstellung (idac) als 0x00 oder 0xFF liest. Bei den sechs 2-s-Messungen muss die erste eine Temperatur von 0 bis 60 °C, einen Druck von 90000 bis 110000 Pa und eine Luftfeuchtigkeit von 20 bis 80 % liefern, jede muss einen gültigen Gaswert haben, und der durchschnittliche Gaswiderstand der vierten und sechsten Messung (150 °C) muss mindestens das 1,2-Fache des Werts der fünften (350 °C) betragen. Danach befindet sich der Sensor mit der Konfiguration des Tests im Schlafmodus, richten Sie ihn daher vor dem Messen erneut ein.

ReturnsBME69X_OK (0), wenn der Test bestanden wurde, andernfalls ein Fehlercode wie BME69X_E_SELF_TEST (-5).

sensor.status_string()returns str

Beschreibt den aktuellen Statuscode in wenigen Worten, etwa Communication failure oder Self test failed.

ReturnsDie Beschreibung, ein leerer String, wenn der Status OK ist.

Alles zusammen​

BME690() verbindet sich mit dem Sensor, und get_unique_id() liest seine ID, die das Beispiel als acht Hexadezimalziffern ausgibt. self_test() läuft anschließend etwa 13 Sekunden Wartezeit lang und gibt bei Erfolg BME69X_OK zurück; bei einem Fehler nennt status_string() den Grund. Bevor Sie den Sensor im selben Skript für Messungen verwenden, rufen Sie set_tph(), set_heater_prof() und set_op_mode() erneut auf.