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

Display OLED

Arduino Uno

Cavo USB per Arduino UNO

Set di fili Dupont

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:

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:

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

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:

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:

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:

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:

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:

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):

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:

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:

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:
- Fermion MEMS Smoke Sensor GM-202B with Arduino
- Fermion MEMS Odor Sensor GM-512B with Arduino
- Fermion MEMS Carbon Monoxide CO Gas Sensor GM-702B with Arduino
- Fermion MEMS Multi-Gas Sensor MiCS-5524 with Arduino
Se hai domande, sentiti libero di lasciarle nella sezione commenti.
Buon divertimento con il tinkering 😉

