Skip to main content

Jedan senzor

Što prikazuje ovaj primjer​

Primjer modula electrochemical-singleSensor.py stvara jedan senzor s unaprijed postavljenom konfiguracijom (preset) i I2C objektom, tako da adresa i pin zadržavaju zadane vrijednosti, te svake 2,5 s ispisuje koncentraciju u ppb. Komentar u primjeru navodi sve presete koje modul ima, među njima SENSOR_CL2.

Primjer stvara senzor s SENSOR_O3, presetom za ćeliju ozona. Modul izračunava svako očitanje iz osjetljivosti i postavki pojačanja preseta; preset za ćeliju klora na ovoj pločici je SENSOR_CL2.

Primjer otvara I2C sabirnicu 0 sa SCL na pinu 22 i SDA na pinu 21. Promijenite ih prema svojoj pločici.

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)

🔗Otvorite cijeli primjer

Examples/electrochemical-singleSensor.py na commitu 623e1e6

→

Dijagram spajanja u primjeru povezuje LMPEN na GND ili GPIO. Na ovoj pločici otpornik od 10 kΩ drži LMPEN na niskoj razini i spojen je na ATtiny404, pa ga ostavite nespojenim (pogledajte tablicu pinova na stranici Detalji o hardveru).

Očekivani rezultat:

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

Zatim svake 2,5 s jedan redak: Sensor reading: , koncentracija u ppb s pet decimala i PPB. Ako begin() ne uspije, skripta 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. Ništa se ne šalje na pločicu dok se ne pozove begin().

ReturnsObjekt senzora.

Parametri

TipNazivOpis
SensorConfigsensor_typePreset ćelije. Primjer prosljeđuje SENSOR_O3; SGX-4CL2 ćelija ove pločice ima preset SENSOR_CL2.
I2Ci2cGotov machine.I2C objekt; primjer ga prosljeđuje. Ako se izostavi, modul stvara I2C(0, scl=Pin(22), sda=Pin(21)) na portu esp32 i na jednoj drugoj pločici koju prepoznaje po nazivu (i ondje su pinovi 22 i 21); na esp8266 I2C(scl=Pin(5), sda=Pin(4)); na svakoj drugoj pločici javlja Board not recognized, please pass an I2C object manually.
intadc_addrI2C adresa, 0x49 ako se izostavi, kao u primjeru. Za adresu od 0x30 do 0x37, raspon ADDRESS sklopke ove pločice, begin() komunicira s ATtiny404 na pločici; za svaku drugu adresu traži ADS1115 na toj adresi i LMP91000 na 0x48 na sabirnici koju proslijedite.
intconfig_pinGPIO za MENB ulaz LMP91000: modul ga postavlja na nisku razinu dok izravno konfigurira LMP91000, a inače na visoku. None ako se izostavi, kao u primjeru. Ne koristi se za adrese od 0x30 do 0x37.
sensor.begin()returns bool

Provjerava odgovara li pločica, postavlja pojačanje ADC-a i brzinu podataka preseta te konfigurira LMP91000 postavkama preseta. Pozovite je jednom prije čitanja.

ReturnsTrue ako je pločica odgovorila i oba koraka konfiguracije uspjela, a inače False.

sensor.getPPB()returns float

Obavlja jedno očitanje i pretvara ga u ppb: getPPM() puta 1000.

ReturnsKoncentracija plina u ppb.

sensor.getPPM()returns float

Obavlja jedno očitanje i pretvara ga u ppm: oduzima unutarnji napon nule, dodaje kalibraciju nule, dijeli s pojačanjem pojačala i osjetljivošću preseta te vraća 0.0 za rezultat manji od nule. Primjer je prikazuje u komentaru kao alternativu.

ReturnsKoncentracija plina u ppm.

Ovaj primjer koristi i I2C i Pin iz MicroPythonova modula machine te time.sleep_ms(), koji nisu dio ove biblioteke, nego dolaze uz sam MicroPython.

Sastavljanje cjeline​

begin() obavlja cijelo postavljanje, pa petlja samo poziva getPPB() i ispisuje rezultat. Za očitanje u ppm zamijenite retkom getPPM() iz komentara.