Skip to Content

Como usar o Sensor de Gás MQ-2 com Arduino e um OLED

Como usar o Sensor de Gás MQ-2 com Arduino e um OLED

Neste artigo, vamos aprender como usar o sensor de gás MQ-2 com um Arduino para mostrar os níveis de gás num ecrã OLED. O Sensor de Gás MQ-2 é um sensor universal que pode detetar vários gases, como metano, butano, propano, álcool, fumo e mais. Ao ligar o sensor MQ-2 a um Arduino e mostrar os níveis de gás num ecrã OLED, podemos monitorizar facilmente os níveis de gás ambiente à nossa volta.

Nas secções seguintes, vamos discutir as peças necessárias para este projeto, apresentar uma introdução ao sensor MQ-2, explicar como ligar as peças entre si e guiar-te na escrita do código Arduino. Por fim, concluiremos resumindo os pontos principais e respondendo a algumas perguntas frequentes.

Se estás interessado em construir um sistema de monitorização de níveis de gás usando o Sensor Universal de Gás MQ-2 e Arduino, continua a ler!

Peças Necessárias

Abaixo encontras as peças necessárias para este projeto. Se já tens um conjunto de resistores e alguns LEDs, não precisarás do kit sugerido. Apenas um LED vermelho e um resistor de 220 Ohm são necessários para este projeto específico.

Arduino Uno

Dupont wire set

Conjunto de fios Dupont

Half_breadboard56a

Breadboard

USB Data Sync cable Arduino

Cabo USB para Arduino UNO

OLED display

Ecrã OLED

MQ-2 Gas Sensor

Sensor de Gás 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.

Apresentação do MQ-2

O MQ-2 é um sensor de gás bastante universal que pode detetar vários gases como metano, propano, butano, álcool, fumo e mais. Tem alta sensibilidade e tempo de resposta rápido.

Em contraste com o MQ-2, os outros sensores da série MQ são otimizados para detetar tipos específicos de gases. Por exemplo:

  • MQ-3: Projetado principalmente para detetar álcool.
  • MQ-4: Projetado principalmente para detetar metano e gás natural.
  • MQ-5: Projetado para GPL e gás natural.
  • MQ-6: Projetado especificamente para detetar GPL.
  • MQ-7: Focado na deteção de monóxido de carbono (CO).
  • MQ-8: Principalmente para deteção de hidrogénio.
  • MQ-9: Deteta monóxido de carbono (CO) e gases inflamáveis.

Note que temos tutoriais para alguns destes sensores:

Especificações técnicas do Sensor de Gás MQ-2

Abaixo encontras as especificações técnicas do Sensor de Gás MQ-2:

  • Tensão de funcionamento: 5V DC
  • Tensão do aquecedor: 5V DC
  • Consumo de energia: Aproximadamente 150mA
  • Resistência de deteção: 2KΩ a 20KΩ em ar limpo
  • Sensibilidade: Ajustável através de um potenciômetro
  • Tempo de pré-aquecimento: Aproximadamente 48 horas
  • Tempo de resposta: Menos de 10 segundos
  • Tempo de recuperação: Menos de 30 segundos
  • Temperatura de funcionamento: -10°C a 50°C
  • Humidade de funcionamento: 95% RH (sem condensação)

Note que estas especificações podem variar ligeiramente dependendo do fabricante e da versão do Sensor de Gás MQ-2.

Internos do Sensor de Gás MQ-2

Nesta secção, analisamos o funcionamento interno do sensor MQ-2. O sensor usa uma camada composta por um óxido metálico (SnO2). Quando o gás entra em contacto com esta camada, reage com o oxigénio presente na superfície do SnO2. Isso resulta numa alteração da resistência.

A imagem abaixo é retirada do MQ-2 Datasheet sensor e mostra os seus componentes e circuito interno.

Se olhares atentamente, podes ver que a camada de deteção (1) está envolvida numa bobina de aquecimento (4). Esta fornece o calor necessário para ocorrer a reação química do gás com o SnO2. O elemento de aquecimento é a razão pela qual sentirás que o sensor aquece durante a operação.

À volta da camada de deteção e da bobina de aquecimento há um tubo cerâmico (5) para proteção física e isolamento térmico. A malha no topo (6) assegura que o gás não exploda devido ao aquecedor.

Finalmente, temos os eletrodos (2, 3), feitos de ouro (Au) e platina (Pt). Eles estão ligados à camada de deteção. Os eletrodos medem as alterações na resistência da camada de deteção.

Características de Sensibilidade do Sensor de Gás MQ-2

O sensor de gás MQ-2 é projetado para detetar gases como GPL (gás de petróleo liquefeito), metano (CH4), propano, álcool, hidrogénio (H2), fumo e monóxido de carbono (CO). Como podes ver no diagrama abaixo, a sua sensibilidade é largamente uniforme entre estes gases (mesma inclinação).

A sensibilidade do sensor refere-se à razão (Rs/Ro) da resistência do sensor em vários gases em relação à resistência do sensor em ar limpo. Podes ver que quanto mais gás está presente (ppm mais alto), menor é a resistência.

Dependência da Humidade e Temperatura do Sensor de Gás MQ-2

Note, no entanto, que o sensor de gás MQ-2 é influenciado pela humidade e temperatura ambiente. O gráfico seguinte mostra a alteração da resistência dependendo da temperatura e humidade ambiente.

A humidade pode afetar o desempenho do sensor, principalmente porque o vapor de água pode ocupar os sítios ativos na camada de deteção de dióxido de estanho (SnO2) onde ocorrem as reações de deteção de gás.

A temperatura é outro fator a considerar ao usar o sensor de gás MQ-2. O sensor MQ-2 inclui um aquecedor incorporado para manter a temperatura necessária para a camada de deteção SnO2. No entanto, a temperatura ambiente ainda pode influenciar as leituras do sensor.

Se precisares de leituras precisas e estáveis, poderás precisar de sensores adicionais de temperatura e humidade para compensar essas dependências. Também nota que o MQ-2 precisa de aquecer por pelo menos 20 segundos antes das suas leituras se tornarem estáveis e fiáveis.

Pinout dos Sensores de Gás MQ-2

Em vez de usar o sensor MQ-2 cru, é mais fácil usar um dos módulos MQ-2, como o listado acima. Estes módulos têm quatro pinos para fácil interface com o microcontrolador. O pino VCC é para a alimentação de 5V e o pino GND deve ser ligado ao terra. O pino A0 fornece a tensão de saída analógica proporcional à concentração de gás. E o pino D0 emite um sinal digital (HIGH ou LOW).

Pinout of MQ-2 Gas Sensor
Pinout do Sensor de Gás MQ-2

No lado de trás do módulo encontrarás um trimmer para ajustar o limiar de comutação para o D0. Lá também vês um LED de alimentação (vermelho) que acende quando o módulo tem energia. Além disso, há um LED de deteção (verde) que acende quando o gás é detetado (D0=HIGH) acima do limiar definido pelo trimmer.

Backside of the MQ2 gas sensor module
Lado de trás do módulo do sensor de gás MQ-2

Testar o Sensor de Gás MQ-2

Podes testar facilmente a função do módulo mesmo sem um Arduino. Liga o VCC e o GND a uma fonte de 5V e o LED vermelho de alimentação na parte de trás do módulo deve acender. Agora espera alguns segundos (para leituras estáveis >20 segundos). Vais notar que o módulo do sensor aquece ligeiramente devido ao elemento de aquecimento.

Testing the MQ-2 gas sensor
Testar o sensor de gás MQ-2

Se pulverizares um pouco de álcool (limpador de ecrãs, perfume, …) em frente ao sensor, o LED verde de deteção acenderá. Se não, ajusta o trimmer na parte de trás do módulo. Também podes tentar o gás de um isqueiro.

Na próxima secção, vamos discutir como ligar o Sensor de Gás MQ-2 ao Arduino e escrever o código necessário para começar a detetar gás metano.

Ligar as Peças

Nesta secção vamos ligar o sensor MQ-2 e o ecrã OLED. Primeiro, liga a alimentação do Arduino às linhas de alimentação da breadboard (fio vermelho e azul dos pinos 5V e GND). Depois liga a alimentação das linhas de alimentação ao sensor MQ-2 e ao ecrã OLED (fios vermelho e azul).

Connecting the MQ-2 gas sensor and the OLED display to an Arduino

Mas atenção! Existem duas versões do ecrã OLED SDD1306 128×64, com os pinos VCC e GND invertidos! Certifica-te de ligar o VCC a +5V (ou +3V3, que também funciona). Se precisares de mais detalhes sobre como ligar e usar o OLED, dá uma vista de olhos no nosso tutorial sobre How to Interface the SSD1306 I2C OLED Graphic Display.

Depois disso, liga a saída analógica A0 do sensor MQ-2 à entrada analógica A0 do Arduino (fio amarelo). Finalmente, precisamos ligar os pinos I2C SCL e SDA às entradas A5 e A4 do Arduino (fios roxo e verde, SCL->A5, SDA->A4).

Com isso, a ligação das peças está completa. Se precisares de mais detalhes sobre a fiação dos componentes, consulta a tabela abaixo.

De Pino Cor do fio Para Pino
Arduino 5V Vermelho Breadboard Linha positiva
Arduino GND Azul Breadboard Linha negativa
MQ-2 GND Azul Breadboard Linha negativa
MQ-2 VCC Vermelho Breadboard Linha positiva
MQ-2 Out/Sinal/A0 Amarelo Arduino A0
OLED VCC Vermelho Breadboard Linha positiva
OLED GND Azul Breadboard Linha negativa
OLED SCL Roxo Arduino A5
OLED SDA Verde Arduino A4

Na próxima secção vamos escrever o código para mostrar os níveis de gás medidos no ecrã OLED.

Escrever o Código Arduino

O código abaixo lê dados de um sensor MQ-2 e mostra o valor do sensor num ecrã OLED. Corre continuamente, atualizando o ecrã a cada segundo com um novo valor do 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 o código em mais detalhe, vamos analisar as suas partes. Começamos pelas bibliotecas e constantes.

Bibliotecas e Constantes

Primeiro incluímos as bibliotecas necessárias para a comunicação I2C com o ecrã OLED.

#include "Wire.h"
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"

Depois definimos as constantes para a largura, altura do ecrã e o endereço I2C.

#define SCREEN_WIDTH 128 
#define SCREEN_HEIGHT 64 
#define SCREEN_ADDRESS 0x3C 

Cuidado ao procurar o endereço I2C do teu ecrã. Normalmente esse endereço é 0x3C. Se tiveres sorte, verás este endereço na parte de trás do módulo OLED (imagem à esquerda abaixo). Podes alterar o endereço soldando o resistor na segunda posição.

Existem outros módulos OLED comuns que mostram o endereço I2C como 0x78 na parte de trás (imagem à direita). Isto é enganador (é o endereço de 8 bits em contraste com o endereço de 7 bits que precisas). O endereço I2C para estes ecrãs é também 0x3C ! Não te deixes enganar pela etiqueta na parte de trás.

I2C address selector on two OLED modules
Seletor de endereço I2C em dois módulos OLED

Se não conseguires fazer funcionar e precisares de encontrar o endereço I2C, podes instalar a I2CScanner biblioteca para isso. Aqui está o code para executar uma varredura. Mas certifica-te que o ecrã está corretamente ligado e alimentado.

#include "I2CScanner.h"

I2CScanner scanner;

void setup() {
  Serial.begin(9600);
  while (!Serial) {};

  scanner.Init();
}

void loop() {
  scanner.Scan();
  delay(5000);
}

Objeto do Ecrã

Nesta linha criamos o display objeto usando as constantes definidas acima.

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

Configuração do Ecrã

Na função setup() inicializamos a comunicação serial e iniciamos o ecrã OLED. Se o ecrã não for encontrado, imprimimos uma mensagem de erro e entramos num ciclo 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);  
}

Caso contrário, esperamos um curto período (100ms). Depois definimos o tamanho do texto para 5 e a cor do texto para branco. Um tamanho de texto 5 preenche bem o ecrã.

Leitura de Dados e Exibição

Na função loop() primeiro lemos o valor analógico do pino A0, que está ligado ao sensor MQ-2. Depois imprimimos o valor do nível de gás no monitor serial.

  int sensorValue = analogRead(A0);
  Serial.print("Gas:");
  Serial.println(sensorValue);

De seguida, limpamos o ecrã OLED, definimos a posição do cursor para (20, 16), que vai mostrar o valor do sensor MQ-2 aproximadamente no centro do ecrã. Depois imprimimos o valor do sensor no ecrã. No entanto, o valor só aparecerá depois de atualizarmos o ecrã chamando display.display().

  display.clearDisplay();
  display.setCursor(20, 16);
  display.println(sensorValue);
  display.display();

  delay(1000);

Finalmente, adicionamos um atraso de 1 segundo antes de repetir o ciclo.

Exemplo de saída

Se executares este código e observares o Serial Plotter, deverás ver um pico a aparecer se expuseres o sensor MQ-2 a algum gás (perfume, limpador de ecrãs, isqueiro) ou fumo. A imagem abaixo mostra a resposta do sensor após exposição aos fumos de álcool isopropílico (limpador de ecrãs).

MQ-2 sensor response to isopropyl alcohol
Resposta do sensor MQ-2 ao álcool isopropílico

Aqui está. Agora podes monitorizar os níveis de gás e construir um sistema de aviso de gás!

Conclusão

Neste tutorial, aprendemos como usar o Sensor Universal de Gás MQ-2 com Arduino. Começámos por apresentar as peças necessárias para este projeto, que incluem uma placa Arduino, o sensor MQ-2, um ecrã OLED e alguns fios jumper.

De seguida, discutimos o sensor MQ-2 em detalhe, explicando a sua funcionalidade e os gases que pode detetar.

Depois, passámos ao aspeto prático do projeto e mostramos como ligar o sensor MQ-2 à placa Arduino. Fornecemos um diagrama claro de ligação e explicámos o propósito de cada conexão.

Para fazer o sensor funcionar, escrevemos um código Arduino simples que lê a saída analógica do sensor MQ-2 e a mostra num ecrã OLED. Explicámos o código passo a passo, tornando-o fácil de entender.

Em conclusão, o Sensor Universal de Gás MQ-2 é uma opção versátil e acessível para detetar vários gases. Com a ajuda de uma placa Arduino, podes integrar facilmente este sensor nos teus projetos e criar sistemas de monitorização de gás.

Esperamos que este tutorial tenha sido útil para começares a usar o sensor MQ-2. Se tiveres mais perguntas ou precisares de ajuda adicional, consulta a secção de Perguntas Frequentes ou deixa um comentário.

Boas experiências com o Sensor Universal de Gás MQ-2 e Arduino!

Perguntas Frequentes

Aqui estão algumas perguntas comuns sobre o uso do Sensor de Gás MQ-2 com Arduino:

P: Como funciona o Sensor de Gás MQ-2?

O Sensor de Gás MQ-2 funciona com base no princípio da condutividade do gás. Contém um elemento de deteção feito de dióxido de estanho (SnO2) que reage com o gás. Quando o gás está presente, a condutividade do elemento de deteção aumenta, o que pode ser medido pelo Arduino.

P: Quão preciso é o Sensor de Gás MQ-2?

A precisão do Sensor de Gás MQ-2 pode variar dependendo de vários fatores, como calibração, condições ambientais e concentração do gás detetado.

P: Como posso calibrar o Sensor de Gás MQ-2?

Para calibrar o Sensor de Gás MQ-2, precisas expô-lo a uma concentração conhecida de gás. O datasheet indica:
Recomendamos que calibres o detector para 1000ppm de gás de petróleo liquefeito, ou 1000ppm de concentração de iso-butano no ar e uses um valor de resistência de carga (RL) de cerca de 20 KΩ (5KΩ a 47 KΩ).

P: Posso usar o Sensor de Gás MQ-2 para aplicações de segurança?

Embora o Sensor de Gás MQ-2 possa detetar gases inflamáveis, não é certificado para aplicações de segurança. Destina-se principalmente a fins educativos, de pesquisa e prototipagem.

P: Posso usar o Sensor de Gás MQ-2 com ESP32?

Sim, o Sensor de Gás MQ-2 pode ser usado com ESP32 também. A ligação e o código serão semelhantes aos usados com Arduino. No entanto, certifica-te de verificar os níveis de tensão e a compatibilidade dos pinos entre o sensor e a placa ESP32.

P: Posso alimentar o Sistema de Deteção de Gás com baterias?

É possível, mas requer baterias bastante grandes e eu não recomendaria. O sensor MQ-2 consome cerca de 150mA e precisa de aquecer por pelo menos 30 segundos para leituras fiáveis.

P: Qual é a vida útil típica do sensor MQ-2?

A vida útil do sensor MQ-2 pode variar dependendo do uso e das condições ambientais. Em média, pode durar vários anos com os devidos cuidados.

P: Posso usar o sensor MQ-2 em ambientes exteriores?

O sensor MQ-2 não é projetado para uso exterior. Recomenda-se usá-lo em ambientes interiores onde possa fornecer deteção de gás precisa.

Consulta o MQ-2 Datasheet para informações e especificações mais detalhadas.

Links

Aqui tens alguns outros links úteis sobre o sensor MQ-2 e como usá-lo com um Arduino.