Schnellstart
Verbinden Sie das Breakout über Qwiic, installieren Sie die Bibliothek und führen Sie ein Beispiel aus, das
alle 2,5 Sekunden eine Gaskonzentration in PPM ausgibt. In Schritt 3 sehen Sie, wie Sie es für
die H2S-Zelle dieses Boards einrichten. Das Board antwortet werkseitig unter der I2C-Adresse 0x30.
Sie programmieren den Controller, der mit diesem Breakout verbunden ist. Das Breakout selbst wird nicht geflasht.
- Arduino
- MicroPython
1. Das Breakout-Board anschließen
Stecken Sie ein Qwiic-Kabel in einen der beiden Qwiic-Connectoren am Breakout und in den Qwiic-Connector an Ihrem Controller. Beide Connectoren führen denselben I2C-Bus und dieselbe 3,3-V-Versorgung.
| NULA DeepSleep | Soldered Electrochemical H2S Gas Sensor Breakout (Qwiic) |
|---|---|
| Qwiic-Connector | Qwiic-Connector |
Ohne Qwiic: Verdrahtung auf dem Steckbrett
Verwenden Sie stattdessen die obere Stiftleiste. Versorgen Sie das Board nur mit 3,3 V: Es hat keinen Spannungsregler.
| NULA DeepSleep | Soldered Electrochemical H2S Gas Sensor Breakout (Qwiic) |
|---|---|
| GND | GND |
| 3V3 | 3V3 |
| IO8 | SDA1 |
| IO9 | SCL1 |
2. Die Bibliothek installieren
Installieren Sie Electrochemical Gas Sensor Soldered aus dem zugehörigen GitHub-Repository.
🔗Electrochemical Gas Sensor Soldered
Verifizierte Arduino-Bibliothek bei Commit c4df54b
Tipp: Download von GitHub. Klicken Sie auf der GitHub-Seite der Bibliothek auf die grüne Schaltfläche Code und wählen Sie Download ZIP. Fügen Sie die Datei dann in der Arduino IDE über Sketch → Bibliothek einbinden → .ZIP-Bibliothek hinzufügen... hinzu.
3. Das erste Beispiel ausführen
Dies ist das Beispiel bridgeBoard der Bibliothek, das mit dem Board unter
0x30 kommuniziert. Es ist mit SENSOR_CO geschrieben, dem Kohlenmonoxid-Preset der Bibliothek,
daher sind seine PPM-Werte keine H2S-Werte.
Stellen Sie es nicht unverändert auf das Preset SENSOR_H2S der Bibliothek um. Dieses Preset
ist für die Zelle SGX-4H2S-100 mit einer Empfindlichkeit von 1200 nA pro ppm geschrieben. Dieses
Board trägt die Zelle SGX-4H2S-300, deren
Datenblatt
ein Ausgangssignal von 460 ± 140 nA pro ppm angibt. Mit SENSOR_H2S fällt der Messwert daher
etwa 2,6-mal zu niedrig aus.
Geben Sie der Bibliothek stattdessen einen benutzerdefinierten Sensortyp: die Einstellungen von SENSOR_H2S
mit der Empfindlichkeit des SGX-4H2S-300, 460 nA pro ppm. Fügen Sie ihn oberhalb der Zeile ein, die
sensor erzeugt, und übergeben Sie ihn anstelle von SENSOR_CO:
const sensorType SENSOR_CUSTOM = {
460.0F, // nanoAmperesPerPPM
0, // internalZeroCalibration
ADS_GAIN_4_096V, // adsGain
TIA_GAIN_7_KOHM, // TIA_GAIN_IN_KOHMS
RLOAD_10_OHM, // RLOAD
REF_EXTERNAL, // REF_SOURCE
INTERNAL_ZERO_20_PERCENT, // INTERNAL_ZERO
BIAS_SIGN_POSITIVE, // BIAS_SIGN
BIAS_0_PERCENT, // BIAS
FET_SHORT_DISABLED, // FET_SHORT
OP_MODE_3LEAD_AMP_CELL, // OP_MODE
};
ElectrochemicalGasSensor sensor(SENSOR_CUSTOM, 0x30);
Es folgt das unveränderte Beispiel.
// Include the required library
#include "Electrochemical-Gas-Sensor-SOLDERED.h"
ElectrochemicalGasSensor sensor(SENSOR_CO, 0x30);
void setup()
{
Serial.begin(115200); // For debugging
// Init the breakout
if (!sensor.begin())
{
// Can't init? Notify the user and go to infinite loop
Serial.println("ERROR: Can't init the sensor! Check connections and jumper address!");
while (true)
delay(100);
}
Serial.println("Sensor initialized successfully!");
}
void loop()
{
// Make the reading
double reading = sensor.getPPM();
// If PPB is more relevant for your sensor, you can use:
// double reading = sensor.getPPB();
// Print the reading with 5 digits of precision
Serial.print("Sensor reading: ");
Serial.print(reading, 5);
Serial.println(" PPM");
// Wait a bit before reading again
delay(2500);
}
4. Das Ergebnis prüfen
Öffnen Sie den Serial Monitor mit 115200 Baud. Wenn das Board antwortet, sehen Sie:
Sensor initialized successfully!
Sensor reading: 0.00217 PPM
Sensor reading: 0.00213 PPM
Sensor reading: 0.00216 PPM
Sensor reading: 0.00220 PPM
Alle 2,5 Sekunden folgt eine neue Zeile Sensor reading: mit der Konzentration
in PPM auf fünf Dezimalstellen. Die obigen Werte sind ein Beispiel von einem Board auf unserem
Prüfstand; Ihre hängen vom Gas in der Umgebung des Sensors und vom Sensortyp ab, den Ihr
Sketch verwendet. Die Bibliothek meldet nie einen Wert unter null: Stattdessen gibt sie 0
zurück, daher ist 0.00000 ein normaler Messwert.
Wenn stattdessen ERROR: Can't init the sensor! Check connections and jumper address!
erscheint, hat das Board nicht unter 0x30 geantwortet.
5. Wenn es nicht funktioniert
Fahren Sie mit der Fehlerbehebung fort und wiederholen Sie dieses kleinste Beispiel nach jeder Änderung.
1. Das Breakout-Board anschließen
Stecken Sie ein Qwiic-Kabel in einen der beiden Qwiic-Connectoren am Breakout und in den Qwiic-Connector an Ihrem Controller. Beide Connectoren führen denselben I2C-Bus und dieselbe 3,3-V-Versorgung.
| NULA DeepSleep | Soldered Electrochemical H2S Gas Sensor Breakout (Qwiic) |
|---|---|
| Qwiic-Connector | Qwiic-Connector |
Ohne Qwiic: Verdrahtung auf dem Steckbrett
Verwenden Sie stattdessen die obere Stiftleiste. Versorgen Sie das Board nur mit 3,3 V: Es hat keinen Spannungsregler.
| NULA DeepSleep | Soldered Electrochemical H2S Gas Sensor Breakout (Qwiic) |
|---|---|
| GND | GND |
| 3V3 | 3V3 |
| IO8 | SDA1 |
| IO9 | SCL1 |
Das Beispiel in Schritt 3 öffnet I2C mit sda=Pin(21) und scl=Pin(22), nicht mit
IO8 und IO9. Wenn Sie die Stiftleiste wie in dieser Tabelle verdrahten, ändern Sie diese beiden Zahlen
in der Zeile I2C(...) des Beispiels auf die GPIOs, die Sie mit SDA1 und SCL1 verbunden haben, damit der
Code dieselben Pins verwendet wie Ihre Kabel.
2. Das Modul installieren
Nachdem Sie das mpremote-Paket installiert haben, installieren Sie die Bibliothek mit dem folgenden Befehl auf Ihrem Board:
mpremote mip install github:SolderedElectronics/Soldered-ElectrochemicalGasSensor-MicroPython-Library
Oder, wenn Sie Windows verwenden:
python -m mpremote mip install github:SolderedElectronics/Soldered-ElectrochemicalGasSensor-MicroPython-Library
🔗Soldered-ElectrochemicalGasSensor-MicroPython-Library
Verifiziertes MicroPython-Modul bei Commit 623e1e6
Tipp: Download von GitHub. Öffnen Sie ohne mpremote jede .py-Datei des Moduls
(ElectrochemicalGasSensor.py, ads1115.py und lmp91000.py) auf
GitHub und klicken Sie auf Download raw file. Öffnen Sie sie dann in Thonny und kopieren Sie sie über
File → Save as... → MicroPython device auf das Board.
3. Das erste Beispiel ausführen
Dies ist das Beispiel electrochemical-bridgeBoard.py des Moduls, das mit
dem Board unter 0x30 kommuniziert. Nehmen Sie vor dem Ausführen zwei Änderungen vor:
- Es ist mit
SENSOR_O3geschrieben, dem Ozon-Preset des Moduls, daher sind seine PPM-Werte keine H2S-Werte. Stellen Sie es nicht unverändert auf das PresetSENSOR_H2Sdes Moduls um: Dieses Preset ist für die Zelle SGX-4H2S-100 mit einer Empfindlichkeit von 1200 nA pro ppm geschrieben, während dieses Board die Zelle SGX-4H2S-300 trägt, deren Datenblatt ein Ausgangssignal von 460 ± 140 nA pro ppm angibt. MitSENSOR_H2Sfällt der Messwert etwa 2,6-mal zu niedrig aus. Verwenden Sie stattdessen eine benutzerdefinierteSensorConfigmit den Einstellungen vonSENSOR_H2Sund 460 nA pro ppm, wie unterhalb der Liste gezeigt. - Es öffnet I2C-Bus 0 mit SCL an GPIO 22 und SDA an GPIO 21. Ändern Sie diese auf die I2C-Pins des Qwiic-Connectors Ihres Controllers, falls sie abweichen.
Ersetzen Sie die Zeile import des Beispiels aus ElectrochemicalGasSensor durch:
from ElectrochemicalGasSensor import (
ElectrochemicalGasSensor, SensorConfig,
TIA_GAIN_7_KOHM, RLOAD_10_OHM, REF_EXTERNAL,
INTERNAL_ZERO_20_PERCENT, BIAS_SIGN_POSITIVE, BIAS_0_PERCENT,
FET_SHORT_DISABLED, OP_MODE_3LEAD_AMP_CELL,
)
from ads1115 import ADS_GAIN_4_096V
SENSOR_CUSTOM = SensorConfig(
nano_amperes_per_ppm=460.0,
internal_zero_calibration=0,
ads_gain=ADS_GAIN_4_096V,
tia_gain=TIA_GAIN_7_KOHM,
rload=RLOAD_10_OHM,
ref_source=REF_EXTERNAL,
internal_zero=INTERNAL_ZERO_20_PERCENT,
bias_sign=BIAS_SIGN_POSITIVE,
bias=BIAS_0_PERCENT,
fet_short=FET_SHORT_DISABLED,
op_mode=OP_MODE_3LEAD_AMP_CELL,
)
und die Zeile, die sensor erzeugt, durch:
sensor = ElectrochemicalGasSensor(SENSOR_CUSTOM, i2c, adc_addr=0x30)
Es folgt das unveränderte Beispiel.
# FILE: electrochemical-bridgeBoard.py
from machine import I2C, Pin
import time
from ElectrochemicalGasSensor import ElectrochemicalGasSensor, SENSOR_O3
# Initialize I2C
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
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)
4. Das Ergebnis prüfen
Wenn das Board antwortet, zeigt die Shell:
Electrochemical Gas Sensor - ATtiny Bridge Board Example
Sensor initialized successfully!
Sensor reading: 0.00198 PPM
Sensor reading: 0.00201 PPM
Sensor reading: 0.00199 PPM
Sensor reading: 0.00200 PPM
Alle 2,5 Sekunden folgt eine neue Zeile Sensor reading: mit der Konzentration
in PPM auf fünf Dezimalstellen. Die obigen Werte sind ein Beispiel von einem Board auf unserem
Prüfstand; Ihre hängen vom Gas in der Umgebung des Sensors und vom Sensortyp ab, den Ihr
Skript verwendet. Das Modul meldet nie einen Wert unter null: Stattdessen gibt es 0
zurück, daher ist 0.00000 ein normaler Messwert.
Wenn stattdessen ERROR: Can't init the sensor! Check connections and jumper address!
erscheint, hat das Board nicht unter 0x30 geantwortet.
5. Wenn es nicht funktioniert
Fahren Sie mit der Fehlerbehebung fort und wiederholen Sie dieses kleinste Beispiel nach jeder Änderung.