Očitavanje klora
Što ovaj primjer prikazuje
Primjer modula electrochemical-bridgeBoard.py pokreće pločicu na njezinoj zadanoj adresi, 0x30, i ispisuje koncentraciju plina u ppm svakih 2,5 s. To je isti primjer kao u poglavlju Brzi početak.
Primjer koristi SENSOR_O3, predložak za ozonsku ćeliju. Modul izračunava ppm iz osjetljivosti i postavki pojačanja iz predloška; predložak za klorovu ćeliju ove pločice je SENSOR_CL2.
Primjer otvara I2C sabirnicu 0 s SCL na pinu 22 i SDA na pinu 21. Promijenite ih prema svojoj pločici.
Kôd primjera
Komentari u primjeru kažu da se adresa postavlja jumperima na poleđini pločice i da je LMPEN čvrsto spojen na GND. Na ovoj pločici adresu (zadano 0x30) postavlja prekidač ADDRESS na gornjoj strani. Otpornik od 10 kΩ drži LMPEN na niskoj razini i spojen je na ATtiny404, zato ga ostavite nespojenim (pogledajte Detalji o hardveru).
# FILE: electrochemical-bridgeBoard.py
# AUTHOR: Fran Fodor @ Soldered
# BRIEF: Single sensor PPM reading example for the ATtiny404 bridge board revision,
# which allows daisy-chaining multiple boards on one I2C bus.
# LAST UPDATED: 2026-07-23
# Connecting diagram:
#
# Qwiic------------------------>Qwiic
#
# Note: on this board revision, LMPEN is hardwired to GND, so there's no
# config_pin to set - it's ignored whenever adc_addr falls in the bridge
# range (0x30-0x37). Set the desired address using the jumpers on the back
# of the board before powering it on.
from machine import I2C, Pin
import time
from ElectrochemicalGasSensor import ElectrochemicalGasSensor, SENSOR_O3
# Initialize I2C
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
# (address = 0x30 + jumper offset, giving a range of 0x30-0x37).
# Any additional boards on the same bus just need a different jumper
# setting, same as twoSensors.py does for legacy boards with 0x49/0x4A/0x4B.
sensor = ElectrochemicalGasSensor(SENSOR_O3, i2c, adc_addr=0x30)
# -------------------------------------------------------------------------
# Setup
# -------------------------------------------------------------------------
print("Electrochemical Gas Sensor - ATtiny Bridge Board Example")
if not sensor.begin():
print("ERROR: Can't init the sensor! Check connections and jumper address!")
while True:
time.sleep_ms(100)
print("Sensor initialized successfully!")
# -------------------------------------------------------------------------
# Main loop
# -------------------------------------------------------------------------
while True:
reading = sensor.getPPM()
# If PPB is more relevant for your sensor, use:
# reading = sensor.getPPB()
print("Sensor reading: {:.5f} PPM".format(reading))
time.sleep_ms(2500)
🔗Otvorite cijeli primjer
Examples/electrochemical-bridgeBoard.py u commitu 623e1e6
Očekivani rezultat:
Electrochemical Gas Sensor - ATtiny Bridge Board Example
Sensor initialized successfully!
Zatim slijedi redak svakih 2,5 s: Sensor reading: , koncentracija u ppm s pet decimala i PPM. Ako pločica ne odgovori, skripta ispisuje ERROR: Can't init the sensor! Check connections and jumper address! i zaustavlja se.
Korištene funkcije
ElectrochemicalGasSensor(sensor_type, i2c=None, adc_addr=0x49, config_pin=None)returns ElectrochemicalGasSensorStvara objekt senzora. Ništa se ne šalje pločici do poziva begin().
ReturnsObjekt senzora.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
SensorConfig | sensor_type | Predložak ćelije. Primjer prosljeđuje SENSOR_O3; ćelija SGX-4CL2 na ovoj pločici ima predložak SENSOR_CL2. |
I2C | i2c | Gotov objekt machine.I2C; primjer prosljeđuje jedan. 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 stvara I2C(scl=Pin(5), sda=Pin(4)); na svakoj drugoj pločici javlja Board not recognized, please pass an I2C object manually. |
int | adc_addr | I2C adresa, 0x49 ako se izostavi. Za adresu od 0x30 do 0x37, raspon prekidača ADDRESS ove pločice, begin() komunicira s ATtiny404 na pločici; primjer prosljeđuje 0x30, zadanu adresu pločice. Za svaku drugu adresu begin() traži ADS1115 na toj adresi i LMP91000 na 0x48 na sabirnici koju proslijedite. |
int | config_pin | GPIO za ulaz MENB čipa LMP91000: modul ga postavlja na nisku razinu dok izravno konfigurira LMP91000, a inače na visoku. None ako se izostavi. Ne koristi se za adrese 0x30 do 0x37. |
sensor.begin()returns boolProvjerava odgovara li pločica, šalje joj pojačanje ADC-a i brzinu podataka iz predloška te konfigurira LMP91000 postavkama iz predloška. Pozovite jednom prije očitavanja. Svaka razmjena s pločicom ponavlja se do 500 ms.
ReturnsTrue ako je pločica odgovorila i oba koraka konfiguracije uspjela, inače False.
sensor.getPPM()returns floatObavlja jedno očitanje i pretvara ga u ppm: oduzima unutarnji napon nule (referenca od 2,5 V pomnožena unutarnjim postotkom nule iz predloška), dodaje kalibraciju nule, dijeli s pojačanjem pojačala i s osjetljivošću iz predloška u nA po ppm. Rezultat ispod nule vraća se kao 0.0.
ReturnsKoncentracija plina u ppm.
sensor.getPPB()returns floatIsto očitanje kao getPPM(), puta 1000. Primjer ga prikazuje u komentaru kao alternativu.
ReturnsKoncentracija plina u ppb.
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.
Sve na okupu
begin() obavlja cijelo postavljanje, pa petlja samo poziva getPPM() i ispisuje
rezultat. Za očitanje u ppb zamijenite retkom getPPB() iz komentara.