El sensor de olores MEMS Fermion de DFRobot es un módulo de detección de gases diseñado para usarse con plataformas de microcontroladores como Arduino o ESP32. En su núcleo se encuentra un sensor GM-512B, que utiliza tecnología de sistemas microelectromecánicos (MEMS) para detectar gases relacionados con olores como sulfuro de hidrógeno, etanol y acetona.
En este tutorial aprenderás a detectar olores con este sensor. Construiremos un sistema de alarma simple que hace parpadear un LED o activa un zumbador si el olor se vuelve demasiado fuerte.
Piezas necesarias
Necesitarás un sensor de olores Fermion de DFRobot. En cuanto al 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 una pequeña pantalla OLED SSD1306 para mostrar el valor medido del olor en un display.

Sensor de olores 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 sensor de olores Fermion
El SEN0571 utiliza un elemento sensor de olores GM-512B MEMS construido con tecnología de sistemas microelectromecánicos (MEMS). Esta arquitectura MEMS integra estructuras sensoriales a microescala para reducir tamaño y consumo de energía.
El elemento sensor reacciona a cambios en la composición química del aire circundante modificando sus características eléctricas, que luego se convierten en una salida de voltaje analógico. La fabricación MEMS permite una baja masa térmica, por lo que el sensor requiere menos corriente para funcionar y genera un calor mínimo durante la medición.
Características de detección
Este sensor es capaz de detectar una variedad de gases relacionados con olores, incluyendo sulfuro de hidrógeno (H₂S), etanol (EtOH) y acetona, dentro de un rango típico de detección de aproximadamente 0.5 ppm a 50 ppm.
La salida no está calibrada para valores precisos de concentración; en cambio, el nivel de voltaje indica cambios relativos en la presencia del gas.
Interfaz eléctrica
El SEN0571 funciona con un rango de alimentación de 3.3 V a 5 V, lo que lo hace compatible con plataformas Arduino y ESP32 sin necesidad de conversores de nivel adicionales.
El sensor consume menos de 20 mA de corriente en operación normal, manteniendo bajo el consumo promedio de energía.
Produce una única salida de voltaje analógico correspondiente a la concentración de gas detectada, que puede ser leída directamente por los pines ADC del microcontrolador.
Límites ambientales y vida útil
El dispositivo está diseñado para funcionar en un rango de temperatura de aproximadamente −10 °C a +50 °C y en condiciones de humedad relativa de 15 % a 90 % (sin condensación).
Los materiales estructurales y el diseño MEMS están pensados para una vida útil prolongada de alrededor de cinco años o más en aire, asumiendo un uso y exposición ambiental normales.
Pinout
Físicamente, el breakout del sensor 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 del sensor de olores Fermion GM-512B:

Puedes ver el regulador de voltaje y el chip sensor GM-512B con la resistencia de carga de 3K 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 24 y 72 horas:

Especificaciones técnicas
La siguiente tabla resume las especificaciones técnicas del sensor de olores Fermion GM-512B:
| Especificación | Valor |
|---|---|
| Elemento sensor | Sensor de olores MEMS (GM-512B) |
| Objetivo de detección | Gases relacionados con olores (p. ej., H₂S, etanol, acetona) |
| Rango típico de detección | ~0.5 ppm a ~50 ppm |
| Tipo de salida | Voltaje analógico |
| Voltaje de alimentación | 3.3 V a 5 V |
| Corriente de operación | < 20 mA |
| Temperatura de operación | −10 °C a +50 °C |
| Humedad de operación | 15 % a 90 % HR (sin condensación) |
| Característica de respuesta | Cambio relativo en resistencia/voltaje |
| Tamaño físico (elemento sensor) | ~13 mm × 13 mm × 2.5 mm |
| Vida útil típica | ~5 años en aire bajo uso normal |
Y aquí tienes un enlace a la hoja de datos del sensor GM-512B con datos técnicos adicionales:
Conexión del sensor de olores 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 olores
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 olor en el ambiente.
Si el sensor no se ha calentado completamente, verás una secuencia de valores que disminuye continuamente en el Monitor Serial. Mira abajo:

Después de varios minutos las mediciones se estabilizarán. En mi caso alrededor de un valor de 300. Si luego soplas sobre el sensor, 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 olores, que haremos en la siguiente sección.
Alarma de olores con LED
El siguiente código implementa una alarma simple de olores. Enciende un LED si el valor medido de olor supera un umbral predefinido de 320:
byte sensorPin = A0;
byte ledPin = 13;
int threshold = 320;
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. Alternativamente, podrías usar una ventana deslizante para compensar la deriva lenta del sensor debido a temperatura y humedad.
Alarma de olores 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 olor medida supera el umbral:
byte sensorPin = A0;
byte buzzerPin = 11;
int threshold = 320;
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 Active and Passive Piezo Buzzers with Arduino tutorial.
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 olores en OLED
En este último ejemplo mostramos los valores medidos de concentración de humo en una pequeña pantalla OLED. El código imprime «Odor» 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("Odor");
sprintf(text, " %d ", val);
oled.setTextSize(2);
oled.setCursor(35, 40);
oled.print(text);
oled.display();
delay(100);
}
Ten en cuenta que necesitas la Adafruit_SSD1306 librería para controlar la OLED. Puedes instalarla a través del Library Manager como de costumbre:

Conectar la OLED al Arduino es fácil. Conecta SDA y SCL de la OLED a los pines A4 y A5 del Arduino. En cuanto a la alimentación: dado que la 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 la OLED, echa un vistazo al Use SSD1306 I2C OLED Display With Arduino tutorial.
Conclusión
En este tutorial aprendiste a usar el sensor de olores Fermion 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 de olores Fermion no está calibrado y por lo tanto no puede usarse directamente para medir concentraciones reales en unidades ppm.
Ten en cuenta que existe toda una serie de diferentes sensores MEMS disponibles. Para una visión general, consulta el Review of the DFRobot Fermion MEMS Gas Sensor Series artículo y para detalles específicos nuestras publicaciones dedicadas:
- Fermion MEMS VOC Gas Sensor GM-502B with Arduino
- Fermion MEMS Smoke Sensor GM-202B 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! 😉

