Single sensor
Was dieses Beispiel zeigt
Das Beispiel electrochemical-singleSensor.py des Moduls erzeugt einen Sensor mit einem
Preset und einem I2C-Objekt, sodass Adresse und Pin ihre Standardwerte behalten, und
gibt die Konzentration in ppb alle 2,5 s aus. Ein Kommentar im Beispiel listet
alle Presets des Moduls auf, darunter SENSOR_CL2.
Das Beispiel erzeugt den Sensor mit SENSOR_O3, dem Preset für die Ozonzelle.
Das Modul berechnet jeden Messwert aus den Empfindlichkeits- und Verstärkungseinstellungen des Presets;
das Preset für die Chlorzelle dieses Boards ist SENSOR_CL2.
Das Beispiel öffnet den I2C-Bus 0 mit SCL an Pin 22 und SDA an Pin 21. Ändern Sie
diese Pins passend zu Ihrem Board.
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
Examples/electrochemical-singleSensor.py im Commit 623e1e6
Der Anschlussplan im Beispiel verbindet LMPEN mit GND oder einem GPIO. Auf diesem
Board hält ein 10-kΩ-Widerstand LMPEN auf Low und ist mit dem ATtiny404 verbunden, sodass
Sie ihn unverbunden lassen (siehe die Pin-Tabelle unter
Hardware-Details).
Erwartetes Ergebnis:
Electrochemical Gas Sensor - Single Sensor Example
Sensor initialized successfully!
Danach folgt alle 2,5 s eine Zeile: Sensor reading: , die Konzentration in ppb mit fünf
Nachkommastellen und PPB. Schlägt begin() fehl, gibt das Skript
ERROR: Can't init the sensor! Check connections! aus und stoppt.
Verwendete Funktionen
ElectrochemicalGasSensor(sensor_type, i2c=None, adc_addr=0x49, config_pin=None)returns ElectrochemicalGasSensorErzeugt das Sensorobjekt. Bis begin() wird nichts an das Board gesendet.
ReturnsDas Sensorobjekt.
Parameter
| Typ | Name | Beschreibung |
|---|---|---|
SensorConfig | sensor_type | Das Zellen-Preset. Das Beispiel übergibt SENSOR_O3; die SGX-4CL2-Zelle dieses Boards hat das Preset SENSOR_CL2. |
I2C | i2c | Ein fertiges machine.I2C-Objekt; das Beispiel übergibt eines. Wird es weggelassen, erzeugt das Modul I2C(0, scl=Pin(22), sda=Pin(21)) auf dem esp32-Port und auf dem einen anderen Board, das es anhand seines Namens erkennt (dort ebenfalls Pin 22 und 21); auf esp8266 I2C(scl=Pin(5), sda=Pin(4)); auf jedem anderen Board löst es Board not recognized, please pass an I2C object manually aus. |
int | adc_addr | Die I2C-Adresse, bei Weglassen 0x49, wie im Beispiel. Bei einer Adresse von 0x30 bis 0x37, dem Bereich des ADDRESS-Schalters dieses Boards, kommuniziert begin() mit dem ATtiny404 des Boards; bei jeder anderen Adresse sucht es einen ADS1115 unter dieser Adresse und den LMP91000 unter 0x48 an dem von Ihnen übergebenen Bus. |
int | config_pin | Ein GPIO für den MENB-Eingang des LMP91000: Das Modul setzt ihn auf Low, solange es den LMP91000 direkt konfiguriert, sonst auf High. Bei Weglassen None, wie im Beispiel. Bei den Adressen 0x30 bis 0x37 ungenutzt. |
sensor.begin()returns boolPrüft, ob das Board antwortet, stellt Verstärkung und Datenrate des ADC gemäß dem Preset ein und konfiguriert den LMP91000 mit den Einstellungen des Presets. Rufen Sie sie einmal vor dem Messen auf.
ReturnsTrue, wenn das Board geantwortet hat und beide Konfigurationsschritte erfolgreich waren, sonst False.
sensor.getPPB()returns floatNimmt einen Messwert auf und rechnet ihn in ppb um: getPPM() mal 1000.
ReturnsDie Gaskonzentration in ppb.
sensor.getPPM()returns floatNimmt einen Messwert auf und rechnet ihn in ppm um: Sie zieht die interne Nullspannung ab, addiert die Nullpunktkalibrierung, teilt durch die Verstärkung des Verstärkers und die Empfindlichkeit des Presets und gibt bei einem Ergebnis unter null 0,0 zurück. Das Beispiel zeigt sie als Alternative in einem Kommentar.
ReturnsDie Gaskonzentration in ppm.
Dieses Beispiel verwendet außerdem
I2C und
Pin aus dem
machine-Modul von MicroPython sowie
time.sleep_ms();
sie gehören nicht zu dieser Bibliothek, sondern sind Teil von MicroPython selbst.
Zusammenfügen
begin() übernimmt die gesamte Einrichtung, daher ruft die Schleife nur getPPB() auf und gibt das
Ergebnis aus. Um in ppm zu messen, tauschen Sie die Zeile getPPM() aus dem Kommentar ein.