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:
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 ElectrochemicalGasSensorStvara 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
| Parametar | Tip | Opis |
|---|---|---|
sensor_type | SensorConfig | Predložak ćelije. SENSOR_NH3 je predložak za ćeliju na ovoj pločici. |
i2c | I2C | Vaš I2C objekt. |
adc_addr | int | Adresa s kojom modul komunicira. Zadano 0x49, što koristi ovaj primjer. Na ovoj pločici prekidač ADDRESS postavlja adresu mosta od 0x30 do 0x37. |
config_pin | int ili None | Broj 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 boolS 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 floatIzvodi 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 floatIsto 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.