En este artículo, aprenderemos cómo usar el sensor de gas MQ-2 con un Arduino para mostrar los niveles de gas en una pantalla OLED. El sensor de gas MQ-2 es un sensor universal que puede detectar varios gases como metano, butano, propano, alcohol, humo y más. Al conectar el sensor MQ-2 a un Arduino y mostrar los niveles de gas en una pantalla OLED, podemos monitorear fácilmente los niveles de gas ambiental en nuestro entorno.
En las siguientes secciones, discutiremos las piezas necesarias para este proyecto, proporcionaremos una introducción al sensor MQ-2, explicaremos cómo conectar las piezas y te guiaremos para escribir el código para Arduino. Finalmente, concluiremos resumiendo los puntos clave y respondiendo algunas preguntas frecuentes.
Si te interesa construir un sistema de monitoreo de niveles de gas usando el sensor universal MQ-2 y Arduino, ¡sigue leyendo!
Piezas necesarias
A continuación encontrarás las piezas necesarias para este proyecto. Si ya tienes un set de resistencias y algunos LEDs, no necesitarás el kit sugerido. Solo se requiere un LED rojo y una resistencia de 220 Ohm para este proyecto específico.

Arduino Uno

Set de cables Dupont

Protoboard

Cable USB para Arduino UNO

Pantalla OLED

Sensor de 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.
Introducción al MQ-2
El MQ-2 es un sensor de gas bastante universal que puede detectar varios gases como metano, propano, butano, alcohol, humo y más. Tiene alta sensibilidad y un tiempo de respuesta rápido.
En contraste con el MQ-2, los otros sensores de la serie MQ están optimizados para detectar tipos específicos de gases. Por ejemplo:
- MQ-3: Diseñado principalmente para detectar alcohol.
- MQ-4: Diseñado principalmente para detectar metano y gas natural.
- MQ-5: Diseñado para LPG y gas natural.
- MQ-6: Diseñado específicamente para detección de LPG.
- MQ-7: Enfocado en la detección de monóxido de carbono (CO).
- MQ-8: Principalmente para detección de hidrógeno.
- MQ-9: Detecta monóxido de carbono (CO) y gases inflamables.
Ten en cuenta que tenemos tutoriales para algunos de estos sensores:
- 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
Especificaciones técnicas del sensor de gas MQ-2
A continuación encontrarás las especificaciones técnicas del sensor de gas MQ-2:
- Voltaje de operación: 5V DC
- Voltaje del calentador: 5V DC
- Consumo de energía: Aproximadamente 150mA
- Resistencia de detección: 2KΩ a 20KΩ en aire limpio
- Sensibilidad: Ajustable mediante un potenciómetro
- Tiempo de precalentamiento: Aproximadamente 48 horas
- Tiempo de respuesta: Menos de 10 segundos
- Tiempo de recuperación: Menos de 30 segundos
- Temperatura de operación: -10°C a 50°C
- Humedad de operación: 95% HR (sin condensación)
Ten en cuenta que estas especificaciones pueden variar ligeramente según el fabricante y la versión del sensor MQ-2.
Internos del sensor de gas MQ-2
En esta sección analizamos el funcionamiento interno del sensor MQ-2. El sensor utiliza una capa compuesta de un óxido metálico (SnO2). Cuando el gas entra en contacto con esta capa, reacciona con el oxígeno presente en la superficie del SnO2. Esto resulta en un cambio en la resistencia.
La imagen a continuación está tomada del MQ-2 Datasheet sensor y muestra sus componentes y circuitería interna.
Si observas con atención, puedes ver que la capa de detección (1) está envuelta en una bobina calentadora (4). Esta proporciona el calor necesario para que ocurra la reacción química del gas con el SnO2. El elemento calefactor es la razón por la que sentirás que el sensor se calienta durante su funcionamiento.
Alrededor de la capa de detección y la bobina calentadora hay un tubo cerámico (5) para protección física y aislamiento térmico. La malla en la parte superior (6) asegura que el gas no explote debido al calentador.
Finalmente, tenemos los electrodos (2, 3), hechos de oro (Au) y platino (Pt). Están unidos a la capa de detección. Los electrodos miden los cambios en la resistencia de la capa de detección.
Características de sensibilidad del sensor de gas MQ-2
El sensor de gas MQ-2 está diseñado para detectar gases como LPG (gas licuado de petróleo), metano (CH4), propano, alcohol, hidrógeno (H2), humo y monóxido de carbono (CO). Como puedes ver en el diagrama a continuación, su sensibilidad es bastante uniforme para estos gases (misma pendiente).
La sensibilidad del sensor se refiere a la relación (Rs/Ro) de la resistencia del sensor en varios gases respecto a la resistencia en aire limpio. Puedes ver que a mayor concentración de gas (ppm más alto), menor es la resistencia.
Dependencia de humedad y temperatura del sensor de gas MQ-2
Ten en cuenta, sin embargo, que el sensor MQ-2 está influenciado por la humedad y temperatura ambiental. El siguiente gráfico muestra el cambio en la resistencia según la temperatura y humedad ambiente.
La humedad puede afectar el rendimiento del sensor, principalmente porque el vapor de agua puede ocupar los sitios activos en la capa de detección de dióxido de estaño (SnO2) donde ocurren las reacciones de detección de gas.
La temperatura es otro factor a considerar al usar el sensor MQ-2. El sensor incluye un calentador incorporado para mantener la temperatura necesaria en la capa de detección SnO2. Sin embargo, la temperatura ambiente aún puede influir en las lecturas del sensor.
Si necesitas lecturas precisas y estables, puede que necesites sensores adicionales de temperatura y humedad para compensar esas dependencias. También ten en cuenta que el MQ-2 necesita calentarse al menos 20 segundos antes de que sus lecturas sean estables y confiables.
Pinout del sensor de gas MQ-2
En lugar de usar el sensor MQ-2 en crudo, es más fácil usar uno de los módulos MQ-2, como el listado arriba. Estos módulos tienen cuatro pines para facilitar la conexión con el microcontrolador. El pin VCC es para la alimentación de 5V y el pin GND debe conectarse a tierra. El pin A0 proporciona la salida analógica proporcional a la concentración de gas. Y el pin D0 emite una señal digital (ALTA o BAJA).

En la parte trasera del módulo encontrarás un potenciómetro para ajustar el umbral de conmutación para D0. Allí también verás un LED de alimentación (rojo) que se enciende cuando el módulo tiene energía. Además, hay un LED de detección (verde) que se enciende cuando se detecta gas (D0=ALTO) por encima del umbral ajustado en el potenciómetro.

Probando el sensor de gas MQ-2
Puedes probar fácilmente el funcionamiento del módulo incluso sin un Arduino. Conecta VCC y GND a una fuente de 5V y el LED rojo de alimentación en la parte trasera del módulo debería encenderse. Ahora espera unos segundos (para lecturas estables >20 segundos). Notarás que el módulo se calienta ligeramente debido al elemento calefactor.

Si rocías un poco de alcohol (limpiador de pantallas, perfume, …) frente al sensor, el LED verde de detección se encenderá. Si no, ajusta el potenciómetro en la parte trasera del módulo. También puedes probar con el gas de un encendedor.
En la siguiente sección, discutiremos cómo conectar el sensor de gas MQ-2 con Arduino y escribir el código necesario para comenzar a detectar gas metano.
Conectando las piezas
En esta sección conectaremos el sensor MQ-2 y la pantalla OLED. Primero, conectemos la alimentación del Arduino a las líneas de alimentación de la protoboard (cables rojo y azul desde los pines 5V y GND). Luego conecta la alimentación desde las líneas de alimentación al sensor MQ-2 y a la pantalla OLED (cables rojo y azul).

¡Pero cuidado! Hay dos versiones de la pantalla OLED SDD1306 128×64, con los pines VCC y GND invertidos. Asegúrate de conectar VCC a +5V (o +3V3, que también funciona). Si necesitas más detalles sobre cómo conectar y usar la OLED, echa un vistazo a nuestro tutorial sobre How to Interface the SSD1306 I2C OLED Graphic Display.
Después conecta la salida analógica A0 del sensor MQ-2 a la entrada analógica A0 del Arduino (cable amarillo). Finalmente, conecta los pines I2C SCL y SDA a las entradas A5 y A4 del Arduino (cables morado y verde, SCL->A5, SDA->A4).
Con esto se completa la conexión de las piezas. Si necesitas más detalles sobre el cableado de los componentes, consulta la tabla a continuación.
| Desde | Pin | Color del cable | Hasta | Pin |
| Arduino | 5V | Rojo | Protoboard | Carril positivo |
| Arduino | GND | Azul | Protoboard | Carril negativo |
| MQ-2 | GND | Azul | Protoboard | Carril negativo |
| MQ-2 | VCC | Rojo | Protoboard | Carril positivo |
| MQ-2 | Out/Signal/A0 | Amarillo | Arduino | A0 |
| OLED | VCC | Rojo | Protoboard | Carril positivo |
| OLED | GND | Azul | Protoboard | Carril negativo |
| OLED | SCL | Morado | Arduino | A5 |
| OLED | SDA | Verde | Arduino | A4 |
En la siguiente sección vamos a escribir el código para mostrar los niveles de gas medidos en la pantalla OLED.
Escribiendo el código para Arduino
El código a continuación lee datos de un sensor MQ-2 y muestra el valor del sensor en una pantalla OLED. Se ejecuta continuamente, actualizando la pantalla cada segundo con un nuevo valor del sensor.
#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);
}
Para entender el código con más detalle, veamos sus partes. Comenzamos con las librerías y constantes.
Librerías y constantes
Primero incluimos las librerías necesarias para la comunicación I2C con la pantalla OLED.
#include "Wire.h" #include "Adafruit_GFX.h" #include "Adafruit_SSD1306.h"
Después definimos las constantes para el ancho, alto y dirección I2C de la pantalla.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define SCREEN_ADDRESS 0x3C
Ten cuidado al buscar la dirección I2C de tu pantalla. Normalmente esa dirección es 0x3C. Si tienes suerte, verás esta dirección en la parte trasera del módulo OLED (imagen izquierda abajo). Podrías cambiar la dirección soldando la resistencia en la segunda posición.
Hay otros módulos OLED comunes que muestran la dirección I2C como 0x78 en la parte trasera (imagen derecha). Esto es engañoso (es la dirección de 8 bits en contraste con la de 7 bits que necesitas). La dirección I2C para estas pantallas es también 0x3C ¡No te dejes engañar por el etiquetado en la parte trasera.

Si no logras que funcione y necesitas encontrar la dirección I2C, puedes instalar la I2CScanner librería para hacerlo. Aquí está el code para ejecutar un escaneo. Pero asegúrate de que la pantalla esté correctamente conectada y alimentada.
#include "I2CScanner.h"
I2CScanner scanner;
void setup() {
Serial.begin(9600);
while (!Serial) {};
scanner.Init();
}
void loop() {
scanner.Scan();
delay(5000);
}
Objeto de pantalla
En esta línea creamos el objeto display usando las constantes definidas arriba.
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
Configuración de la pantalla
En la función setup() inicializamos la comunicación serial y arrancamos la pantalla OLED. Si la pantalla no se encuentra, imprimimos un mensaje de error y entramos en un bucle 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);
}
De lo contrario, esperamos un corto periodo (100ms). Luego configuramos el tamaño del texto a 5 y el color del texto a blanco. Un tamaño de texto 5 llenará bien la pantalla.
Lectura de datos y visualización
En la función loop() primero leemos el valor analógico del pin A0, que está conectado al sensor MQ-2. Luego imprimimos el valor del nivel de gas en el monitor serial.
int sensorValue = analogRead(A0);
Serial.print("Gas:");
Serial.println(sensorValue);
Después, limpiamos la pantalla OLED, colocamos el cursor en la posición (20, 16), que imprimirá el valor del sensor MQ-2 aproximadamente en el centro de la pantalla. Luego imprimimos el valor del sensor en la pantalla. Sin embargo, el valor no aparecerá hasta que actualicemos la pantalla llamando a display.display().
display.clearDisplay(); display.setCursor(20, 16); display.println(sensorValue); display.display(); delay(1000);
Finalmente, añadimos un retardo de 1 segundo antes de repetir el bucle.
Ejemplo de salida
Si ejecutas este código y observas el Serial Plotter, deberías ver un pico aparecer si expones el sensor MQ-2 a algún gas (perfume, limpiador de pantallas, encendedor) o humo. La imagen abajo muestra la respuesta del sensor tras exponerse a los vapores de alcohol isopropílico (limpiador de pantallas).

Ahí lo tienes. Ahora puedes monitorear niveles de gas y construir un sistema de alerta de gas.
Conclusión
En este tutorial, hemos aprendido cómo usar el sensor universal de gas MQ-2 con Arduino. Comenzamos presentando las piezas necesarias para este proyecto, que incluyen una placa Arduino, el sensor MQ-2, una pantalla OLED y algunos cables jumper.
Luego, discutimos el sensor MQ-2 en detalle, explicando su funcionamiento y los gases que puede detectar.
Después, pasamos al aspecto práctico del proyecto y te mostramos cómo conectar el sensor MQ-2 a la placa Arduino. Proporcionamos un diagrama claro de conexiones y explicamos el propósito de cada conexión.
Para hacer funcionar el sensor, luego escribimos un código simple para Arduino que lee la salida analógica del sensor MQ-2 y la muestra en una pantalla OLED. Explicamos el código paso a paso para facilitar su comprensión.
En conclusión, el sensor universal de gas MQ-2 es una opción versátil y económica para detectar varios gases. Con la ayuda de una placa Arduino, puedes integrar fácilmente este sensor en tus proyectos y crear sistemas de monitoreo de gas.
Esperamos que este tutorial te haya sido útil para comenzar con el sensor MQ-2. Si tienes más preguntas o necesitas asistencia adicional, consulta la sección de Preguntas Frecuentes o deja un comentario.
¡Feliz experimentación con el sensor universal de gas MQ-2 y Arduino!
Preguntas frecuentes
Aquí tienes algunas preguntas comunes sobre el uso del sensor de gas MQ-2 con Arduino:
P: ¿Cómo funciona el sensor de gas MQ-2?
El sensor de gas MQ-2 funciona bajo el principio de conductividad del gas. Contiene un elemento sensor hecho de dióxido de estaño (SnO2) que reacciona con el gas. Cuando hay gas presente, la conductividad del elemento sensor aumenta, lo que puede ser medido por el Arduino.
P: ¿Qué tan preciso es el sensor de gas MQ-2?
La precisión del sensor MQ-2 puede variar según factores como la calibración, condiciones ambientales y la concentración del gas detectado.
P: ¿Cómo puedo calibrar el sensor MQ-2?
Para calibrar el sensor MQ-2, necesitas exponerlo a una concentración conocida de gas. El datasheet indica:
Recomendamos calibrar el detector para 1000 ppm de gas licuado de petróleo, o 1000 ppm de concentración de iso-butano en aire y usar un valor de resistencia de carga (RL) de aproximadamente 20 KΩ (5KΩ a 47 KΩ).
P: ¿Puedo usar el sensor MQ-2 para aplicaciones de seguridad?
Aunque el sensor MQ-2 puede detectar gases inflamables, no está certificado para aplicaciones de seguridad. Está destinado principalmente para fines educativos, de investigación y prototipado.
P: ¿Puedo usar el sensor MQ-2 con ESP32?
Sí, el sensor MQ-2 también puede usarse con ESP32. El cableado y el código serán similares a los usados con Arduino. Sin embargo, asegúrate de verificar los niveles de voltaje y la compatibilidad de pines entre el sensor y la placa ESP32.
P: ¿Puedo alimentar el sistema de detección de gas con baterías?
Es posible, pero requiere baterías bastante grandes y no lo recomendaría. El sensor MQ-2 consume alrededor de 150mA y necesita calentarse al menos 30 segundos para lecturas confiables.
P: ¿Cuál es la vida útil típica del sensor MQ-2?
La vida útil del sensor MQ-2 puede variar según el uso y las condiciones ambientales. En promedio, puede durar varios años con el cuidado adecuado.
P: ¿Puedo usar el sensor MQ-2 en ambientes exteriores?
El sensor MQ-2 no está diseñado para uso en exteriores. Se recomienda usarlo en ambientes interiores donde pueda proporcionar una detección de gas precisa.
Consulta el MQ-2 Datasheet para obtener información y especificaciones más detalladas.
Enlaces
Aquí algunos otros enlaces útiles sobre el sensor MQ-2 y cómo 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




