O Fermion Smoke Sensor da DFRobot é uma placa compacta em torno do sensor GM-202B, projetada para integração com plataformas de microcontroladores como Arduino e ESP32.
Ele utiliza tecnologia de sistemas microeletromecânicos (MEMS) para fornecer alta sensibilidade a fumo e etanol na faixa de 10-1000 ppm. O sensor tem baixo consumo de energia (<20mA), resposta rápida e geração mínima de calor comparado com sensores de gás tradicionais.
Neste tutorial, aprenderás como detetar fumo com o sensor. Vamos construir um sistema de alarme simples que pisca um LED ou soa um buzzer se a concentração de fumo ficar demasiado alta.
Peças Necessárias
Vais precisar de um sensor Fermion Smoke da DFRobot. Quanto ao microcontrolador, usei um Arduino Uno para este projeto, mas qualquer outro Arduino ou ESP32 também funciona.
Para o nosso sistema de alarme, também precisaremos de um LED e um buzzer, que podes adquirir na Amazon. Além disso, usaremos um pequeno OLED SSD1306 para mostrar as concentrações de fumo medidas no ecrã.

Sensor de Odor MEMS Fermion

Buzzer Passivo

Kit de Resistores & LED

Ecrã OLED

Arduino Uno

Cabo USB para Arduino UNO

Conjunto de Fios Dupont

Breadboard
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 do Fermion Smoke Sensor
O Fermion Smoke Sensor da DFRobot é uma placa compacta de deteção de gases projetada para detetar fumo (ou álcool).
Baseia-se no chip GM-202B, que usa tecnologia de sistemas microeletromecânicos (MEMS) para alcançar um formato pequeno com baixo consumo de energia e características de resposta rápida.
A placa mede aproximadamente 13 mm por 13 mm com uma espessura de cerca de 2,5 mm. A imagem abaixo mostra a placa com o sensor GM-202B no topo e um regulador de tensão por baixo:

O módulo destina-se à deteção qualitativa de concentrações de fumo em vez de análise quantitativa precisa. Note que a DFRobot também oferece sensores calibrados, mas são maiores e mais caros (link).
Características Elétricas e Saída
O sensor opera numa faixa de tensão de alimentação de 3,3 V a 5 V, que corresponde aos níveis lógicos da maioria das placas Arduino e ESP32. Quando alimentado, o dispositivo consome menos de 20 mA de corrente operacional e gera muito pouco aquecimento próprio devido ao seu design MEMS.
A concentração de gás é representada por uma saída de tensão analógica que varia proporcionalmente à quantidade de fumo detetada no ar circundante. A tensão de saída está na faixa 0…VCC.
Faixa de Deteção e Sensibilidade
O sensor pode detetar compostos orgânicos voláteis comuns (VOCs) como etanol ou produtos de combustão como fumo numa faixa de 10 ppm a 1000 ppm. A sensibilidade é quantificada pela razão da resistência no ar limpo (R0) para a resistência numa concentração conhecida (Rs). Como mencionado, a saída do sensor não é um valor calibrado de concentração.
Especificações Ambientais e de Vida Útil
O elemento sensor é projetado para operar numa faixa de temperatura ambiente de aproximadamente -10 °C a +50 °C e humidade relativa de 15 % a 90 % (sem condensação). O fabricante especifica uma vida útil de pelo menos cinco anos quando o sensor é usado em condições atmosféricas normais sem contaminação excessiva.
Como os sensores respondem a uma ampla classe de gases orgânicos, fatores ambientais como humidade, temperatura e presença de outros gases podem também afetar a saída.
Pinout
Fisicamente, a placa expõe três pinos para ligação: saída analógica (A), tensão de alimentação (VCC) e terra (GND). A imagem abaixo mostra o pinout da placa:

Esquemas
A imagem seguinte mostra o esquema da placa Fermion Smoke Sensor GM-202B:

Podes ver o regulador de tensão e o chip sensor GM-202B com o resistor de carga de 4,7K na saída VOUT.
Preparação
O sensor vem com uma película protetora que precisas de remover. Se olhares para o topo do sensor, encontrarás uma película amarela a cobrir os orifícios de entrada de ar. Usa uma pinça para retirar a película. As fotos abaixo mostram o sensor com a película protetora, meio removida e completamente removida (da esquerda para a direita):

Note que o sensor requer um período de aquecimento para atingir estabilidade operacional. Isto pode levar vários minutos na primeira utilização até que as leituras se estabilizem. Se não usares o sensor por muito tempo, é recomendado deixá-lo funcionar entre 48 a 168 horas:

Especificação Técnica
A tabela seguinte resume a especificação técnica do Fermion Smoke Sensor GM-202B:
| Especificação | Valor |
|---|---|
| Tipo de sensor | Sensor de deteção de fumo MEMS |
| Gás detetado | Fumo (também responde a EtOH) |
| Faixa de deteção | 10 – 1000 ppm |
| Tensão de alimentação | 3,3 V – 5 V |
| Corrente operacional | <20 mA |
| Sinal de saída | Tensão analógica |
| Resistência de carga (RL) | 4,7 kΩ |
| Sensibilidade | R₀ (no ar) / Rₛ (em 200 ppm EtOH) ≥ 3 |
| Temperatura de operação | −10 °C a +50 °C |
| Humidade de operação | 15 – 90 % HR (sem condensação) |
| Vida útil | ≥ 5 anos (no ar) |
| Dimensões | 13 × 13 × 2,5 mm |
E aqui está um link para o Datasheet do sensor GM-202B com dados técnicos adicionais:
Sensor Fermion GM-202B versus Sensor MQ-2
Uma alternativa comum ao Fermion GM-202B Smoke Sensor é o mais antigo MQ-2 Sensor de Gás. A seguir, uma breve comparação dos dois sensores.
Tecnologia de Deteção e Mecanismo de Funcionamento
O sensor GM-202B usa tecnologia MEMS de semicondutor de óxido metálico, onde uma microplaca aquecida e uma camada sensível de óxido metálico mudam a resistência em resposta a VOCs e fumo, com baixo consumo de energia e resposta térmica rápida. A fabricação MEMS resulta num elemento sensor compacto que atinge rapidamente a temperatura de operação e consome relativamente pouca energia no aquecedor.
Em contraste, o MQ-2 usa um elemento sensor de gás semicondutor a granel (SnO₂) alojado numa caixa maior de metal ou baquelite. Deteta gases inflamáveis e fumo por uma mudança na resistividade do material sensor quando aquecido, mas requer maior potência no aquecedor e tempo de pré-aquecimento mais longo.
Faixa de Operação e Sensibilidade
A faixa de deteção para o GM-202B é tipicamente 10–1000 ppm para gases como propano ou vapor de etanol e fumo, oferecendo sensibilidade adequada para deteção de baixos níveis de fumo em aplicações de qualidade do ar ou alarmes. A sensibilidade é frequentemente expressa como a razão de resistência R₀/Rₛ ≥ 3 a 200 ppm de gás de teste.
Por outro lado, o MQ-2 tem uma faixa de deteção muito mais ampla para gases inflamáveis (≈300–10000 ppm) e um padrão de sensibilidade mais alto (R₀/Rₛ ≥ 5 em 2000 ppm de propano), indicando que é orientado para deteção mais ampla de gases, incluindo fugas de gases combustíveis, não apenas pequenas concentrações de fumo.
Requisitos Elétricos e Características do Aquecedor
Uma diferença prática chave é o consumo de energia. O aquecedor do GM-202B funciona a cerca de 2,5 V com consumo ≤50 mW, o que ajuda a manter o consumo total do módulo baixo e o aquecimento rápido.
O aquecedor do MQ-2 funciona a cerca de 5 V com consumo até ≈950 mW, significando que precisa de muito mais energia e um período de aquecimento substancial (frequentemente dezenas de minutos a horas antes de obter leituras estáveis).
Integração de Circuito e Saída
Ambos os sensores produzem uma saída analógica proporcional à concentração de gás via um divisor de tensão com um resistor de carga.
O módulo GM-202B normalmente usa um resistor de carga menor (≈4,7 kΩ em placas breakout integradas) e pode ser ligado diretamente a ADCs de microcontroladores de baixa tensão como os do Arduino ou ESP32 com níveis lógicos de 3,3–5 V.
Os módulos MQ-2 geralmente incluem um potenciômetro e comparador na placa breakout para saída digital de limiar, mas quando usados com entradas ADC o resistor de carga pode ser ≈10 kΩ ou mais. O MQ-2 faz parte de um divisor de tensão simples que requer calibração e frequentemente amplificação adicional para leituras precisas.
Tamanho Físico e Ciclo de Vida
Fisicamente, o elemento MEMS GM-202B é muito menor (≈5 × 5 × 1,55 mm no sensor nu e ~13 × 13 × 2,5 mm na breakout) com menor potência total e geralmente longa vida útil em ar limpo (≥5 anos em módulos breakout).
O sensor MQ-2 pode ser maior devido à sua embalagem convencional e montagem do aquecedor, e embora também tenha longa vida nominal, o seu alto consumo de energia no aquecedor e estrutura volumosa tornam-no menos otimizado para designs embutidos de baixo consumo.
Adequação à Aplicação
Devido ao seu baixo consumo e faixa de deteção menor, o GM-202B é mais apropriado para deteção de fumo e monitorização de VOCs onde pequenas concentrações são relevantes e a energia é limitada (ex.: projetos com microcontroladores alimentados por bateria).
O MQ-2 é mais adequado para deteção de gases inflamáveis e ambientes onde uma ampla faixa de deteção e robustez a múltiplos tipos de gases são valiosas (ex.: fugas de GPL, alarmes de gás em oficinas), ao custo de maior consumo e longo tempo de pré-aquecimento.
Em ambos os casos, nenhum sensor fornece uma concentração absoluta de gás sem calibração. Ambos fornecem variações relativas que devem ser interpretadas em relação a uma linha base para cada aplicação alvo.
Ligação do Sensor de Fumo ao Arduino UNO
Ligar o sensor a um Arduino UNO é simples. Liga VCC a 5V (ou 3,3V), GND ao terra e A à entrada analógica A0 como mostrado abaixo:

Exemplos de Código
Leitura da concentração de fumo
Neste primeiro exemplo, simplesmente lemos os valores medidos pelo sensor e imprimimos no Monitor Serial a cada segundo:
void setup() {
Serial.begin(9600);
}
void loop() {
int val = analogRead(A0);
Serial.println(val);
delay(1000);
}
Verás valores entre 0 e 1023, dependendo da quantidade de fumo no ambiente.
Se o sensor ainda não estiver completamente aquecido, verás uma sequência de valores a diminuir continuamente no Monitor Serial. Após vários minutos, as medições estabilizam. No meu caso, em torno de 135.
Se expuseres o sensor a fumo (ou álcool), verás um aumento súbito no valor medido:

Como o sensor não está calibrado, não podes usá-lo para medir ppm (partes por milhão) ou mg/m 3 de concentrações reais. No entanto, podes usá-lo para construir um alarme de fumo, que faremos na próxima secção.
Alarme de Fumo com LED
O código seguinte implementa um alarme simples de fumo. Liga um LED se o valor medido de fumo ultrapassar um limiar pré-definido 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);
}
Liguei o LED com um resistor de 220 Ohm ao GPIO 13 como LED de alarme, conforme mostrado abaixo:

Note que para um sistema de alarme fiável, podes querer adicionar também um sensor de temperatura e humidade, pois as leituras do sensor são afetadas por temperatura e humidade. A figura abaixo mostra a dependência da resistência do sensor, que é proporcional à tensão que o Arduino lê, em função da humidade relativa:

Alarme de Fumo com Buzzer Passivo
Em vez de um LED, podes também usar um buzzer como sinal de alarme. No código seguinte, um buzzer passivo é ativado se a concentração de fumo medida ultrapassar o limiar:
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);
}
A imagem seguinte mostra como adicionar o buzzer ao circuito. Começa por ligar o terminal negativo do buzzer ao GND do Arduino (fio preto). Depois liga o terminal positivo através de um resistor de 100Ω ao GPIO 11 (fio vermelho):

Certifica-te de que a polaridade do buzzer está correta e que é um buzzer passivo ligado a uma porta GPIO com capacidade PWM. Para mais informações, vê o tutorial Active and Passive Piezo Buzzers with Arduino.
Se tiveres um buzzer ativo, deves usar o código do alarme com LED anterior, pois não funcionará corretamente com o comando tone().
Mostrar a Concentração de Fumo no OLED
Neste último exemplo, mostramos os valores medidos da concentração de fumo num pequeno OLED. O código imprime “Smoke” e o valor no centro do ecrã e atualiza o valor mostrado a 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);
}
Note que precisas da biblioteca Adafruit_SSD1306 para controlar o OLED. Podes instalá-la via o Library Manager como de costume:

Ligar o OLED ao Arduino é fácil. Liga SDA e SCL do OLED aos pinos A4 e A5 do Arduino. Quanto à alimentação: como o OLED pode funcionar a 5V, podemos partilhar as linhas de alimentação. Liga VCC a 5V e GND a GND. A imagem abaixo mostra a ligação completa:

Se precisares de ajuda com o OLED, dá uma vista de olhos ao tutorial Use SSD1306 I2C OLED Display With Arduino.
Conclusão
Neste tutorial aprendeste a usar o sensor Fermion Smoke com um Arduino UNO para detetar fumo. O sensor pode ser facilmente usado com outros microcontroladores como o ESP32 também.
Sensores de gás MEMS têm a vantagem de serem pequenos, consumirem muito pouca energia (< 20mA) e terem um tempo curto de aquecimento. No entanto, ainda são afetados pela temperatura ambiente e humidade.
Além disso, o sensor Fermion Smoke não está calibrado e, portanto, não pode ser usado diretamente para medir concentrações reais em unidades ppm. Em teoria, poderias calibrar o sensor tu mesmo, mas na prática isso seria difícil. A DFRobot também oferece sensores calibrados, mas são maiores e mais caros (link).
Note que existe uma série inteira de diferentes sensores MEMS disponíveis. Para uma visão geral, vê o artigo Review of the DFRobot Fermion MEMS Gas Sensor Series e para detalhes, os nossos posts dedicados:
- 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
Se tiveres alguma dúvida, não hesites em deixar nos comentários.
Boas experiências 😉

