El Fermion Smoke Sensor de DFRobot es una placa compacta basada en el sensor GM-202B, diseñada para integrarse con plataformas de microcontroladores como Arduino y ESP32.
Emplea tecnología de sistemas microelectromecánicos (MEMS) para proporcionar alta sensibilidad al humo y al etanol en el rango de 10-1000 ppm. El sensor tiene un bajo consumo de energía (<20mA), respuesta rápida y genera poco calor en comparación con los sensores de gas tradicionales.
En este tutorial aprenderás a detectar humo con el sensor. Construiremos un sistema de alarma simple que hará parpadear un LED o activará un zumbador si la concentración de humo es demasiado alta.
Partes necesarias
Necesitarás un sensor Fermion Smoke de DFRobot. Para el microcontrolador, usé un Arduino Uno para este proyecto, pero cualquier otro Arduino o ESP32 también funcionará.
Para nuestro sistema de alarma también necesitaremos un LED y un zumbador, que puedes conseguir en Amazon. Además, usaremos un pequeño OLED SSD1306 para mostrar las concentraciones de humo medidas en una pantalla.

Sensor de Olor MEMS Fermion

Zumbador pasivo

Kit de resistencias y LED

Pantalla OLED

Arduino Uno

Cable USB para Arduino UNO

Juego de cables Dupont

Protoboard
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 Fermion Smoke Sensor
El Fermion Smoke Sensor de DFRobot es una placa compacta para detección de gases diseñada para detectar humo (o alcohol).
Está basado en el chip GM-202B, que utiliza tecnología de sistemas microelectromecánicos (MEMS) para lograr un formato pequeño con bajo consumo de energía y características de respuesta rápida.
La placa mide aproximadamente 13 mm por 13 mm con un grosor de unos 2.5 mm. La imagen a continuación muestra la placa con el sensor GM-202B en la parte superior y un regulador de voltaje debajo:

El módulo está destinado a la detección cualitativa de concentraciones de humo más que a un análisis cuantitativo preciso. Ten en cuenta que DFRobot también ofrece sensores calibrados, pero son más grandes y costosos (link).
Características eléctricas y salida
El sensor funciona con un rango de voltaje de alimentación de 3.3 V a 5 V, que coincide con los niveles lógicos de la mayoría de las placas Arduino y ESP32. Cuando está alimentado, el dispositivo consume menos de 20 mA y genera muy poco calentamiento propio gracias a su diseño MEMS.
La concentración de gas se representa mediante una salida de voltaje analógico que varía proporcionalmente a la cantidad de humo detectado en el aire circundante. El voltaje de salida está en el rango 0…VCC.
Rango de detección y sensibilidad
El sensor puede detectar compuestos orgánicos volátiles comunes (COV) como etanol o productos de combustión como el humo en un rango de 10 ppm a 1000 ppm. La sensibilidad se cuantifica por la relación de resistencia en aire limpio (R0) a la resistencia en una concentración conocida (Rs). Como se mencionó antes, la salida del sensor no es un valor calibrado de concentración.
Especificaciones ambientales y de vida útil
El elemento sensor está diseñado para operar en un rango de temperatura ambiente de aproximadamente -10 °C a +50 °C y humedad relativa de 15 % a 90 % (sin condensación). El fabricante especifica una vida útil de al menos cinco años cuando el sensor se usa en condiciones atmosféricas normales sin contaminación excesiva.
Debido a que los sensores responden a una amplia clase de gases orgánicos, factores ambientales como la humedad, la temperatura y la presencia de otros gases también pueden afectar la salida.
Pinout
Físicamente, la placa expone tres pines para conexión: salida analógica (A), voltaje de alimentación (VCC) y tierra (GND). La imagen a continuación muestra el pinout de la placa:

Esquemas
La siguiente imagen muestra el esquema de la placa Fermion Smoke Sensor GM-202B:

Puedes ver el regulador de voltaje y el chip sensor GM-202B con la resistencia de carga de 4.7K en la salida VOUT.
Preparación
El sensor viene con una película protectora que debes retirar. Si miras la parte superior del sensor, encontrarás una lámina amarilla cubriendo los orificios de entrada de aire. Usa unas pinzas para despegar la película. Las fotos a continuación muestran el sensor con la película protectora, a medio retirar y completamente retirada (de izquierda a derecha):

Ten en cuenta que el sensor requiere un período de calentamiento para alcanzar estabilidad operativa. Esto puede tomar varios minutos en el primer uso hasta que las lecturas se estabilicen. Si no has usado el sensor por mucho tiempo, se recomienda dejarlo funcionando entre 48 y 168 horas:

Especificación técnica
La siguiente tabla resume la especificación técnica del Fermion Smoke Sensor GM-202B:
| Especificación | Valor |
|---|---|
| Tipo de sensor | Sensor MEMS para detección de humo |
| Gas detectado | Humo (también responde a EtOH) |
| Rango de detección | 10 – 1000 ppm |
| Voltaje de alimentación | 3.3 V – 5 V |
| Corriente de operación | <20 mA |
| Señal de salida | Voltaje analógico |
| Resistencia de carga (RL) | 4.7 kΩ |
| Sensibilidad | R₀ (en aire) / Rₛ (en 200 ppm EtOH) ≥ 3 |
| Temperatura de operación | −10 °C a +50 °C |
| Humedad de operación | 15 – 90 % HR (sin condensación) |
| Vida útil | ≥ 5 años (en aire) |
| Dimensiones | 13 × 13 × 2.5 mm |
Y aquí tienes un enlace a la hoja de datos del sensor GM-202B con datos técnicos adicionales:
Sensor Fermion GM-202B versus Sensor MQ-2
Una alternativa común al Fermion GM-202B Smoke Sensor es el más antiguo MQ-2 Sensor de gas. A continuación, una breve comparación de ambos sensores.
Tecnología de detección y mecanismo
El sensor GM-202B usa tecnología MEMS de semiconductor de óxido metálico, donde una microplaca calefactora y una capa sensible de óxido metálico cambian su resistencia en respuesta a COVs y humo con bajo consumo y respuesta térmica rápida. La fabricación MEMS resulta en un elemento sensor compacto que alcanza la temperatura de operación rápidamente y consume poca energía en el calentador.
En contraste, el MQ-2 usa un elemento sensor de gas semiconductor a granel (SnO₂) alojado en una carcasa más grande de metal o baquelita. Detecta gases inflamables y humo por un cambio en la resistividad de su material sensor cuando se calienta, pero requiere mayor potencia para el calentador y un tiempo de precalentamiento más largo.
Rango de operación y sensibilidad
El rango de detección para el GM-202B es típicamente de 10–1000 ppm para gases como propano o vapor de etanol y humo, ofreciendo una sensibilidad manejable para detección de humo en niveles bajos en aplicaciones de calidad de aire o alarmas. La sensibilidad se expresa como la relación de resistencias R₀/Rₛ ≥ 3 a 200 ppm de gas de prueba.
En cambio, el MQ-2 tiene un rango de detección mucho más amplio para gases inflamables (≈300–10000 ppm) y un punto de referencia de sensibilidad más alto (R₀/Rₛ ≥ 5 en 2000 ppm de propano), indicando que está orientado a detección más amplia de gases, incluyendo fugas de gas combustible, no solo pequeñas concentraciones de humo.
Requisitos eléctricos y características del calentador
Una diferencia práctica clave es el consumo de energía. El calentador del GM-202B funciona a unos 2.5 V con un consumo ≤50 mW, lo que ayuda a mantener bajo el consumo total del módulo y un calentamiento rápido.
El calentador del MQ-2 funciona a unos 5 V con un consumo de hasta ≈950 mW, lo que significa que necesita mucha más energía y un período de calentamiento considerable (a menudo decenas de minutos a horas antes de obtener lecturas estables).
Integración de circuito y salida
Ambos sensores producen una salida analógica proporcional a la concentración de gas mediante un divisor de voltaje con una resistencia de carga.
El módulo GM-202B típicamente usa una resistencia de carga menor (≈4.7 kΩ en placas integradas) y puede conectarse directamente a ADCs de microcontroladores de bajo voltaje como Arduino o ESP32 con niveles lógicos de 3.3–5 V.
Los módulos MQ-2 comúnmente incluyen un potenciómetro y un comparador en la placa para salida digital por umbral, pero cuando se usan con entradas ADC la resistencia de carga puede ser ≈10 kΩ o más. El MQ-2 forma parte de un divisor de voltaje simple que requiere calibración y a menudo amplificación adicional para lecturas precisas.
Tamaño físico y ciclo de vida
Físicamente, el elemento MEMS GM-202B es mucho más pequeño (≈5 × 5 × 1.55 mm en el sensor desnudo y ~13 × 13 × 2.5 mm en la placa) con menor consumo total y generalmente una larga vida útil en aire limpio (≥5 años en módulos breakout).
El sensor MQ-2 puede ser más grande debido a su empaquetado convencional y ensamblaje del calentador, y aunque también tiene una vida nominal larga, su alta energía del calentador y estructura voluminosa lo hacen menos óptimo para diseños embebidos de bajo consumo.
Adecuación para aplicaciones
Por su bajo consumo y rango de detección más pequeño, el GM-202B es más adecuado para detección de humo y monitoreo de COV donde pequeñas concentraciones son relevantes y la energía es limitada (por ejemplo, proyectos con microcontroladores alimentados por batería).
El MQ-2 es más adecuado para detección de gases inflamables y entornos donde un rango amplio y robustez a múltiples gases son valiosos (por ejemplo, fugas de GLP, alarmas de gas en talleres), a costa de mayor consumo y largo tiempo de precalentamiento.
En ambos casos, ninguno de los sensores entrega una concentración absoluta de gas sin calibración. Ambos proporcionan cambios relativos que deben interpretarse respecto a una línea base para cada aplicación objetivo.
Conectando el sensor de humo al Arduino UNO
Conectar el sensor a un Arduino UNO es sencillo. Conecta VCC a 5V (o 3.3V), GND a tierra y A a la entrada analógica A0 como se muestra a continuación:

Ejemplos de código
Lectura de concentración de humo
En este primer ejemplo simplemente leemos los valores medidos por el sensor y los imprimimos en el Monitor Serial cada segundo:
void setup() {
Serial.begin(9600);
}
void loop() {
int val = analogRead(A0);
Serial.println(val);
delay(1000);
}
Verás valores entre 0 y 1023, dependiendo de la cantidad de humo en el ambiente.
Si el sensor no se ha calentado completamente, verás una secuencia de valores decrecientes continuamente en el Monitor Serial. Después de varios minutos las mediciones se estabilizarán. En mi caso alrededor de un valor de 135.
Si luego expones el sensor al humo (o alcohol), verás un aumento repentino en el valor medido:

Como el sensor no está calibrado, no puedes usarlo para medir ppm (partes por millón) o mg/m 3 de concentración reales. Sin embargo, puedes usarlo para construir una alarma de humo, que haremos en la siguiente sección.
Alarma de humo con LED
El siguiente código implementa una alarma de humo simple. Enciende un LED si el valor medido de humo supera un umbral predefinido de 140:
byte sensorPin = A0;
byte ledPin = 13;
int threshold = 140;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
int val = analogRead(sensorPin);
digitalWrite(ledPin, val > threshold ? HIGH: LOW);
delay(100);
}
Conecté el LED con una resistencia de 220 Ohm a GPIO 13 como LED de alarma, como se muestra a continuación:

Ten en cuenta que para un sistema de alarma confiable puede que quieras añadir también un sensor de temperatura y humedad, ya que las lecturas del sensor se ven afectadas por la temperatura y la humedad. La figura a continuación muestra la dependencia de la resistencia del sensor, que es proporcional al voltaje que lee el Arduino, con la humedad relativa:

Alarma de humo con zumbador pasivo
En lugar de un LED también puedes activar un zumbador como señal de alarma. En el siguiente código se activa un zumbador pasivo si la concentración de humo medida supera el umbral:
byte sensorPin = A0;
byte buzzerPin = 11;
int threshold = 140;
void setup() {
pinMode(buzzerPin, OUTPUT);
}
void loop() {
int val = analogRead(sensorPin);
if (val > threshold) {
tone(buzzerPin, 500);
} else {
noTone(buzzerPin);
}
delay(100);
}
La siguiente imagen muestra cómo añadir el zumbador al circuito. Comienza conectando el terminal negativo del zumbador al GND del Arduino (cable negro). Luego conecta el terminal positivo a través de una resistencia de 100Ω al GPIO 11 (cable rojo):

Asegúrate de que la polaridad del zumbador sea correcta y que sea un zumbador pasivo conectado a un puerto GPIO con capacidad PWM. Para más información, consulta el tutorial Active and Passive Piezo Buzzers with Arduino.
Si tienes un zumbador activo, debes usar el código de alarma con LED anterior, ya que no funcionará correctamente con el comando tone().
Mostrar concentración de humo en OLED
En este último ejemplo mostramos los valores de concentración de humo medidos en un pequeño OLED. El código imprime «Smoke» y el valor en el centro de la pantalla y actualiza el valor mostrado cada 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(40, 10);
oled.print("Smoke");
sprintf(text, " %d ", val);
oled.setTextSize(2);
oled.setCursor(35, 40);
oled.print(text);
oled.display();
delay(100);
}
Ten en cuenta que necesitas la biblioteca Adafruit_SSD1306 para controlar el OLED. Puedes instalarla vía Library Manager como de costumbre:

Conectar el OLED al Arduino es fácil. Conecta SDA y SCL del OLED a los pines A4 y A5 del Arduino. En cuanto a la alimentación: dado que el OLED puede funcionar a 5V, podemos compartir las líneas de alimentación. Conecta VCC a 5V y GND a GND. La imagen a continuación muestra el cableado completo:

Si necesitas ayuda con el OLED, echa un vistazo al tutorial Use SSD1306 I2C OLED Display With Arduino.
Conclusión
En este tutorial aprendiste a usar el sensor Fermion Smoke con un Arduino UNO para detectar humo. El sensor también puede usarse fácilmente con otros microcontroladores como un ESP32.
Los sensores de gas MEMS tienen la ventaja de ser pequeños, consumir muy poca energía (< 20mA) y tener un tiempo de calentamiento corto. Sin embargo, aún se ven afectados por la temperatura y humedad ambiente.
Además, el sensor Fermion Smoke no está calibrado y por lo tanto no puede usarse directamente para medir concentraciones reales en unidades ppm. En teoría, podrías calibrar el sensor tú mismo, pero en la práctica sería difícil. DFRobot también ofrece sensores calibrados, pero son más grandes y costosos (link).
Ten en cuenta que existe toda una serie de diferentes sensores MEMS disponibles. Para una visión general, consulta el artículo Review of the DFRobot Fermion MEMS Gas Sensor Series y para detalles específicos, nuestras publicaciones dedicadas:
- Fermion MEMS VOC Gas Sensor GM-502B 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
Si tienes alguna pregunta, no dudes en dejarla en la sección de comentarios.
¡Feliz bricolaje! 😉

