Sensore di gas MQ-2: allarme gas e fumo con Arduino
Come funziona il sensore di gas MQ-2? Rilevare GPL, metano e fumo, pin del modulo, preriscaldamento, lettura analogica e digitale, calibrazione di R0, la famiglia MQ e allarmi gas con ESP32 e Pico.
L'MQ-2 è un sensore di gas economico e molto diffuso che rileva gas combustibili e fumo nell'aria. Reagisce a GPL (gas in bombola), propano, butano, metano (gas naturale), idrogeno, vapori di alcol e fumo. Nei progetti con Arduino si usa per costruire allarmi gas per la cucina, rilevatori di fumo e indicatori della qualità dell'aria. In questo articolo vedrai passo passo cosa c'è dentro il sensore, come collegarlo correttamente, perché il preriscaldamento è indispensabile e come interpretare i valori letti.

Come funziona l'MQ-2?
Sotto la rete metallica ci sono un piccolo elemento ceramico rivestito di biossido di stagno (SnO₂) e un filo riscaldatore che lo porta ad alcune centinaia di gradi. In aria pulita la resistenza dell'elemento è alta. Quando arriva un gas combustibile o del fumo, una reazione chimica sulla superficie abbassa la resistenza; più il gas è denso, più la resistenza scende. Il modulo trasforma questa variazione di resistenza in tensione con un partitore: più gas c'è, più sale la tensione sul pin AO.
| Caratteristica | Valore |
|---|---|
| Tensione di alimentazione | 5 V |
| Corrente del riscaldatore | ~150 mA (al massimo 800 mW) |
| Gas rilevati | GPL, propano, butano, metano, idrogeno, alcol, fumo |
| Campo di misura | 300–10.000 ppm |
| Preriscaldamento | Alcuni minuti a ogni accensione, 24–48 ore al primo utilizzo |
| Uscite | AO (analogica), DO (digitale, comparatore LM393) |
Pin del modulo e collegamento
Il sensore MQ-2 nudo ha 6 piedini, ma nei progetti di solito si usa un modulo già pronto. Sul modulo ci sono la resistenza di carico, un comparatore LM393, un piccolo potenziometro per regolare la soglia, un LED di alimentazione e un LED di allarme. Il pin AO fornisce una tensione proporzionale alla concentrazione di gas, mentre il pin DO cambia stato quando il livello di gas supera la soglia impostata con il potenziometro.
| Pin del modulo | Funzione | Arduino Uno |
|---|---|---|
| VCC | Alimentazione (riscaldatore compreso) | 5V |
| GND | Massa | GND |
| AO | Uscita analogica, sale con il gas | A0 |
| DO | Uscita digitale, LOW quando si supera la soglia | D2 |

Perché il preriscaldamento è importante?
L'elemento sensibile risponde correttamente solo quando raggiunge la sua temperatura di lavoro. Nei primi minuti dopo l'accensione il valore di AO parte alto, poi scende lentamente fino a stabilizzarsi; le misure prese in questo periodo sono ingannevoli. Per questo è buona abitudine saltare il controllo dell'allarme nel codice per i primi 1–3 minuti. Se usi un sensore nuovo per la prima volta, si consiglia di farlo funzionare ininterrottamente per 24–48 ore (rodaggio, o burn-in) per ottenere valori stabili. Mentre il riscaldatore è acceso, la rete metallica diventa piuttosto calda; è normale, ma non mettere materiali infiammabili vicino al sensore.
Allarme gas e fumo con Arduino
Il codice qui sotto legge il valore analogico, lo scrive nel Monitor seriale e controlla anche il pin DO. Se il valore analogico supera la soglia o il pin DO va a LOW, suona un buzzer:
1const int AO_PIN = A0;
2const int DO_PIN = 2;
3const int BUZZER = 8;
4const int LIMIT = 400; // analog eşik (0–1023) / analog threshold
5
6void setup() {
7 Serial.begin(9600);
8 pinMode(DO_PIN, INPUT);
9 pinMode(BUZZER, OUTPUT);
10 delay(60000); // 1 dk ön ısıtma / 1 min warm-up
11}
12
13void loop() {
14 int value = analogRead(AO_PIN);
15 bool gas = digitalRead(DO_PIN) == LOW; // çoğu modülde LOW = gaz / LOW = gas on most modules
16
17 Serial.println(value);
18
19 if (value > LIMIT || gas) {
20 tone(BUZZER, 2000, 300); // alarm sesi / alarm tone
21 }
22 delay(500);
23}Il valore 400 non è una regola fissa: il valore in aria pulita può variare tra 100 e 300 a seconda del sensore, della temperatura e dell'umidità. Prima fai funzionare il sensore per qualche minuto, guarda nel Monitor seriale il valore in aria pulita e metti la soglia nettamente più in alto. Per provarlo basta avvicinare per un attimo al sensore il gas di un accendino, senza accenderlo; il valore sale in pochi secondi.
Dal valore analogico ai ppm: calibrazione di R0
Sul modulo il sensore forma un partitore di tensione con una resistenza di carico (RL, 1 kΩ nella maggior parte dei moduli). Dalla tensione di AO puoi calcolare la resistenza del sensore (Rs). I grafici del datasheet non riportano la concentrazione di gas in funzione di Rs direttamente, ma del rapporto Rs/R0; R0 è la resistenza del sensore in 1000 ppm di idrogeno, e in aria pulita Rs/R0 vale circa 9,8. Quindi trovi R0 misurando il sensore in aria pulita e dividendo per 9,8:
1const float RL = 1.0; // yük direnci (kΩ) / load resistor (kΩ)
2const float CLEAN_AIR = 9.8; // temiz havada Rs/R0 / Rs/R0 in clean air
3float R0;
4
5float readRs() {
6 float v = analogRead(A0) * 5.0 / 1023.0;
7 if (v < 0.01) v = 0.01; // sıfıra bölmeyi önle / avoid dividing by zero
8 return RL * (5.0 - v) / v; // bölücüden Rs / Rs from the divider
9}
10
11void setup() {
12 Serial.begin(9600);
13 delay(60000); // ön ısıtma / warm-up
14 float sum = 0;
15 for (int i = 0; i < 50; i++) {
16 sum += readRs();
17 delay(100);
18 }
19 R0 = (sum / 50) / CLEAN_AIR; // temiz havada kalibrasyon / clean-air calibration
20}
21
22void loop() {
23 float ratio = readRs() / R0; // gaz arttıkça küçülür / falls as gas rises
24 Serial.println(ratio);
25 delay(1000);
26}Se il rapporto è intorno a 9,8 l'aria è pulita; se scende sotto 1 la concentrazione di gas è alta. Per convertire questo rapporto in ppm si usano le curve logaritmiche del datasheet; librerie come MQUnifiedsensor le includono già. Considera comunque il risultato come un'approssimazione: temperatura, umidità ed età del sensore influenzano la misura, e poiché l'MQ-2 reagisce a molti gas contemporaneamente, non può distinguere con certezza quale gas sta misurando. Aggiungere un DHT11 per controllare temperatura e umidità è una buona idea.
La famiglia di sensori MQ: quale scegliere?
| Sensore | Più sensibile a | Uso tipico |
|---|---|---|
| MQ-2 | GPL, propano, metano, idrogeno, fumo | Allarme generico gas e fumo |
| MQ-3 | Alcol | Etilometro |
| MQ-4 | Metano (gas naturale) | Allarme fughe di gas naturale |
| MQ-5 | GPL, gas naturale | Allarme gas per la cucina |
| MQ-7 | Monossido di carbonio (CO) | Monitoraggio del CO (serve il ciclo del riscaldatore) |
| MQ-9 | CO e gas combustibili | Vicino a stufe e caldaie |
| MQ-135 | Ammoniaca, benzene, fumo, NOx | Qualità dell'aria interna |
L'MQ-2 con ESP32 e Raspberry Pi Pico
Il riscaldatore dell'MQ-2 richiede 5 V, quindi collega il pin VCC del modulo al pin VIN (5V) dell'ESP32. Però, quando il modulo è alimentato a 5 V, l'uscita AO può arrivare a 5 V, mentre gli ingressi analogici di ESP32 e Pico accettano al massimo 3,3 V. Metti tra AO e il pin analogico un partitore con resistenze da 10 kΩ e 20 kΩ per portare il segnale a un livello sicuro. Con l'ESP32 è facilissimo inviare una notifica al telefono quando viene rilevato del gas, oppure azionare una ventola tramite un relè. Sul Raspberry Pi Pico lo stesso allarme in MicroPython è così:
1from machine import ADC, Pin
2import time
3
4gas = ADC(26) # GP26 (ADC0), AO bölücü üzerinden / AO through a divider
5buzzer = Pin(15, Pin.OUT)
6LIMIT = 30000 # 0–65535 arası eşik / threshold
7
8time.sleep(60) # ön ısıtma / warm-up
9while True:
10 value = gas.read_u16()
11 print(value)
12 buzzer.value(1 if value > LIMIT else 0)
13 time.sleep(0.5)Idee di progetti con l'MQ-2
- Allarme gas per la cucina: un allarme che fa suonare un buzzer e accende un LED rosso in caso di fuga dalla bombola o dalla rete del gas.
- Rilevatore di fumo: un sistema che avvisa in laboratorio se rileva fumi di saldatura o odore di bruciato.
- Ventilazione automatica: un circuito che accende un aspiratore tramite un relè quando il livello di gas sale.
- Allarme fiamma e gas: abbina l'MQ-2 a un sensore di fiamma per controllare entrambi i pericoli insieme.
- Rilevatore ESP32 con notifiche: invia un messaggio Telegram al telefono quando viene rilevato del gas.
- Indicatore della qualità dell'aria: mostra il rapporto misurato come grafico su un display OLED.
Errori comuni e come risolverli
- Va in allarme appena acceso: il sensore non si è ancora scaldato; salta il controllo dell'allarme per i primi 1–3 minuti.
- Il valore non cambia mai: all'ingresso analogico è collegato il pin DO invece di AO, oppure il modulo non riceve 5 V.
- Il LED DOUT è sempre acceso: la soglia del potenziometro è troppo bassa; giralo in aria pulita finché il LED non si spegne.
- I valori si spostano durante la giornata: cambiano temperatura e umidità; reimposta la soglia in aria pulita di tanto in tanto.
- Sull'ESP32 il valore analogico è sempre al massimo: il segnale AO a 5 V è collegato direttamente; usa un partitore di tensione.
- La batteria si scarica in fretta: il riscaldatore assorbe circa 150 mA in continuo; l'MQ-2 non è adatto a funzionare a lungo a batteria.
Abbinare l'MQ-2 a un buzzer e a un LED è il modo più semplice per passare dai sensori a un vero sistema di allarme. Nell'app BlueGrays trovi progetti sull'uso del sensore di gas, un allarme con sensore di fiamma e di gas e un allarme rilevatore di gas e fumo con ESP32 e MQ-2, con schemi e codice.
Domande frequenti
Quali gas rileva l'MQ-2?
L'MQ-2 è sensibile a GPL, propano, butano, metano (gas naturale), idrogeno, vapori di alcol e fumo. Reagisce solo debolmente al monossido di carbonio. Poiché reagisce a molti gas contemporaneamente, da solo non può distinguere quale gas è presente.
Quanto deve scaldarsi l'MQ-2?
A ogni accensione aspetta alcuni minuti (in pratica 1–3 minuti) perché le letture si stabilizzino. Se usi un sensore nuovo per la prima volta, si consiglia di farlo funzionare ininterrottamente per 24–48 ore per ottenere i risultati più stabili.
MQ-2 o MQ-4 per le fughe di gas naturale?
L'MQ-2 rileva anche il metano, ma reagisce a molti gas. Per il gas naturale (metano) è più adatto l'MQ-4, che è più selettivo. In ogni caso, non sostituire un rilevatore di gas certificato con un sensore hobbistico.
Posso misurare il monossido di carbonio con l'MQ-2?
L'MQ-2 reagisce solo debolmente al monossido di carbonio. Per il CO si usa l'MQ-7, il cui riscaldatore alterna una tensione alta e una bassa; ma per la tua sicurezza usa sempre un rilevatore di CO conforme alla norma EN 50291.
È normale che il sensore si scaldi?
Sì. Il riscaldatore interno mantiene sempre l'elemento sensibile ad alta temperatura, per questo la rete metallica è decisamente calda al tatto. Tieni il sensore lontano da materiali infiammabili e non toccarlo mentre è in funzione.
Posso alimentare l'MQ-2 a batteria?
Sì, ma non durerà molto: il riscaldatore assorbe circa 150 mA in continuo. Un power bank da 2000 mAh dura circa 13 ore. Puoi calcolare l'autonomia del tuo progetto con lo strumento Durata batteria; dove serve un monitoraggio continuo, usa un alimentatore di rete.
Progetti da realizzare dopo questo articolo
Vedi tutti i progetti
Utilizzo del sensore di gas
Progetto che misura la densità del gas nell'ambiente con un sensore di gas della serie MQ e fornisce un allarme con LED e cicalino quando supera il valore di soglia. Insegna la misurazione analogica d

Allarme del sensore di fiamma e gas
Progetto di sicurezza avanzato che emette un allarme con LED lampeggiante e cicalino quando viene rilevato un incendio o una fuga di gas utilizzando un sensore di fiamma e un sensore di gas insieme.

Allarme rilevatore di gas/fumo ESP32 MQ-2
In questo progetto, il rilevamento di gas combustibili (GPL, metano, propano) e fumo viene effettuato tramite un modulo sensore di gas MQ-2; al rilevamento viene emesso un segnale acustico simile a una sirena tramite un cicalino passivo. L'uscita digitale di soglia (DO) del sensore viene collegata al GPIO 4 dell'ESP32; quando gas o fumo superano la soglia, DO passa a LOW e l'allarme si attiva. La sensibilità si regola tramite il potenziometro del modulo. Il cicalino è pilotato con `tone()`.
Altri articoli
Impara passo passo come funziona il sensore di gas MQ-2, perché deve scaldarsi, come collegarlo ad Arduino, regolare la soglia e costruire un allarme gas e fumo con buzzer.

