In questo articolo impareremo come utilizzare il sensore di gas MQ-2 con un Arduino per visualizzare i livelli di gas su un display OLED. Il sensore di gas MQ-2 è un sensore universale in grado di rilevare vari gas come metano, butano, propano, alcol, fumo e altro. Collegando il sensore MQ-2 a un Arduino e visualizzando i livelli di gas su un display OLED, possiamo monitorare facilmente i livelli di gas nell’ambiente circostante.
Nelle sezioni seguenti discuteremo i componenti necessari per questo progetto, forniremo un’introduzione al sensore MQ-2, spiegheremo come collegare i componenti e ti guideremo nella scrittura del codice Arduino. Infine, concluderemo riassumendo i punti chiave e rispondendo ad alcune domande frequenti.
Se sei interessato a costruire un sistema di monitoraggio dei livelli di gas utilizzando il sensore universale MQ-2 e Arduino, continua a leggere!
Componenti necessari
Di seguito trovi i componenti necessari per questo progetto. Se hai già un set di resistori e qualche LED, non avrai bisogno del kit suggerito. Per questo progetto specifico servono solo un singolo LED rosso e una resistenza da 220 Ohm.

Arduino Uno

Set di fili Dupont

Breadboard

Cavo USB per Arduino UNO

Display OLED

Sensore di gas MQ-2
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.
Introduzione al MQ-2
Il MQ-2 è un sensore di gas abbastanza universale che può rilevare vari gas come metano, propano, butano, alcol, fumo e altro. Ha un’alta sensibilità e un tempo di risposta rapido.
A differenza del MQ-2, gli altri sensori della serie MQ sono ottimizzati per rilevare tipi specifici di gas. Per esempio:
- MQ-3: Progettato principalmente per il rilevamento di alcol.
- MQ-4: Progettato principalmente per il rilevamento di metano e gas naturale.
- MQ-5: Progettato per GPL e gas naturale.
- MQ-6: Progettato specificamente per il rilevamento di GPL.
- MQ-7: Focalizzato sul rilevamento di monossido di carbonio (CO).
- MQ-8: Principalmente per il rilevamento di idrogeno.
- MQ-9: Rileva monossido di carbonio (CO) e gas infiammabili.
Nota che abbiamo tutorial per alcuni di questi sensori:
- How to use the MQ-2 Gas Sensor with Arduino and an OLED
- Air Pollution Monitoring and Alert System Using Arduino and mq135
- MQ3 Sensor & Arduino: Building An Alcohol Detector
- Using the MQ4 Methane Gas Sensor With Arduino Made Easy
Specifiche tecniche del sensore di gas MQ-2
Di seguito trovi le specifiche tecniche del sensore di gas MQ-2:
- Tensione di funzionamento: 5V DC
- Tensione del riscaldatore: 5V DC
- Consumo energetico: Circa 150mA
- Resistenza di rilevamento: da 2KΩ a 20KΩ in aria pulita
- Sensibilità: Regolabile tramite un potenziometro
- Tempo di preriscaldamento: Circa 48 ore
- Tempo di risposta: Meno di 10 secondi
- Tempo di recupero: Meno di 30 secondi
- Temperatura di funzionamento: da -10°C a 50°C
- Umidità di funzionamento: 95% RH (non condensante)
Nota che queste specifiche possono variare leggermente a seconda del produttore e della versione del sensore MQ-2.
Interni del sensore di gas MQ-2
In questa sezione esaminiamo il funzionamento interno del sensore MQ-2. Il sensore utilizza uno strato composto da ossido metallico (SnO2). Quando il gas entra in contatto con questo strato, reagisce con l’ossigeno presente sulla superficie dello SnO2. Questo provoca una variazione della resistenza.
L’immagine sottostante è tratta dal MQ-2 Datasheet sensore e mostra i suoi componenti e il circuito interno.
Se guardi attentamente puoi vedere che lo strato sensibile (1) è avvolto da una bobina riscaldante (4). Essa fornisce il calore necessario per la reazione chimica del gas con lo SnO2. L’elemento riscaldante è il motivo per cui sentirai che il sensore si riscalda durante il funzionamento.
Intorno allo strato sensibile e alla bobina riscaldante c’è un tubo ceramico (5) per la protezione fisica e l’isolamento termico. La rete superiore (6) assicura che il gas non esploda a causa del riscaldatore.
Infine, ci sono gli elettrodi (2, 3), fatti di oro (Au) e platino (Pt). Sono collegati allo strato sensibile. Gli elettrodi misurano le variazioni di resistenza dello strato sensibile.
Caratteristiche di sensibilità del sensore di gas MQ-2
Il sensore di gas MQ-2 è progettato per rilevare gas come GPL (gas di petrolio liquefatto), metano (CH4), propano, alcol, idrogeno (H2), fumo e monossido di carbonio (CO). Come si vede nel diagramma sottostante, la sua sensibilità è abbastanza uniforme tra questi gas (stessa pendenza).
La sensibilità del sensore si riferisce al rapporto (Rs/Ro) tra la resistenza del sensore in vari gas e la resistenza del sensore in aria pulita. Si può notare che più gas è presente (ppm più alto), minore è la resistenza.
Dipendenza da umidità e temperatura del sensore di gas MQ-2
Nota però che il sensore MQ-2 è influenzato dall’umidità e dalla temperatura ambientale. Il grafico seguente mostra la variazione della resistenza in funzione della temperatura e dell’umidità ambientale.
L’umidità può influenzare le prestazioni del sensore, principalmente perché il vapore acqueo può occupare i siti attivi sullo strato sensibile di biossido di stagno (SnO2) dove avvengono le reazioni di rilevamento del gas.
La temperatura è un altro fattore da considerare quando si usa il sensore MQ-2. Il sensore include un riscaldatore integrato per mantenere la temperatura necessaria allo strato sensibile SnO2. Tuttavia, la temperatura ambientale può comunque influenzare le letture del sensore.
Se hai bisogno di letture accurate e stabili, potresti dover utilizzare sensori aggiuntivi di temperatura e umidità per compensare queste dipendenze. Nota anche che il MQ-2 deve riscaldarsi per almeno 20 secondi prima che le letture diventino stabili e affidabili.
Pinout del sensore di gas MQ-2
Invece di usare il sensore MQ-2 grezzo, è più semplice utilizzare uno dei moduli MQ-2, come quello elencato sopra. Questi moduli hanno quattro pin per un facile collegamento con il microcontrollore. Il pin VCC è per l’alimentazione a 5V e il pin GND deve essere collegato a massa. Il pin A0 fornisce un’uscita analogica proporzionale alla concentrazione di gas. Il pin D0 fornisce un segnale digitale (HIGH o LOW).

Sul retro del modulo si trova un trimmer per regolare la soglia di commutazione per D0. Qui si trova anche un LED di alimentazione (rosso) che si accende quando il modulo è alimentato. Inoltre, c’è un LED di rilevamento (verde) che si accende quando viene rilevato gas (D0=HIGH) sopra la soglia impostata dal trimmer.

Test del sensore di gas MQ-2
Puoi facilmente testare il funzionamento del modulo anche senza un Arduino. Collega VCC e GND a un’alimentazione da 5V e il LED rosso di alimentazione sul retro del modulo dovrebbe accendersi. Ora aspetta qualche secondo (per letture stabili >20 secondi). Noterai che il modulo sensore si riscalda leggermente a causa dell’elemento riscaldante.

Se spruzzi un po’ di alcol (detergente per schermi, profumo, …) davanti al sensore, il LED verde di rilevamento si accenderà. In caso contrario, regola il trimmer sul retro del modulo. Puoi anche provare il gas di un accendino.
Nella sezione successiva vedremo come collegare il sensore di gas MQ-2 all’Arduino e scrivere il codice necessario per iniziare a rilevare il gas metano.
Collegamento dei componenti
In questa sezione collegheremo il sensore MQ-2 e il display OLED. Per prima cosa, colleghiamo l’alimentazione dall’Arduino alle linee di alimentazione della breadboard (filo rosso e blu dai pin 5V e GND). Poi colleghiamo l’alimentazione dalle linee di alimentazione al sensore MQ-2 e al display OLED (fili rossi e blu).

Ma attenzione! Esistono due versioni del display OLED SDD1306 128×64, con i pin VCC e GND invertiti! Assicurati di collegare VCC a +5V (o +3V3, che funziona altrettanto bene). Se ti servono più dettagli su come collegare e usare l’OLED, dai un’occhiata al nostro tutorial su How to Interface the SSD1306 I2C OLED Graphic Display.
Dopodiché collega l’uscita analogica A0 del sensore MQ-2 all’ingresso analogico A0 dell’Arduino (filo giallo). Infine, dobbiamo collegare i pin I2C SCL e SDA agli ingressi A5 e A4 dell’Arduino (fili viola e verde, SCL->A5, SDA->A4).
Così si completa il collegamento dei componenti. Se ti servono più dettagli riguardo al cablaggio, dai un’occhiata alla tabella qui sotto.
| Da | Pin | Colore filo | A | Pin |
| Arduino | 5V | Rosso | Breadboard | Linea positiva |
| Arduino | GND | Blu | Breadboard | Linea negativa |
| MQ-2 | GND | Blu | Breadboard | Linea negativa |
| MQ-2 | VCC | Rosso | Breadboard | Linea positiva |
| MQ-2 | Out/Signal/A0 | Giallo | Arduino | A0 |
| OLED | VCC | Rosso | Breadboard | Linea positiva |
| OLED | GND | Blu | Breadboard | Linea negativa |
| OLED | SCL | Viola | Arduino | A5 |
| OLED | SDA | Verde | Arduino | A4 |
Nella sezione successiva scriveremo il codice per visualizzare i livelli di gas misurati sul display OLED.
Scrivere il codice Arduino
Il codice qui sotto legge i dati da un sensore MQ-2 e visualizza il valore del sensore su un display OLED. Funziona in modo continuo, aggiornando il display ogni secondo con un nuovo valore.
#include "Wire.h"
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(115200);
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println("Can't find display!");
for(;;);
}
delay(100);
display.setTextSize(5);
display.setTextColor(WHITE);
}
void loop() {
int sensorValue = analogRead(A0);
Serial.print("Gas:");
Serial.println(sensorValue);
display.clearDisplay();
display.setCursor(20, 16);
display.println(sensorValue);
display.display();
delay(1000);
}
Per capire meglio il codice, diamo un’occhiata alle sue parti. Iniziamo con le librerie e le costanti.
Librerie e costanti
Per prima cosa includiamo le librerie necessarie per la comunicazione I2C con il display OLED.
#include "Wire.h" #include "Adafruit_GFX.h" #include "Adafruit_SSD1306.h"
Dopodiché definiamo le costanti per la larghezza, altezza dello schermo e l’indirizzo I2C.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define SCREEN_ADDRESS 0x3C
Fai attenzione quando cerchi l’indirizzo I2C del tuo display. Tipicamente l’indirizzo è 0x3C. Se sei fortunato, vedrai questo indirizzo sul retro del modulo OLED (immagine a sinistra sotto). Puoi cambiare l’indirizzo saldando la resistenza sulla seconda posizione.
Ci sono altri moduli OLED comuni che mostrano l’indirizzo I2C come 0x78 sul retro (immagine a destra). Questo è fuorviante (è l’indirizzo a 8 bit, mentre serve quello a 7 bit). L’indirizzo I2C per questi display è anch’esso 0x3C ! Non farti ingannare dall’etichetta sul retro.

Se non riesci a farlo funzionare e devi trovare l’indirizzo I2C, puoi installare la I2CScanner libreria per farlo. Ecco il code per eseguire una scansione. Assicurati però che il display sia correttamente cablato e alimentato.
#include "I2CScanner.h"
I2CScanner scanner;
void setup() {
Serial.begin(9600);
while (!Serial) {};
scanner.Init();
}
void loop() {
scanner.Scan();
delay(5000);
}
Oggetto display
In questa riga creiamo l’oggetto display usando le costanti definite sopra.
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
Configurazione del display
Nella funzione setup() inizializziamo la comunicazione seriale e avviamo il display OLED. Se il display non viene trovato, stampiamo un messaggio di errore ed entriamo in un ciclo infinito.
void setup() {
Serial.begin(115200);
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println("Can't find display!");
for(;;);
}
delay(100);
display.setTextSize(5);
display.setTextColor(WHITE);
}
Altrimenti, aspettiamo un breve periodo (100ms). Poi impostiamo la dimensione del testo a 5 e il colore del testo a bianco. Una dimensione di testo 5 riempirà bene il display.
Lettura dati e visualizzazione
Nella funzione loop() leggiamo prima il valore analogico dal pin A0, collegato al sensore MQ-2. Poi stampiamo il valore del livello di gas sul monitor seriale.
int sensorValue = analogRead(A0);
Serial.print("Gas:");
Serial.println(sensorValue);
Successivamente, puliamo il display OLED, impostiamo la posizione del cursore a (20, 16), che stamperà il valore del sensore MQ-2 più o meno al centro del display. Dopo di che stampiamo il valore sul display. Tuttavia, il valore non apparirà finché non aggiorniamo il display chiamando display.display().
display.clearDisplay(); display.setCursor(20, 16); display.println(sensorValue); display.display(); delay(1000);
Infine, aggiungiamo un ritardo di 1 secondo prima di ripetere il ciclo.
Esempio di output
Se esegui questo codice e guardi il Serial Plotter, dovresti vedere un picco apparire se esponi il sensore MQ-2 a qualche gas (profumo, detergente per schermi, accendino) o fumo. L’immagine sotto mostra la risposta del sensore dopo l’esposizione ai fumi di alcol isopropilico (detergente per schermi).

Ecco fatto. Ora puoi monitorare i livelli di gas e costruire un sistema di allarme gas!
Conclusione
In questo tutorial abbiamo imparato come usare il sensore universale di gas MQ-2 con Arduino. Abbiamo iniziato presentando i componenti necessari per questo progetto, che includono una scheda Arduino, il sensore MQ-2, un display OLED e qualche filo jumper.
Successivamente abbiamo discusso in dettaglio il sensore MQ-2, spiegandone il funzionamento e i gas che può rilevare.
Poi siamo passati all’aspetto pratico del progetto e ti abbiamo mostrato come collegare il sensore MQ-2 alla scheda Arduino. Abbiamo fornito uno schema di cablaggio chiaro e spiegato lo scopo di ogni collegamento.
Per far funzionare il sensore, abbiamo scritto un semplice codice Arduino che legge l’uscita analogica dal sensore MQ-2 e la visualizza su un display OLED. Abbiamo spiegato il codice passo dopo passo, rendendolo facile da comprendere.
In conclusione, il sensore universale di gas MQ-2 è un’opzione versatile e conveniente per rilevare vari gas. Con l’aiuto di una scheda Arduino, puoi facilmente integrare questo sensore nei tuoi progetti e creare sistemi di monitoraggio dei gas.
Speriamo che questo tutorial ti sia stato utile per iniziare a usare il sensore MQ-2. Se hai altre domande o hai bisogno di ulteriore assistenza, consulta la sezione Domande Frequenti o lascia un commento.
Buon divertimento con il sensore universale di gas MQ-2 e Arduino!
Domande Frequenti
Ecco alcune domande comuni sull’uso del sensore di gas MQ-2 con Arduino:
D: Come funziona il sensore di gas MQ-2?
Il sensore di gas MQ-2 funziona sul principio della conducibilità del gas. Contiene un elemento sensibile fatto di biossido di stagno (SnO2) che reagisce con il gas. Quando il gas è presente, la conducibilità dell’elemento sensibile aumenta, cosa che può essere misurata dall’Arduino.
D: Quanto è preciso il sensore di gas MQ-2?
La precisione del sensore MQ-2 può variare a seconda di vari fattori come la calibrazione, le condizioni ambientali e la concentrazione del gas rilevato.
D: Come posso calibrare il sensore MQ-2?
Per calibrare il sensore MQ-2, devi esporlo a una concentrazione nota di gas. Il datasheet dice:
Raccomandiamo di calibrare il rilevatore per 1000 ppm di gas di petrolio liquefatto, o 1000 ppm di concentrazione di iso-butano nell’aria e di usare un valore di resistenza di carico (RL) di circa 20 KΩ (da 5KΩ a 47 KΩ).
D: Posso usare il sensore MQ-2 per applicazioni di sicurezza?
Sebbene il sensore MQ-2 possa rilevare gas infiammabili, non è certificato per applicazioni di sicurezza. È principalmente destinato a scopi educativi, di ricerca e prototipazione.
D: Posso usare il sensore MQ-2 con ESP32?
Sì, il sensore MQ-2 può essere usato anche con ESP32. Il cablaggio e il codice saranno simili a quelli usati con Arduino. Tuttavia, assicurati di controllare i livelli di tensione e la compatibilità dei pin tra il sensore e la scheda ESP32.
D: Posso alimentare il sistema di rilevamento gas con batterie?
È possibile, ma richiede batterie piuttosto grandi e non lo consiglierei. Il sensore MQ-2 consuma circa 150mA e deve riscaldarsi per almeno 30 secondi per fornire letture affidabili.
D: Qual è la durata tipica del sensore MQ-2?
La durata del sensore MQ-2 può variare in base all’uso e alle condizioni ambientali. In media, può durare diversi anni con una corretta manutenzione.
D: Posso usare il sensore MQ-2 in ambienti esterni?
Il sensore MQ-2 non è progettato per l’uso all’aperto. Si consiglia di usarlo in ambienti interni dove può fornire un rilevamento accurato dei gas.
Consulta il MQ-2 Datasheet per informazioni e specifiche più dettagliate.
Link
Ecco alcuni altri link utili riguardanti il sensore MQ-2 e come usarlo con Arduino.
- Arduino Smoke Detector with MQ-2 Gas/ Smoke sensor
- Guide for MQ-2 Gas/Smoke Sensor with Arduino
- Arduino MQ-2 Gas Sensor Tutorial




