Einzelne Sensormessung
Was dieses Beispiel zeigt
Das Beispiel electrochemical-singleSensor.py des Moduls erstellt einen Sensor, startet ihn und gibt die Gaskonzentration alle 2,5 Sekunden in ppb aus.
Das Beispiel erstellt den Sensor mit dem Ozon-Preset des Moduls, SENSOR_O3, und ohne adc_addr, sodass die Standardadresse des Moduls verwendet wird. Der Kommentar im Beispiel weist darauf hin, das Preset an Ihren Sensortyp anzupassen: SENSOR_NH3 ist das Preset für die Ammoniakzelle dieses Boards, und die Umrechnung in ppm verwendet die Empfindlichkeit des Presets (-1000 nA/ppm für SENSOR_O3, 40 nA/ppm für SENSOR_NH3). So, wie das Beispiel ausgeliefert wird, sind die Messwerte daher keine Ammoniakwerte. Um Ammoniak zu messen, ändern Sie SENSOR_O3 in der Import-Zeile und in der Zeile, die den Sensor erstellt, in SENSOR_NH3. Das Beispiel öffnet I2C-Bus 0 an Pin 22 (SCL) und Pin 21 (SDA).
Das Modul kommuniziert mit der ATtiny404-Bridge des Boards nur, wenn adc_addr zwischen 0x30 und 0x37 liegt. Jeder andere Wert, etwa die Standardadresse 0x49, die dieses Beispiel verwendet, wird als I2C-Adresse eines ADS1115 aufgefasst, mit dem das Modul direkt kommuniziert. Auf diesem Board sitzt der ADS1115 an den Pins SDA2/SCL2 der Stiftleiste, die die Qwiic-Connectoren nicht erreichen, daher läuft dieses Beispiel nicht über das Qwiic-Kabel. Verbinden Sie stattdessen den Controller mit der Stiftleiste: 3,3 V mit 3V3, GND mit GND, den SDA-Pin des Beispiels (21) mit SDA2 und den SCL-Pin (22) mit SCL2. Das Beispiel läuft dann wie geschrieben, ohne Änderung der Adresse.
Das Anschlussdiagramm in den Kommentaren des Beispiels verbindet LMPEN mit GND oder einem GPIO-Pin. Lassen Sie LMPEN auf diesem Board unverbunden: Ein 10-kΩ-Widerstand zieht ihn bereits auf GND, und auch der ATtiny404 ist damit verbunden.
Der Beispielcode
# 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)
🔗Vollständiges Beispiel öffnen
electrochemical-singleSensor.py im Commit 623e1e6
Die Thonny-Shell zeigt:
Electrochemical Gas Sensor - Single Sensor Example
Sensor initialized successfully!
Danach folgt alle 2,5 Sekunden eine Zeile, die mit Sensor reading: beginnt, in ppb mit fünf Nachkommastellen.
Wenn begin() den Wert False zurückgibt, gibt das Beispiel stattdessen ERROR: Can't init the sensor! Check connections! aus und hält an.
Verwendete Funktionen
ElectrochemicalGasSensor(sensor_type, i2c=None, adc_addr=0x49, config_pin=None)returns ElectrochemicalGasSensorErstellt das Sensorobjekt. adc_addr bestimmt, wie begin() mit dem Board kommuniziert: Von 0x30 bis 0x37 wird das ATtiny-Bridge-Protokoll verwendet; jeder andere Wert wird als eigene I2C-Adresse des ADC verwendet.
ReturnsDas Sensorobjekt.
Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
sensor_type | SensorConfig | Das Zellen-Preset. SENSOR_NH3 ist das Preset für die Zelle dieses Boards. |
i2c | I2C | Ihr I2C-Objekt. |
adc_addr | int | Die Adresse, mit der das Modul kommuniziert. Standard ist 0x49, die dieses Beispiel verwendet. Auf diesem Board stellt der ADDRESS-Schalter die Adresse der Bridge von 0x30 bis 0x37 ein. |
config_pin | int oder None | Eine GPIO-Pin-Nummer, die das Modul während der Konfiguration des LMP91000 auf Low und danach auf High setzt, wenn adc_addr außerhalb von 0x30 bis 0x37 liegt. Standard ist None. Wird von 0x30 bis 0x37 nicht verwendet. |
begin()returns boolBei einer Adresse von 0x30 bis 0x37 wird geprüft, ob die Bridge antwortet, und es werden ihr die ADC- und Analog-Frontend-Einstellungen aus dem Preset gesendet. Bei jeder anderen Adresse wird der ADS1115 direkt unter dieser Adresse gestartet und der LMP91000 konfiguriert. Rufen Sie sie einmal vor jeder Messung auf.
ReturnsTrue, wenn jeder Schritt erfolgreich war. False, wenn die Bridge nicht innerhalb von 500 ms mit OK geantwortet oder einen Fehler gemeldet hat, wenn das Starten des ADS1115 fehlgeschlagen ist oder wenn die Konfiguration des analogen Frontends fehlgeschlagen ist.
getPPB()returns floatNimmt eine Messung vor und gibt sie in Parts per Billion zurück. Ein Ergebnis unter null wird als 0 zurückgegeben.
ReturnsgetPPM() multipliziert mit 1000.
getPPM()returns floatDieselbe Messung in ppm. Das Beispiel zeigt sie als Alternative in einem Kommentar.
ReturnsDie Gaskonzentration in ppm.
Alles zusammen
Erstellen Sie den Sensor mit einem Preset und Ihrem I2C-Objekt, rufen Sie einmal begin() auf und rufen Sie dann getPPB() oder getPPM() auf, wann immer Sie eine Messung möchten. Wenn begin() den Wert False zurückgibt, gibt das Beispiel einen Fehler aus und hält an; prüfen Sie zuerst die Verdrahtung zu SDA2 und SCL2.