Skip to main content

Očitanje jednog senzora

Što ovaj primjer prikazuje​

Primjer electrochemical-singleSensor.py iz modula stvara jedan senzor, pokreće ga i svakih 2,5 sekunde ispisuje koncentraciju plina u ppb.

Primjer stvara senzor s predloškom modula za ozon, SENSOR_O3, i bez adc_addr, pa se koristi zadana adresa modula. Komentar u primjeru kaže da predložak treba promijeniti prema vrsti vašeg senzora: SENSOR_NH3 je predložak za ćeliju za amonijak na ovoj pločici, a pretvorba u ppm koristi osjetljivost iz predloška (-1000 nA/ppm za SENSOR_O3, 40 nA/ppm za SENSOR_NH3). Zato očitanja iz primjera, u izvornom obliku, nisu vrijednosti amonijaka. Za očitanje amonijaka zamijenite SENSOR_O3 sa SENSOR_NH3 u retku s importom i u retku koji stvara senzor. Primjer otvara I2C sabirnicu 0 na pinu 22 (SCL) i pinu 21 (SDA).

Modul komunicira s ATtiny404 mostom na pločici samo kada je adc_addr od 0x30 do 0x37. Svaka druga vrijednost, kao zadana 0x49 koju koristi ovaj primjer, tumači se kao I2C adresa čipa ADS1115 s kojim modul komunicira izravno. Na ovoj pločici ADS1115 je spojen na pinove SDA2/SCL2 headera, do kojih Qwiic konektori ne dopiru, pa se ovaj primjer ne izvodi preko Qwiic kabela. Umjesto toga mikrokontroler povežite na header: 3,3 V na 3V3, GND na GND, SDA pin iz primjera (21) na SDA2, a njegov SCL pin (22) na SCL2. Primjer se tada izvodi onako kako je napisan, bez promjene adrese.

Shema spajanja u komentarima primjera spaja LMPEN na GND ili na GPIO pin. Na ovoj pločici LMPEN ostavite nespojen: otpornik od 10 kΩ već ga povlači na GND, a na njega je spojen i ATtiny404.

Kod primjera​

# FILE: electrochemical-singleSensor.py
# AUTHOR: Fran Fodor @ Soldered
# BRIEF: Single sensor PPM reading example.
# LAST UPDATED: 2026-05-21

# Connecting diagram:
#
# Qwiic------------------------>Qwiic
# LMPEN------------------------>GND or GPIO pin (see config_pin parameter below)

from machine import I2C, Pin
import time
from ElectrochemicalGasSensor import ElectrochemicalGasSensor, SENSOR_O3

# Initialize I2C
i2c = I2C(0, scl=Pin(22), sda=Pin(21))

# Create sensor object - change SENSOR_O3 to match your sensor type
# Available types: SENSOR_CO, SENSOR_NO2, SENSOR_SO2, SENSOR_O3,
# SENSOR_NO, SENSOR_H2S, SENSOR_NH3, SENSOR_CL2
sensor = ElectrochemicalGasSensor(SENSOR_O3, i2c)

# If using a custom ADC address or a GPIO pin for LMP91000 MENB:
# sensor = ElectrochemicalGasSensor(SENSOR_O3, i2c, adc_addr=0x4B, config_pin=5)

# -------------------------------------------------------------------------
# Setup
# -------------------------------------------------------------------------
print("Electrochemical Gas Sensor - Single Sensor Example")

if not sensor.begin():
print("ERROR: Can't init the sensor! Check connections!")
while True:
time.sleep_ms(100)

print("Sensor initialized successfully!")

# -------------------------------------------------------------------------
# Main loop
# -------------------------------------------------------------------------
while True:
reading = sensor.getPPB()

# If PPM is more relevant for your sensor, use:
# reading = sensor.getPPM()

print("Sensor reading: {:.5f} PPB".format(reading))

time.sleep_ms(2500)

🔗Otvori cijeli primjer

electrochemical-singleSensor.py u commitu 623e1e6

→

Thonny shell prikazuje:

ShellMicroPython
Electrochemical Gas Sensor - Single Sensor Example
Sensor initialized successfully!

Zatim svakih 2,5 sekunde slijedi redak koji počinje s Sensor reading:, u ppb s pet decimala.

Ako begin() vrati False, primjer umjesto toga ispisuje ERROR: Can't init the sensor! Check connections! i zaustavlja se.

Korištene funkcije​

ElectrochemicalGasSensor(sensor_type, i2c=None, adc_addr=0x49, config_pin=None)returns ElectrochemicalGasSensor

Stvara objekt senzora. adc_addr određuje kako begin() komunicira s pločicom: od 0x30 do 0x37 koristi protokol ATtiny mosta; svaka druga vrijednost koristi se kao vlastita I2C adresa ADC-a.

ReturnsObjekt senzora.

Parametri

ParametarTipOpis
sensor_typeSensorConfigPredložak ćelije. SENSOR_NH3 je predložak za ćeliju na ovoj pločici.
i2cI2CVaš I2C objekt.
adc_addrintAdresa s kojom modul komunicira. Zadano 0x49, što koristi ovaj primjer. Na ovoj pločici prekidač ADDRESS postavlja adresu mosta od 0x30 do 0x37.
config_pinint ili NoneBroj GPIO pina koji modul postavlja u nisku razinu dok konfigurira LMP91000, a poslije u visoku, kada je adc_addr izvan raspona od 0x30 do 0x37. Zadano None. Ne koristi se od 0x30 do 0x37.
begin()returns bool

S adresom od 0x30 do 0x37 provjerava odgovara li most i šalje mu postavke ADC-a i analognog ulaznog stupnja iz predloška. S bilo kojom drugom adresom izravno pokreće ADS1115 na toj adresi i konfigurira LMP91000. Pozovite je jednom prije bilo kojeg očitanja.

ReturnsTrue kada su svi koraci uspjeli. False kada most nije odgovorio s OK unutar 500 ms ili je javio pogrešku, kada pokretanje ADS1115 nije uspjelo ili kada konfiguriranje analognog ulaznog stupnja nije uspjelo.

getPPB()returns float

Izvodi jedno očitanje i vraća ga u dijelovima na milijardu (ppb). Rezultat manji od nule vraća se kao 0.

ReturnsgetPPM() pomnožen s 1000.

getPPM()returns float

Isto očitanje u ppm. Primjer ga prikazuje u komentaru kao alternativu.

ReturnsKoncentracija plina u ppm.

Sve zajedno​

Stvorite senzor s predloškom i svojim I2C objektom, jednom pozovite begin(), a zatim pozovite getPPB() ili getPPM() kad god želite očitanje. Ako begin() vrati False, primjer ispisuje pogrešku i zaustavlja se; prvo provjerite spoj na SDA2 i SCL2.