Skip to Content

Sensore di Gas MEMS VOC Fermion GM-502B con Arduino

Sensore di Gas MEMS VOC Fermion GM-502B con Arduino

Il sensore di gas analogico Fermion VOC di DFRobot è un modulo compatto per la rilevazione di composti organici volatili (VOC) progettato per l’integrazione con piattaforme microcontrollore come Arduino ed ESP32.

Utilizza la tecnologia dei sistemi microelettromeccanici (MEMS) per offrire un’alta sensibilità a una gamma di VOC, inclusi etanolo, formaldeide e toluene nell’intervallo approssimativo da 1 a 500 ppm.

In questo tutorial imparerai come misurare le concentrazioni di VOC e attivare un allarme o far lampeggiare un LED se la concentrazione di VOC diventa troppo alta.

Componenti necessari

Ti servirà un sensore di gas Fermion VOC di DFRobot. Per quanto riguarda il microcontrollore, ho usato un Arduino Uno per questo progetto, ma qualsiasi altro Arduino o ESP32 funzionerà altrettanto bene.

Per il nostro sistema di allarme gas avremo bisogno di un LED o di un buzzer, che puoi acquistare su Amazon. Useremo anche un OLED per mostrare i valori misurati dei VOC su un display. Di seguito ho elencato il piccolo OLED SSD1306 128×64 che ho utilizzato.

Sensore di gas MEMS Fermion VOC

Buzzer passivo

Kit resistori & LED

OLED display

Display OLED

Arduino

Arduino Uno

USB Data Sync cable Arduino

Cavo USB per Arduino UNO

Dupont wire set

Set di fili Dupont

Half_breadboard56a

Breadboard

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Hardware del sensore di gas Fermion VOC

Il sensore di gas analogico Fermion VOC di DFRobot è una scheda compatta progettata per rilevare composti organici volatili (VOC), come etanolo, formaldeide, toluene e altri.

Si basa sul chip GM-502B, che utilizza la tecnologia dei sistemi microelettromeccanici (MEMS) per ottenere un formato ridotto con basso consumo energetico e caratteristiche di risposta rapida.

La scheda misura circa 13 mm per 13 mm con uno spessore di circa 2,5 mm. L’immagine sottostante mostra la scheda con il sensore GM-502B in alto e un regolatore di tensione sotto:

Fermion VOC Analog Gas Sensor Board
Scheda sensore di gas analogico Fermion VOC

Il modulo è pensato per la rilevazione qualitativa delle concentrazioni di VOC più che per un’analisi quantitativa precisa. Nota che DFRobot offre anche sensori calibrati ma sono più grandi e costosi (link).

Caratteristiche elettriche e uscita

Il sensore funziona con una tensione di alimentazione da 3,3 V a 5 V, compatibile con i livelli logici della maggior parte delle schede Arduino e ESP32. Quando alimentato, il dispositivo assorbe meno di 20 mA di corrente operativa e genera pochissimo auto-riscaldamento grazie al design MEMS.

La concentrazione di gas è rappresentata da un’uscita di tensione analogica che varia in proporzione alla quantità di VOC rilevata nell’aria circostante. La tensione di uscita è nell’intervallo 0…VCC.

Intervallo di rilevamento e sensibilità

Il sensore può rilevare VOC comuni come etanolo, formaldeide e toluene in un intervallo da 1 ppm a 500 ppm. La sensibilità è quantificata dal rapporto tra la resistenza in aria pulita (R0) e la resistenza in una concentrazione nota di VOC (Rs), con una specifica tipica di R0/Rs ≥ 3 a una concentrazione di etanolo di 50 ppm. Come detto, l’uscita del sensore non è un valore di concentrazione calibrato.

Specifiche ambientali e durata

L’elemento sensibile è progettato per operare in un intervallo di temperatura ambiente da circa -10 °C a +50 °C e umidità relativa dal 15 % al 90 % (senza condensa). Il produttore specifica una durata di almeno cinque anni se il sensore è usato in condizioni atmosferiche normali senza contaminazioni eccessive.

Poiché i sensori VOC rispondono a una vasta classe di gas organici, fattori ambientali come umidità, temperatura e presenza di altri gas possono influenzare l’uscita.

Pinout

Fisicamente, la scheda espone tre pin per la connessione: uscita analogica (A), tensione di alimentazione (VCC) e massa (GND). L’immagine sottostante mostra il pinout della scheda:

Pinout of VOC Analog Gas Sensor Board
Pinout della scheda sensore di gas analogico VOC

Schema elettrico

L’immagine seguente mostra lo schema elettrico della scheda sensore di gas Fermion VOC:

Schema elettrico del sensore di gas analogico Fermion VOC (source)

Si possono vedere il regolatore di tensione e il chip sensore GM-502B con la resistenza di carico da 20K all’uscita VOUT.

Preparazione

Il sensore di gas arriva con una pellicola protettiva che devi rimuovere. Se guardi la parte superiore del sensore, vedrai una pellicola gialla che copre i fori di ingresso dell’aria. Usa una pinzetta per staccare la pellicola. Le foto sottostanti mostrano il sensore con la pellicola protettiva completa, a metà rimozione e completamente rimossa:

Peeling of protective film
Rimozione della pellicola protettiva

Nota che il sensore richiede un periodo di riscaldamento per raggiungere la stabilità operativa. Questo può richiedere diversi minuti al primo utilizzo fino a quando le letture si stabilizzano. Se non hai usato il sensore per molto tempo, è consigliato lasciarlo acceso da 24 a 72 ore:

Preheating times for GM-502B VOC Sensor
Tempi di preriscaldamento per il sensore VOC GM-502B (source)

Specifiche tecniche

La tabella seguente riassume le specifiche tecniche del sensore di gas Fermion VOC:

Parametro Specifiche
Tipo di sensore Sensore di gas VOC basato su MEMS
Gas target Composti organici volatili (es. etanolo, formaldeide, toluene)
Intervallo di rilevamento Circa 1 ppm a 500 ppm
Tipo di uscita Uscita di tensione analogica
Tensione di funzionamento 3,3 V a 5 V DC
Corrente di funzionamento < 20 mA
Resistenza di carico (RL) 20 kΩ (a bordo)
Temperatura di funzionamento -10 °C a +50 °C
Umidità di funzionamento 15 % a 90 % UR (senza condensa)
Caratteristica di risposta La tensione di uscita aumenta con l’aumentare della concentrazione di VOC
Tempo di riscaldamento Diversi minuti (stabilizzazione iniziale richiesta)
Durata prevista ≥ 5 anni (in condizioni normali)
Dimensioni Circa 13 mm × 13 mm × 2,5 mm (elemento sensore)
Pin di interfaccia VCC, GND, uscita analogica

Ecco un link al datasheet del GM-502B con ulteriori dati tecnici:

Sensore di gas Fermion VOC vs sensore di gas MQ-135

Un’alternativa comune al sensore Fermion VOC è il più vecchio sensore MQ-135 MQ-135. Di seguito un breve confronto tra i due sensori.

Tecnologia di rilevamento e principio

Il sensore Fermion VOC utilizza la tecnologia MEMS (sistemi microelettromeccanici) che risponde ai composti organici volatili cambiando la resistenza interna e producendo una tensione analogica proporzionale. Il suo design è ottimizzato per basso consumo, dimensioni compatte e rilevazione qualitativa di VOC nell’intervallo 1–500 ppm, con minimo auto-riscaldamento e rapida ripresa.

Al contrario, il MQ-135 è un sensore a semiconduttore a ossido metallico (MOS) che incorpora uno strato sensibile riscaldato di biossido di stagno (SnO₂). Il sensore mostra una sensibilità incrociata ampia a gas come ammoniaca, benzene, composti legati al CO₂ e fumo. I sensori MOS come il MQ-135 hanno un consumo molto più elevato e richiedono un periodo di riscaldamento più lungo prima che le letture si stabilizzino.

Condizioni operative e consumo energetico

Il sensore Fermion VOC funziona da 3,3 V a 5 V con corrente molto bassa (< 20 mA), rendendolo adatto a sistemi embedded a basso consumo e monitoraggio continuo senza riscaldatore separato.

Il MQ-135, invece, normalmente funziona a circa 5 V e utilizza una corrente significativa per il riscaldatore (spesso ~100–200 mA o più), aumentando il consumo complessivo.

Gas target e sensibilità

Entrambi i sensori rispondono ai VOC, ma il Fermion è specificamente tarato per rilevare VOC tipici indoor come etanolo, formaldeide e toluene, e può fornire una risposta analogica relativamente coerente nel suo intervallo specificato.

Il MQ-135, invece, ha una sensibilità ampia a molti gas inclusi ammoniaca, fumo e vari inquinanti atmosferici; questo può essere un vantaggio per indicazioni generali sulla qualità dell’aria, ma la mancanza di selettività rende difficile distinguere un gas dall’altro o calibrare per concentrazioni precise.

Calibrazione e stabilità

I sensori basati su MEMS come il Fermion tendono a stabilizzarsi più rapidamente, con un tempo minimo di “burn-in”, e sono meno influenzati dalla temperatura ambiente perché non dipendono da una camera riscaldata.

I sensori MQ-135 di solito richiedono un pre-burn-in (spesso 24–48 ore) e una ricalibrazione regolare per risultati stabili, e le loro letture sono fortemente influenzate da temperatura e umidità.

Collegamento del sensore di gas VOC ad Arduino UNO

Collegare il sensore a un Arduino UNO è semplice. Collega VCC a 5V (o 3,3V), GND a massa e A all’ingresso analogico A0 come mostrato di seguito:

Connecting VOC Gas Sensor to Arduino UNO
Collegamento del sensore di gas VOC ad Arduino UNO

Esempi di codice

Lettura della concentrazione di gas

In questo primo esempio leggiamo semplicemente i valori misurati dal sensore di gas e li stampiamo sul Monitor Seriale:

void setup() {
  Serial.begin(9600);
}

void loop() {
  int val = analogRead(A0);
  Serial.println(val);
  delay(100);
}

Vedrai valori tra 0 e 1023, a seconda della quantità di gas VOC nell’ambiente.

Se il sensore non si è completamente riscaldato, vedrai una sequenza di valori in diminuzione continua sul Monitor Seriale:

Dopo diversi minuti le misurazioni si stabilizzeranno. Nel mio caso intorno al valore 643:

Se poi esponi il sensore a un profumo o a un altro gas VOC, vedrai un improvviso aumento del valore misurato:

Poiché il sensore non è calibrato, non puoi usarlo per misurare concentrazioni reali in ppm (parti per milione) o mg/m 3 di gas VOC. Tuttavia, puoi usarlo per costruire un allarme gas, come faremo nella sezione successiva.

Allarme gas con LED

Il codice seguente implementa un semplice allarme gas. Accende un LED se il valore VOC misurato supera una soglia predefinita di 700:

byte sensorPin = A0;
byte ledPin = 13;
int threshold = 700;

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  int val = analogRead(sensorPin);
  digitalWrite(ledPin, val > threshold ? HIGH: LOW);
  delay(100);
}

Ho collegato il LED con una resistenza da 220 Ohm al GPIO 13 come LED di allarme, come mostrato di seguito:

Connecting alarm LED to Arduino Uno
Collegamento del LED di allarme ad Arduino UNO

Nota che per un sistema di allarme affidabile potresti voler aggiungere anche un sensore di temperatura e uno di umidità, poiché le letture del sensore di gas sono influenzate da temperatura e umidità. La figura sottostante mostra la dipendenza della resistenza del sensore, proporzionale alla tensione letta dall’Arduino, dall’umidità relativa:

Typical temperature/humidity characteristics
Caratteristiche tipiche temperatura/umidità (source)

Allarme gas con buzzer passivo

Invece di un LED puoi anche attivare un buzzer come segnale di allarme. Nel codice seguente un buzzer passivo si attiva se il valore VOC misurato supera la soglia:

byte sensorPin = A0;
byte buzzerPin = 11;
int threshold = 700;

void setup() {
  pinMode(buzzerPin, OUTPUT);
}

void loop() {
  int val = analogRead(sensorPin);
  if (val > threshold) {
     tone(buzzerPin, 500);
  } else {
    noTone(buzzerPin);
  }
  delay(100);
}

L’immagine seguente mostra come aggiungere il buzzer al circuito. Inizia collegando il terminale negativo del buzzer al GND dell’Arduino (filo nero). Poi collega il terminale positivo tramite una resistenza da 100Ω al GPIO 11 (filo rosso):

Connecting alarm buzzer to Arduino UNO
Collegamento del buzzer di allarme ad Arduino UNO

Assicurati che la polarità del buzzer sia corretta e che sia un buzzer passivo collegato a un pin GPIO con PWM. Per maggiori informazioni vedi il tutorial Active and Passive Piezo Buzzers with Arduino.

Se hai un buzzer attivo, devi usare il codice dell’allarme LED precedente, poiché non funzionerà correttamente con il comando tone().

Visualizzare la concentrazione di VOC su OLED

In quest’ultimo esempio mostriamo i valori VOC misurati su un piccolo OLED. Il codice stampa “VOC” e il valore al centro del display e aggiorna il valore mostrato ogni 100 ms:

#include "Adafruit_SSD1306.h"  // Version 2.5.16

Adafruit_SSD1306 oled(128, 64, &Wire, -1);

void setup() {
  oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  oled.setTextColor(WHITE, BLACK);
  oled.clearDisplay();
}

void loop() {
  static char text[30];

  int val = analogRead(A0);

  oled.setTextSize(2);
  oled.setCursor(45, 10);  
  oled.print("VOC");

  sprintf(text, " %d ", val);
  oled.setTextSize(2);
  oled.setCursor(35, 40);
  oled.print(text);

  oled.display();

  delay(100);
}

Nota che dovrai installare la libreria Adafruit_SSD1306 per controllare l’OLED. Puoi installarla tramite il Library Manager come al solito:

Adafruit_SSD1306 library installed in Library Manager
Libreria Adafruit_SSD1306 installata nel Library Manager

Collegare l’OLED all’Arduino è semplice. Collega SDA e SCL dell’OLED ai pin A4 e A5 dell’Arduino. Per l’alimentazione: poiché l’OLED può funzionare a 5V, possiamo condividere le linee di alimentazione. Collega VCC a 5V e GND a GND. L’immagine sottostante mostra il cablaggio completo:

Connecting OLED to Arduino Uno
Collegamento dell’OLED ad Arduino UNO

Se hai bisogno di aiuto con l’OLED, dai un’occhiata al tutorial Use SSD1306 I2C OLED Display With Arduino.

Conclusione

In questo tutorial hai imparato come usare il sensore di gas Fermion VOC con un Arduino UNO per misurare i gas composti organici volatili (VOC). Il sensore può essere facilmente usato anche con altri microcontrollori come l’ESP32.

I sensori di gas MEMS hanno il vantaggio di essere piccoli, consumare pochissima energia (< 20mA) e avere un breve tempo di riscaldamento. Tuttavia, sono comunque influenzati da temperatura e umidità ambientale.

Inoltre, il sensore di gas Fermion VOC usato qui non è calibrato e quindi non può essere usato direttamente per misurare concentrazioni reali di VOC in unità ppm, per esempio. In teoria potresti calibrare il sensore da solo, ma in pratica sarebbe difficile. DFRobot offre anche sensori calibrati ma sono più grandi e costosi (link).

Nota che esiste un’intera serie di diversi sensori MEMS disponibili. Per una panoramica vedi l’articolo Review of the DFRobot Fermion MEMS Gas Sensor Series e per dettagli i nostri post dedicati:

Se hai domande, sentiti libero di lasciarle nella sezione commenti.

Buon divertimento con il tinkering 😉