Pokretanje samotestiranja
Što prikazuje ovaj primjer
Primjer ispisuje jedinstveni ID senzora i pokreće njegovo ugrađeno samotestiranje. Test mjeri s grijačem na 350 °C i 150 °C, provjerava jesu li očitanja vjerodostojna i javlja je li prošao.
Primjer stvara senzor naredbom BME690(), pa na portovima esp32 i esp8266 koristi I2C(0) s pinom SDA na pinu 21 i SCL na pinu 22, na adresi 0x76.
Kod primjera
# 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())
🔗Otvorite cjeloviti primjer
Examples/bme690-selfTest.py u commitu 91a07b5
Očekivani rezultat: ljuska prvo ispisuje Unique ID: 0x, a zatim ID vašeg senzora kao osam heksadecimalnih znamenki. Nakon toga:
Running the self test, this takes a few seconds...
Self test passed.
Kada provjera ne uspije, zadnji redak glasi Self test failed:, a zatim slijedi razlog, na primjer Self test failed: Self test failed.
Korištene funkcije
BME690(i2c=None, address=BME69X_I2C_ADDR_LOW, amb_temp=25)returns BME690Stvara objekt senzora. Softverski resetira senzor, provjerava ID čipa (0x61) i čita kalibracijske podatke. Javlja iznimku kada senzor ne odgovara ili je na toj adresi drugi čip; svaka druga funkcija bilježi svoj rezultat u statusu umjesto da javi iznimku.
ReturnsObjekt senzora.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
I2C | i2c | Spreman objekt machine.I2C. Ako se izostavi, modul otvara I2C(0) s SCL na pinu 22 i SDA na pinu 21 na portovima esp32 i esp8266 te na jednom firmveru Soldered pločice, a na bilo kojem drugom portu javlja iznimku. |
int | address | I2C adresa: BME69X_I2C_ADDR_LOW (0x76, zadano) ili BME69X_I2C_ADDR_HIGH (0x77). |
int | amb_temp | Temperatura okoline u °C, koristi se za određivanje postavke grijača. Zadano je 25. |
sensor.get_unique_id()returns int or NoneČita jedinstveni ID senzora iz njegovih registara.
ReturnsJedinstveni ID kao cijeli broj, a None kada čitanje nije uspjelo.
sensor.self_test()returns intPokreće ugrađeno samotestiranje. Ponovno inicijalizira senzor i izvodi prisilna mjerenja s grijačem na 350 °C i 150 °C (jedno čekanje od 1 s, zatim šest čekanja od 2 s). Test ne prolazi kada prvo mjerenje od 1 s nema valjano očitanje plina ili kada njegova postavka struje grijača (idac) glasi 0x00 ili 0xFF. Od šest mjerenja od 2 s prvo mora očitati temperaturu od 0 do 60 °C, tlak od 90000 do 110000 Pa i vlažnost od 20 do 80 %, svako mora imati valjano očitanje plina, a prosječni otpor plina četvrtog i šestog mjerenja (150 °C) mora biti najmanje 1,2 puta veći od otpora petog (350 °C). Nakon toga senzor je u stanju mirovanja s konfiguracijom testa, pa ga prije mjerenja ponovno postavite.
ReturnsBME69X_OK (0) kada je test prošao, a inače kôd pogreške poput BME69X_E_SELF_TEST (-5).
sensor.status_string()returns strOpisuje trenutni statusni kôd u nekoliko riječi, na primjer Communication failure ili Self test failed.
ReturnsOpis, a prazan niz kada je status OK.
Sve zajedno
BME690() se povezuje sa senzorom, a get_unique_id() čita njegov ID, koji primjer ispisuje kao osam heksadecimalnih znamenki. self_test() zatim traje oko 13 sekundi čekanja i pri uspjehu vraća BME69X_OK; pri neuspjehu status_string() navodi razlog. Prije nego što senzor upotrijebite za mjerenja u istoj skripti, ponovno pozovite set_tph(), set_heater_prof() i set_op_mode().