Modulo sensore della qualità dell'aria SGP41, VOC e NOx, I2C
zoom_out_map
chevron_left chevron_right

Le immagini dei prodotti sono solo a scopo informativo e potrebbero presentare piccole differenze, a seconda del lotto e del fornitore. Le specifiche e i prezzi dei prodotti potrebbero essere soggetti a modifiche senza preavviso. Facciamo del nostro meglio per aggiungere specifiche quanto più precise e corrette possibili alla pagina del prodotto, ma è possibile che non siano del tutto corrette. Se identifichi un caso del genere, ti preghiamo di segnalarcelo.

Il prodotto è destinato agli specialisti e richiede personale qualificato e autorizzato. Il prodotto non include istruzioni di montaggio/uso . La messa in funzione del prodotto da parte di persone non qualificate comporta la perdita della garanzia secondo i Termini e Condizioni presenti sul sito.

Le specifiche tecniche indicate (corrente, potenza, ecc.) rappresentano valori massimi consentiti in condizioni ideali di funzionamento. Per un utilizzo sicuro e una durata ottimale, si raccomanda di utilizzare il prodotto in regime continuo a non più del 50% dei valori massimi specificati.

Modulo sensore di qualità dell’aria SGP41, VOC e NOx, I2C, 3.3V

Modulo compatto per il monitoraggio della qualità dell'aria in tempo reale, rileva VOC e NOx con tecnologia MOX Sensirion, comunicazione I2C per una rapida integrazione con Arduino, ESP32, Raspberry Pi o STM32, funziona a bassa tensione 3.3V ideale per dispositivi a batteria, adatto per smart home, HVAC, purificatori e stazioni meteo portatili.

67,11 RON Tasse incluse

55,46 RON Tasse escluse

Non ci sono ancora recensioni

Spedito entro giovedì 22 ottobre

Acquistando questo prodotto guadagni 3,36 RON in punti fedeltà.

Garanzia: 24 mesi per le persone fisiche
SPEDIZIONE INTERNAZIONALE
Spedizione veloce gratuita per ordini superiori a 100EUR nella maggior parte de paesi UE.
SPEDIZIONE VELOCE 24 ORE
Spediamo dal nostro magazzino entro 24 ore
PUNTI FEDELTÀ
Ricevi punti a ogni ordine, per un valore del 5%.

Modulo basato sul sensore SGP41, progettato per misurare la qualità dell'aria, compatibile con Arduino e altre schede di sviluppo, utilizzato in applicazioni per la casa intelligente, HVAC, purificatori d'aria o stazioni meteorologiche portatili.

Il sensore utilizza la tecnologia MOX (ossido di metallo) integrata di Sensirion per rilevare i gas VOC (composti organici volatili) e NOx (ossido di azoto), fornendo una valutazione accurata della qualità dell'aria in tempo reale.

Il modulo è montato su una scheda nera con interfaccia I2C standard, che ne facilita l'integrazione su schede come Arduino, ESP32, Raspberry Pi o STM32. Funziona a basse tensioni, comprese tra 1,62 V e 1,98 V, il che lo rende adatto ad applicazioni portatili e dispositivi alimentati a batteria.

Attenzione! Il sensore non è compatibile con livelli logici e alimentazione superiori a 1,9 V CC! Utilizzare un convertitore di livello logico e un'alimentazione da 1,8 V CC!

 

Specifiche:

Tensione di alimentazione: 1,62 – 1,98 VDC

Tipo di sensore: SGP41 (Sensirion)

Parametri misurati: COV e NOx

Interfaccia: I2C (indirizzo standard 0x59)

Corrente tipica: < 2 mA in modalità attiva

Tempo di riscaldamento: < 10 s

Dimensioni del modulo: 10 × 10 mm

Materiale della scheda: FR4, PCB nero

 

Pinout:

Pino Nome Funzione Descrizione
1 VCC alimentazione 1,62 V – 1,98 V
2 Terra Massa Riferimento comune
3 SDA Dati I²C Linea dati bidirezionale
4 SCL Orologio I²C Sincronizzazione delle comunicazioni

 

Utilizzo:

Collegare il sensore al microcontrollore tramite il bus I2C:

VCC → 1,8 V

GND → GND comune

SDA → Pin I²C SDA

SCL → Pin SCL I²C

 

Inizializza la comunicazione all'indirizzo 0x59.

Avviare la routine di riscaldamento e lettura VOC/NOx secondo la libreria Sensirion (disponibile per Arduino e Raspberry Pi).

Interpretare i valori restituiti:

Indice VOC (0–500)

Indice NOx (0–500)

Valori bassi indicano aria pulita. Valori alti indicano aria inquinata.

 

Attenzione! Il sensore non è compatibile con livelli logici e alimentazione superiori a 1,9 V CC! Utilizzare un convertitore di livello logico e un'alimentazione da 1,8 V CC!

Esempio di collegamento con Arduino e convertitore di livello logico:

Arduino UNO Modalità di conversione del livello SGP41
5V Alta tensione –
Terra Terra Terra
SDA (A4) HV1 → LV1 SDA
SCL (A5) HV2 → LV2 SCL
LV (lato basso) – 1,8 V
HV (lato alto) – 5V
Uscita LDO da 1,8 V – VCC
88052
Tensione di ingresso
1.6 V
Tipo di tensione in ingresso
DC

Produs destinat utilizarii in proiecte electronice, automatizari, prototipare, educatie si cercetare.

Produsul trebuie utilizat numai conform specificatiilor tehnice mentionate in descriere si/sau in documentatia produsului.

Avertismente generale de siguranta:

Nu utilizati produsul la tensiuni, curenti sau temperaturi peste valorile specificate.

Montajul si conectarea trebuie realizate de persoane cu cunostinte tehnice minime in domeniul electric/electronic.

Evitati scurtcircuitele, inversarea polaritatii si conectarea gresita a alimentarii.

Nu lasati produsul alimentat nesupravegheat in timpul testelor.

Produsul nu este jucarie si nu este destinat copiilor.

Pentru modulele electronice, se recomanda utilizarea in carcase, panouri sau montaje protejate, dupa caz.

Identificare produs:

Denumirea produsului, codul/SKU-ul si caracteristicile tehnice sunt mentionate in pagina produsului si/sau pe eticheta ambalajului.

Producator / Importator / Distribuitor:

Sigmanortec S.R.L.

Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania

E-mail: [email protected]

Website: www.sigmanortec.ro

Persoana responsabila in UE:

Sigmanortec S.R.L.

Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania

E-mail: [email protected]

Documentatie si siguranta:

Pentru informatii suplimentare, fise tehnice, declaratii de conformitate sau instructiuni, ne puteti contacta la [email protected].

/*
  Test code for SGP41 VOC and NOx Air Quality Sensor Module
  Board: ESP32 Dev Module
  Wiring:
    SGP41 VCC -> ESP32 3V3
    SGP41 GND -> ESP32 GND
    SGP41 SDA -> ESP32 GPIO21
    SGP41 SCL -> ESP32 GPIO22
  Libraries to install from Library Manager:
    Sensirion I2C SGP41 (Sensirion)
    Sensirion Gas Index Algorithm (Sensirion)
  Note: on a 5V board such as Arduino UNO, power the module from the 3.3V pin
  and use a bidirectional I2C logic level converter on SDA and SCL.
*/

#include <Wire.h>
#include <SensirionI2CSgp41.h>
#include <VOCGasIndexAlgorithm.h>
#include <NOxGasIndexAlgorithm.h>

// I2C pins used on the ESP32 dev board
#define I2C_SDA_PIN 21
#define I2C_SCL_PIN 22

// Default humidity and temperature values used when no external RH/T sensor is connected
// 0x8000 corresponds to 50% RH, 0x6666 corresponds to 25 degC
const uint16_t defaultRh = 0x8000;
const uint16_t defaultT = 0x6666;

SensirionI2CSgp41 sgp41;
VOCGasIndexAlgorithm vocAlgorithm;
NOxGasIndexAlgorithm noxAlgorithm;

uint16_t error;

void setup() {
  Serial.begin(115200);
  delay(1000);

  Wire.begin(I2C_SDA_PIN, I2C_SCL_PIN);
  sgp41.begin(Wire);

  // Read and print the sensor serial number, to confirm the I2C link works
  uint16_t serialNumber[3];
  uint8_t serialNumberSize = 3;
  error = sgp41.getSerialNumber(serialNumber, serialNumberSize);
  if (error) {
    Serial.print("Error getting serial number: ");
    Serial.println(error);
  } else {
    Serial.print("SGP41 serial number: ");
    for (int i = 0; i < serialNumberSize; i++) {
      Serial.print(serialNumber[i], HEX);
      Serial.print(" ");
    }
    Serial.println();
  }

  Serial.println("Conditioning for 10 seconds, do not skip this step.");
  uint16_t srawVoc = 0;
  for (int i = 0; i < 10; i++) {
    error = sgp41.executeConditioning(defaultRh, defaultT, srawVoc);
    if (error) {
      Serial.print("Error during conditioning: ");
      Serial.println(error);
    }
    delay(1000);
  }

  Serial.println("Conditioning done, starting measurements.");
}

void loop() {
  uint16_t srawVoc = 0;
  uint16_t srawNox = 0;

  error = sgp41.measureRawSignals(defaultRh, defaultT, srawVoc, srawNox);

  if (error) {
    Serial.print("Error reading raw signals: ");
    Serial.println(error);
  } else {
    int32_t vocIndex = vocAlgorithm.process(srawVoc);
    int32_t noxIndex = noxAlgorithm.process(srawNox);

    Serial.print("SRAW_VOC: ");
    Serial.print(srawVoc);
    Serial.print("  SRAW_NOX: ");
    Serial.print(srawNox);
    Serial.print("  VOC Index: ");
    Serial.print(vocIndex);
    Serial.print("  NOx Index: ");
    Serial.println(noxIndex);
  }

  delay(1000);
}

Il modulo con il sensore SGP41 di Sensirion monitora la qualità dell'aria interna tramite due segnali distinti, uno per i composti organici volatili (VOC) e uno per gli ossidi di azoto (NOx). In questo tutorial mettiamo in funzione il modulo con una scheda ESP32, perché l'interfaccia I2C del sensore funziona nativamente a 3.3 V, la stessa tensione logica usata dall'ESP32, senza bisogno di un convertitore di livello.

Modulo sensore di qualità dell'aria SGP41, VOC e NOx, I2C, 1.6V

Come funziona:

Il sensore SGP41 ha due elementi di misura MOX, ciascuno con la propria micro-piastra riscaldante. Ogni elemento produce un segnale grezzo a 16 bit, SRAW_VOC e SRAW_NOX, proporzionale al logaritmo della resistenza dello strato sensibile al gas. Questi segnali grezzi non sono direttamente utili, per questo vengono elaborati tramite l'algoritmo Sensirion Gas Index, eseguito sul microcontrollore, che li trasforma in un Index VOC e un Index NOx su una scala da 1 a 500.

Prima della prima misurazione dopo ogni accensione, il sensore deve essere condizionato per 10 s, periodo in cui l'hotplate dell'elemento NOx viene portato alla temperatura di lavoro. Dopo il condizionamento, i segnali grezzi vengono letti una volta al secondo e ogni valore viene elaborato tramite l'algoritmo Gas Index, che confronta la nuova lettura con la media delle ultime ore di funzionamento e calcola l'index corrispondente. Un Index VOC di 100 significa che l'aria è in media uguale a quella delle ultime 24 h, mentre un Index NOx di 1 indica l'assenza di gas ossidanti.

Cosa ti serve:

Collegamento:

Il modulo si alimenta a 3.3 V, la stessa tensione dell'interfaccia I2C dell'ESP32, quindi il collegamento si fa direttamente, senza convertitore di livello logico. Se testate il sensore con una scheda Arduino UNO, alimentate il modulo dal pin 3.3V della scheda e fate passare le linee SDA e SCL attraverso un convertitore di livello logico bidirezionale, perché i pin I2C dell'UNO lavorano a 5 V.

Pin prodotto Si collega a Ruolo
VCC 3V3 Alimentazione sensore
GND GND Massa comune
SDA GPIO21 Dati I2C
SCL GPIO22 Clock I2C

Collegamento modulo SGP41 a ESP32

Librerie:

Sensirion I2C SGP41, di Sensirion, per la comunicazione con il sensore.

Sensirion Gas Index Algorithm, di Sensirion, per il calcolo dell'Index VOC e dell'Index NOx a partire dai segnali grezzi.

Wire, libreria standard per la comunicazione I2C, inclusa nella scheda di sistema ESP32.

Il codice:

Il programma condiziona il sensore all'avvio, poi legge ogni secondo i segnali grezzi e li visualizza insieme all'Index VOC e all'Index NOx.

/*
  SGP41 VOC and NOx Air Quality Sensor with ESP32
  Board: ESP32 Dev Module
  Wiring:
    SGP41 VCC -> ESP32 3V3
    SGP41 GND -> ESP32 GND
    SGP41 SDA -> ESP32 GPIO21
    SGP41 SCL -> ESP32 GPIO22
  Libraries to install from Library Manager:
    Sensirion I2C SGP41 (Sensirion)
    Sensirion Gas Index Algorithm (Sensirion)
*/
#include <Wire.h>
#include <SensirionI2CSgp41.h>
#include <VOCGasIndexAlgorithm.h>
#include <NOxGasIndexAlgorithm.h>
// I2C pins used on the ESP32 dev board
#define I2C_SDA_PIN 21
#define I2C_SCL_PIN 22
// Default humidity and temperature values used when no external RH/T sensor is connected
// 0x8000 corresponds to 50% RH, 0x6666 corresponds to 25 degC, as defined by Sensirion
const uint16_t defaultRh = 0x8000;
const uint16_t defaultT = 0x6666;
SensirionI2CSgp41 sgp41;
VOCGasIndexAlgorithm vocAlgorithm;
NOxGasIndexAlgorithm noxAlgorithm;
uint16_t error;
char errorMessage[256];
void setup() {
  Serial.begin(115200);
  delay(1000);
  // Start I2C bus on the chosen SDA and SCL pins
  Wire.begin(I2C_SDA_PIN, I2C_SCL_PIN);
  sgp41.begin(Wire);
  Serial.println("SGP41 conditioning, please wait 10 seconds...");
  // Conditioning must run for 10 s before the first raw signal measurement
  uint16_t srawVoc = 0;
  for (int i = 0; i < 10; i++) {
    error = sgp41.executeConditioning(defaultRh, defaultT, srawVoc);
    if (error) {
      Serial.print("Error during conditioning: ");
      Serial.println(error);
    }
    delay(1000);
  }
  Serial.println("Conditioning done, starting measurements.");
}
void loop() {
  uint16_t srawVoc = 0;
  uint16_t srawNox = 0;
  // Read raw VOC and NOx signals once per second
  error = sgp41.measureRawSignals(defaultRh, defaultT, srawVoc, srawNox);
  if (error) {
    Serial.print("Error reading raw signals: ");
    Serial.println(error);
  } else {
    // Convert raw signals into VOC Index and NOx Index using the Gas Index Algorithm
    int32_t vocIndex = vocAlgorithm.process(srawVoc);
    int32_t noxIndex = noxAlgorithm.process(srawNox);
    Serial.print("SRAW_VOC: ");
    Serial.print(srawVoc);
    Serial.print("  SRAW_NOX: ");
    Serial.print(srawNox);
    Serial.print("  VOC Index: ");
    Serial.print(vocIndex);
    Serial.print("  NOx Index: ");
    Serial.println(noxIndex);
  }
  delay(1000);
}

Come funziona il codice:

Nella sezione delle definizioni viene creato l'oggetto sgp41 dalla classe SensirionI2CSgp41, per la comunicazione con il sensore, e gli oggetti vocAlgorithm e noxAlgorithm dalle librerie VOCGasIndexAlgorithm e NOxGasIndexAlgorithm, che ricevono a turno i segnali grezzi e restituiscono gli index. Le costanti defaultRh e defaultT contengono i valori predefiniti di umidità e temperatura usati quando non è presente un sensore esterno di umidità.

Nel setup viene inizializzata la porta seriale, viene avviato il bus I2C con Wire.begin sui pin GPIO21 e GPIO22, viene chiamato sgp41.begin per collegare l'oggetto al bus, poi viene eseguito un ciclo che chiama executeConditioning per 10 iterazioni, una al secondo, come richiesto dal sensore prima della prima misurazione.

Nel loop viene chiamato measureRawSignals una volta al secondo, usando un delay di 1000 ms, vengono prelevati srawVoc e srawNox, e la funzione process di ciascun algoritmo trasforma il segnale grezzo nell'index corrispondente. I risultati vengono visualizzati sul monitor seriale con Serial.print, insieme ai segnali grezzi, per verifica.

Risultato:

Aprite il monitor seriale a 115200 baud. Dopo i 10 s di condizionamento, sullo schermo appare una riga al secondo con i segnali grezzi e con l'Index VOC e l'Index NOx, quest'ultimo avendo bisogno di alcune ore di funzionamento continuo per valori completamente stabili.

SGP41 conditioning, please wait 10 seconds...
Conditioning done, starting measurements.
SRAW_VOC: 24981  SRAW_NOX: 15234  VOC Index: 100  NOx Index: 1
SRAW_VOC: 24975  SRAW_NOX: 15231  VOC Index: 99  NOx Index: 1
SRAW_VOC: 24988  SRAW_NOX: 15229  VOC Index: 101  NOx Index: 1
SRAW_VOC: 25102  SRAW_NOX: 15240  VOC Index: 108  NOx Index: 1
SRAW_VOC: 25310  SRAW_NOX: 15255  VOC Index: 124  NOx Index: 1
SRAW_VOC: 25006  SRAW_NOX: 15233  VOC Index: 102  NOx Index: 1

Problemi frequenti:

Il monitor seriale non mostra nulla: verificate la velocità seriale impostata a 115200 baud in Serial.begin e nel monitor seriale, e verificate di aver selezionato la scheda ESP32 corretta in Arduino IDE.

Il sensore non risponde all'indirizzo 0x59: verificate i fili SDA e SCL, non invertiteli tra loro, e verificate che il modulo sia alimentato a 3.3 V, non a 5 V.

L'Index VOC o l'Index NOx restano bloccati sullo stesso valore per molto tempo: verificate di chiamare measureRawSignals ogni secondo senza interruzioni, perché l'algoritmo Gas Index ha bisogno di un flusso continuo di letture per adattarsi.

L'Index NOx ha valori alti che non scendono: lasciate il sensore in funzione continua per alcune ore, perché la stabilizzazione completa dell'Index NOx dopo l'accensione richiede più tempo rispetto a quella dell'Index VOC.

I valori sembrano anomali rispetto all'ambiente reale: attivate la compensazione dell'umidità, inviando a measureRawSignals valori reali di temperatura e umidità da un sensore esterno, invece dei valori predefiniti.

Limitazioni e consigli:

Il modulo SGP41 offre una stima relativa della qualità dell'aria, non una concentrazione esatta di sostanze, e non deve essere usato come rilevatore di sicurezza per gas tossici o combustibili. Per risultati stabili tenete il sensore in funzionamento continuo, senza spegnimenti ripetuti, ed evitate di montarlo vicino a fonti dirette di calore o correnti d'aria forti. Per una precisione migliore aggiungete un sensore esterno di temperatura e umidità, per esempio SHT40, le cui letture vengano trasmesse al sensore SGP41 per la compensazione. Sulla base di questo montaggio potete costruire un sistema di ventilazione controllata, che avvia automaticamente una ventola o un purificatore d'aria quando l'Index VOC o l'Index NOx superano una soglia stabilita.