O Fermion: MEMS CO Gas Detection Sensor é um sensor compacto em placa breakout projetado para detectar monóxido de carbono (CO) usando tecnologia moderna de sistemas microeletromecânicos (MEMS). Integra um elemento sensor MEMS GM-702B que responde às concentrações de CO no ar fornecendo uma tensão analógica proporcional à presença do gás.
O CO é extremamente venenoso e causa cerca de 400 mortes anualmente nos EUA. Fontes comuns incluem equipamentos de aquecimento mal mantidos ou usados incorretamente, aparelhos a gás, grelhadores a carvão e motores em funcionamento em espaços confinados. Como é indetetável pelos sentidos humanos, um alarme de CO é a única forma de detetar a sua presença.
Neste tutorial, aprenderás como detetar monóxido de carbono com o sensor. Vamos construir um sistema de alarme simples que pisca um LED ou soa um buzzer se a concentração de monóxido de carbono ficar demasiado alta.
Peças Necessárias
Vais precisar do sensor Fermion CO da DFRobot. Quanto ao microcontrolador, usei um Arduino Uno para este projeto, mas qualquer outro Arduino ou ESP32 também funcionará.
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 o valor medido de CO no ecrã.

Sensor Fermion MEMS CO

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 Sensor de Monóxido de Carbono (CO) Fermion
O breakout do Sensor Fermion MEMS de Monóxido de Carbono (CO) é construído em torno de um pequeno elemento sensor MEMS de gás. Este elemento é uma estrutura microeletromecânica revestida com um filme sensível proprietário que altera as suas características elétricas quando exposto a moléculas de CO.
A placa breakout inclui componentes passivos de suporte e fornece um único sinal de saída analógica. A alimentação e o terra são fornecidos através de níveis lógicos padrão de 3,3 V/5 V.
Princípio de Detecção
O núcleo sensor usa tecnologia MEMS para detetar gás CO. Esta tecnologia baseia-se na interação entre moléculas de CO e uma superfície quimicamente sensível na estrutura MEMS. Quando o CO está presente, a resistência do material sensor altera-se.
O circuito interno da placa breakout converte esta variação de resistência numa tensão analógica proporcional no pino de saída. Não há processamento digital a bordo, pelo que o sinal analógico bruto deve ser lido e interpretado pelo microcontrolador.
Características Elétricas
O sensor opera com uma tensão de alimentação entre 3,3 V e 5 V. A corrente típica de operação é baixa, da ordem de dezenas de miliamperes, o que permite o uso em sistemas alimentados por bateria com gestão adequada de energia.
A tensão de saída analógica varia com a concentração do gás, mas não está referenciada a unidades calibradas. A saída deve ser amostrada através de um conversor analógico-digital no microcontrolador anfitrião.
Comportamento do Sinal e Aquecimento
O sensor requer um curto período de aquecimento após a aplicação da alimentação antes que as leituras se estabilizem. Durante este tempo, o elemento MEMS atinge um equilíbrio térmico e elétrico. Após o aquecimento, a tensão de saída varia em resposta às mudanças na concentração de CO.
Limitações
O sensor não inclui compensação interna para temperatura ou humidade. Estes fatores ambientais podem influenciar a saída analógica, pelo que sensores adicionais podem ser usados num sistema que exija medições mais estáveis. Além disso, como a saída não é calibrada, estimativas absolutas da concentração de CO requerem calibração externa contra níveis de referência conhecidos.
Especificações Técnicas
A tabela seguinte resume as especificações técnicas do Sensor Fermion CO GM-702B:
| Parâmetro | Especificação |
|---|---|
| Elemento Sensor | Sensor de gás MEMS GM-702B |
| Gás Alvo | Monóxido de Carbono (CO) |
| Faixa de Detecção | 5 ppm a 5000 ppm (típico) |
| Sinal de Saída | Tensão analógica |
| Tensão de Operação | 3,3 V a 5 V DC |
| Corrente de Operação | < 20 mA (típico) |
| Tipo de Interface | Pino único de saída analógica |
| Tipo de Resposta | Mudança de resistência convertida em tensão |
| Temperatura de Operação | −10 °C a +50 °C |
| Humidade de Operação | 15 % a 90 % HR (sem condensação) |
| Calibração | Sem calibração de fábrica fornecida |
Pinagem
Fisicamente, o breakout do sensor 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 a pinagem da placa:

Esquemas
A imagem seguinte mostra o esquema da placa do Sensor de Gás Fermion CO GM-702B:

Podes ver o regulador de tensão e o chip sensor GM-702B com um resistor de carga de 10K 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 um longo período, é recomendado deixá-lo funcionar entre 48 a 168 horas:

Especificações Técnicas
A tabela seguinte resume as especificações técnicas do Sensor Fermion CO GM-702B:
| Especificação | Detalhe |
|---|---|
| Modelo do Sensor | GM-702B |
| Gás Detectado | Monóxido de Carbono (CO) |
| Faixa de Detecção | ~5 ppm a 5000 ppm CO |
| Tipo de Saída | Tensão analógica (proporcional/indicativa) |
| Tensão de Alimentação | 3,3 V – 5 V DC |
| Corrente de Operação | < 20 mA |
| Sensibilidade | R₀(no ar) / Rₛ(em 150 ppm CO) ≥ 3 |
| Temperatura de Operação | -10 °C a +50 °C |
| Humidade de Operação | 15 % – 90 % HR (sem condensação) |
| Tempo de Aquecimento | Recomendado ≥ 5 min (mais longo após armazenamento) |
| Expectativa de Vida | ≥ 5 anos (no ar) |
| Tamanho da Placa Breakout | ~13×13×2.5 mm (incluindo PCB) |
| Interface | 3 pinos: A (saída analógica), VCC, GND |
| Aplicações Típicas | Alarmes de fuga de CO, monitorização ambiental, sistemas de deteção de segurança |
E aqui está um link para a folha de dados do sensor GM-702B com dados técnicos adicionais:
Sensor Fermion GM-702B CO versus Sensor MQ-7 CO
O Sensor Fermion MEMS de Monóxido de Carbono (CO) e o Sensor de Gás MQ-7 CO são ambos usados frequentemente em aplicações de hobby para detetar monóxido de carbono, mas diferem no princípio de deteção, características de desempenho e requisitos de integração.
Tecnologia de Deteção
O sensor MEMS Fermion usa um elemento sensor de sistemas microeletromecânicos (MEMS) que reage à presença de CO com uma alteração nas suas propriedades elétricas. Esta alteração é convertida na placa breakout numa tensão analógica proporcional.
O MQ-7, por outro lado, é um sensor semicondutor de óxido metálico (MOX). Baseia-se numa superfície aquecida de óxido de estanho cuja resistência varia quando moléculas de CO interagem com a camada sensora aquecida. Este mecanismo faz com que o MQ-7 tenha tipicamente um consumo médio de energia superior ao sensor MEMS Fermion.
Alimentação e Aquecimento
Em termos de alimentação e comportamento de aquecimento, o sensor MEMS geralmente estabiliza mais rapidamente e consome menos energia porque não alimenta um aquecedor separado com alta corrente.
O MQ-7, por sua vez, usa um esquema de ciclo periódico de aquecimento para alcançar sensibilidade e deve ser alimentado com tensões e temporizações específicas para produzir leituras repetíveis, o que adiciona complexidade no firmware e aumenta o consumo energético.
Saída
Ambos os sensores fornecem uma saída analógica que deve ser lida por um conversor analógico-digital num microcontrolador como Arduino ou ESP32. No entanto, nenhum dos sensores fornece um valor digital calibrado de concentração diretamente.
Seletividade e Estabilidade
Em seletividade e estabilidade, o sensor MEMS geralmente apresenta menor sensibilidade cruzada e melhor estabilidade de linha base a longo prazo comparado com sensores MOX como o MQ-7, que podem responder a múltiplos gases redutores e são influenciados pela humidade e temperatura ambientais.
Resumo
No geral, o sensor Fermion MEMS CO tende a ser mais adequado para projetos que valorizam baixo consumo, resposta rápida e integração simples, enquanto o MQ-7 é atraente para deteção básica de CO a baixo custo, mas exige controlo de energia, calibração e compensação ambiental mais cuidadosos no firmware.
Ligação do Sensor Fermion CO ao Arduino UNO
Ligar o sensor a um Arduino UNO é simples. Liga o VCC a 5V (ou 3,3V), o GND ao terra e o A à entrada analógica A0 conforme mostrado abaixo:

Exemplos de Código
Leitura da concentração de Monóxido de Carbono
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 Monóxido de Carbono no ambiente.
Se o sensor ainda não tiver aquecido completamente, verás uma sequência de valores a diminuir continuamente no Monitor Serial. Veja abaixo:

Após vários minutos, as medições estabilizam. No meu caso, num valor em torno de 130. Podes testar o sensor respirando sobre ele. Verás um aumento súbito no valor medido:

Como o sensor não está calibrado, não podes usá-lo para medir concentrações reais em ppm (partes por milhão) ou mg/m 3 . No entanto, podes usá-lo para construir um alarme de Monóxido de Carbono, que faremos na próxima secção.
Alarme de Monóxido de Carbono com LED
O código seguinte implementa um alarme simples de Monóxido de Carbono. Liga um LED se o valor medido de CO ultrapassar um limiar predefinido de 160:
byte sensorPin = A0;
byte ledPin = 13;
int threshold = 160;
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, pode querer adicionar também um sensor de temperatura e um de humidade, pois as leituras do sensor são afetadas por temperatura e humidade. Alternativamente, podes usar uma janela deslizante para compensar a deriva do sensor devido à temperatura e humidade.
Alarme de Monóxido de Carbono com Buzzer Passivo
Em vez de um LED, podes também usar um buzzer para sinal de alarme. No código seguinte, um buzzer passivo é ativado se a concentração de CO medida ultrapassar o limiar:
byte sensorPin = A0;
byte buzzerPin = 11;
int threshold = 160;
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 via 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 Active and Passive Piezo Buzzers with Arduino tutorial.
Se tiveres um buzzer ativo, deves usar o código do alarme com LED anterior, pois não funcionará corretamente com o comando tone().
Exibir a Concentração de Monóxido de Carbono no OLED
Neste último exemplo, mostramos os valores medidos de concentração de fumo num pequeno OLED. O código imprime “CO” 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(50, 10);
oled.print("CO");
sprintf(text, " %d ", val);
oled.setTextSize(2);
oled.setCursor(35, 40);
oled.print(text);
oled.display();
delay(100);
}
Note que precisas da Adafruit_SSD1306 biblioteca para controlar o OLED. Podes instalá-la via o Library Manager como de costume:

Ligar o OLED ao Arduino é fácil. Liga o 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 o VCC a 5V e o GND ao GND. A imagem abaixo mostra a ligação completa:

Se precisares de ajuda com o OLED, dá uma vista de olhos ao Use SSD1306 I2C OLED Display With Arduino tutorial.
Conclusão
Neste tutorial aprendeste a usar o sensor Fermion CO com um Arduino UNO para detetar Monóxido de Carbono. 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 curto tempo de aquecimento. No entanto, ainda são afetados pela temperatura e humidade ambiente.
Além disso, o sensor de Monóxido de Carbono Fermion não é calibrado e, portanto, não pode ser usado diretamente para medir concentrações reais em unidades ppm.
Note que existe uma série inteira de diferentes sensores MEMS disponíveis. Para uma visão geral, vê o Review of the DFRobot Fermion MEMS Gas Sensor Series artigo e para detalhes os nossos posts dedicados:
- Fermion MEMS VOC Gas Sensor GM-502B with Arduino
- Fermion MEMS Smoke Sensor GM-202B with Arduino
- Fermion MEMS Odor Sensor GM-512B with Arduino
- Fermion MEMS Multi-Gas Sensor MiCS-5524 with Arduino
Se tiveres alguma dúvida, sente-te à vontade para deixar nos comentários.
Boas experiências de construção 😉

