Arduino Nano ESP32 - Sensor de Álcool MQ3

Este tutorial guia você no uso do Arduino Nano ESP32 com o sensor de álcool MQ3 para detectar e medir concentrações de etanol e de vapor de álcool. O sensor MQ3 é ideal para montar sistemas de análise de hálito (bafômetros), alarmes de vapor de álcool e ferramentas de avaliação da qualidade do ar.

Neste tutorial, você vai aprender:

Arduino Nano ESP32 com módulo sensor de gás de álcool MQ3

Hardware Necessário

1×Arduino Nano ESP32
1×Cabo USB Tipo-A para Tipo-C (para PC com USB-A)
1×Cabo USB Tipo-C para Tipo-C (para PC com USB-C)
1×MQ3 Alcohol Sensor
1×Protoboard
1×Fios Jumper
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para Arduino Nano
1×(Recomendado) Placa de Expansão Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentação para Arduino Nano ESP32

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

Sobre o Sensor de Álcool MQ3

O MQ3 é um quimiorresistor de semicondutor de óxido metálico (MOS) que detecta a presença de álcool monitorando as variações de resistência no seu elemento sensor. Este sensor é especializado na detecção de vapor de etanol e oferece desempenho consistente em uma ampla faixa de concentração.

O componente ativo do sensor tem uma camada de dióxido de estanho (SnO2) aplicada sobre um substrato cerâmico de óxido de alumínio. O aquecimento torna o material SnO2 reativo às moléculas de álcool ao redor. Uma malha de proteção de aço inoxidável envolve o sensor, protegendo os componentes internos e ao mesmo tempo permitindo que as moléculas de gás cheguem à câmara de detecção.

As aplicações típicas incluem bafômetros caseiros, dispositivos de detecção de direção sob efeito de álcool, sistemas de alerta de vapor de álcool e estações de monitoramento de álcool no ambiente.

Especificações Técnicas

  • Tensão de operação: 5V DC
  • Resistência de carga: 200 KΩ
  • Resistência do aquecedor: 33Ω ± 5%
  • Consumo do aquecimento: < 800mW
  • Resistência de detecção: 1 MΩ – 8 MΩ
  • Faixa de detecção: 25 – 500 ppm (partes por milhão)
  • Tempo de pré-aquecimento: 24-48 horas no primeiro uso

O que é ppm? O termo ppm (partes por milhão) expressa a proporção entre as moléculas do gás-alvo e o total de moléculas. Por exemplo, 500 ppm indica que existem 500 moléculas de álcool em cada 1.000.000 de moléculas de gás, sendo que as outras 999.500 são outros componentes da atmosfera.

Pinagem

O módulo sensor MQ3 oferece quatro terminais de conexão:

  • Pino VCC: Conecte a uma fonte de +5V.
  • Pino GND: Conecte ao terra (0V).
  • Pino DO: A saída digital muda para LOW quando o álcool passa do limite, ou para HIGH quando está abaixo. O limite é ajustável pelo potenciômetro da placa.
  • Pino AO: A saída analógica fornece uma tensão proporcional à concentração de álcool. Mais álcool gera uma tensão de saída maior.
Diagrama da pinagem do módulo sensor de álcool MQ3

Dois indicadores LED mostram o status:

  • PWR-LED: Acende quando o módulo está alimentado.
  • DO-LED: Reflete o status da saída digital — acende durante a detecção de álcool e fica apagado no resto do tempo.

Como Funciona

O princípio de detecção do MQ3 se baseia nas variações de resistência do seu semicondutor de dióxido de estanho (SnO2):

No ar limpo: O aquecimento faz as moléculas de oxigênio aderirem à superfície do SnO2, prendendo elétrons e formando uma camada de depleção. Esses elétrons presos criam uma barreira de condução, resultando em alta resistência elétrica.

Durante a exposição ao álcool: As moléculas de álcool interagem com o oxigênio da superfície, quebrando ligações e liberando os elétrons presos na rede do dióxido de estanho. Essa liberação de elétrons aumenta bastante a condutividade — quanto maior a concentração de álcool, menores os valores de resistência.

O sensor oferece dois modos de saída:

Saída Digital (pino DO):

  • Um potenciômetro de ajuste na placa controla o limite de detecção.
  • Quando o álcool detectado fica acima do limite, o DO vai para LOW e o indicador LED acende.
  • Quando a detecção fica abaixo do limite, o DO fica em HIGH e o LED apagado.

Saída Analógica (pino AO):

  • A tensão varia diretamente com a concentração de álcool.
  • Mais vapor de álcool = tensão de saída mais alta.
  • Menos vapor de álcool = tensão de saída mais baixa.
  • Observação: O potenciômetro de ajuste afeta apenas o limite digital, não a saída analógica.

Aquecimento e Calibração

Requisitos de Pré-aquecimento

O sensor MQ3 precisa de um aquecimento adequado para dar medições confiáveis:

  • Primeira instalação ou armazenamento prolongado (30+ dias): Mantenha o aquecimento contínuo por 24-48 horas para estabilizar o sensor e garantir a precisão das medições.
  • Uso recente: Um aquecimento curto de 5-10 minutos é suficiente. Os valores iniciais podem parecer altos, mas se normalizam rapidamente.

Para aquecer o sensor, conecte VCC e GND a 5V e ao terra — por uma fonte de alimentação dedicada ou diretamente aos pinos de alimentação do seu Arduino Nano ESP32.

Encontrando os Seus Valores de Limite

Sensores de gás com elementos de aquecimento, como o MQ3, podem sofrer desvio de calibração após o armazenamento. Para projetos de bafômetro, defina os valores de limite corretos com esta sequência de calibração:

  1. Meça a linha de base no ar limpo: Deixe o sensor funcionando em ar fresco, sem álcool presente. Anote o valor analógico (normalmente 100-150).
  2. Teste com vapor de álcool: Posicione álcool isopropílico ou álcool em gel perto do sensor (sem tocar), deixando o vapor chegar ao detector. Anote as leituras mais altas (comumente 400-900, dependendo da concentração do vapor).
  3. Defina os limites de detecção: Usando os dados que você anotou, defina as zonas de detecção:
  • Faixa sóbria: Valores abaixo da linha de base + 20 (exemplo: < 120)
  • Faixa moderada: Valores intermediários (exemplo: 120-400)
  • Faixa alta: Valores acima do limite moderado (exemplo: > 400)

Importante: Cada unidade do sensor e cada condição do ambiente produzem valores diferentes. Sempre calibre usando o seu hardware específico antes de usar.

Definindo o Limite Digital

Configure o ponto de ativação do pino DO usando o potenciômetro do módulo:

  1. Exponha o sensor ao vapor de álcool.
  2. Gire o potenciômetro no sentido horário até o LED acender.
  3. Gire aos poucos no sentido anti-horário até o LED acabar de apagar.
  4. O limite digital agora está calibrado.

Diagrama de Ligação

O módulo MQ3 oferece saídas digital e analógica. Escolha uma das saídas ou use as duas ao mesmo tempo, de acordo com as necessidades da sua aplicação.

  • O diagrama de ligação entre o Arduino Nano ESP32 e o sensor de álcool MQ3 quando alimentado pela porta USB.
Diagrama de ligação do sensor de álcool MQ3 com o Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Sensor de Álcool MQ3Arduino Nano ESP32
VCC5V
GNDGND
DOD2
AOA5
  • O diagrama de ligação entre o Arduino Nano ESP32 e o sensor de álcool MQ3 quando alimentado pelo pino Vin.
Diagrama de ligação do detector de álcool com o Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Código do Arduino Nano ESP32 - Leitura da Saída Digital

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-mq3-alcohol-sensor */ #define PIN_DO D2 // The Arduino Nano ESP32's pin connected to the DO pin of the MQ3 sensor void setup() { // Initialize serial communication Serial.begin(9600); // Initialize the Arduino Nano ESP32's pin as an input pinMode(PIN_DO, INPUT); // Warm-up message Serial.println("Warming up the MQ3 sensor"); delay(20000); // 20 seconds warm-up time for recently used sensor } void loop() { int gasState = digitalRead(PIN_DO); if (gasState == HIGH) { Serial.println("Alcohol is NOT detected"); } else { Serial.println("Alcohol is detected"); } delay(1000); }

Passos Rápidos

  • Se esta é a primeira vez que você usa o Arduino Nano ESP32, veja como configurar o ambiente para o Arduino Nano ESP32 no Arduino IDE.
  • Copie o código acima para o Arduino IDE
  • Clique no botão Upload para programar o Arduino Nano ESP32
  • Aproxime uma fonte de vapor de álcool do sensor MQ3 (álcool em gel ou álcool comum em um algodão funcionam bem)
  • Veja os resultados da detecção no Serial Monitor
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
Alcohol is NOT detected Alcohol is NOT detected Alcohol is NOT detected Alcohol is detected Alcohol is detected Alcohol is detected Alcohol is detected Alcohol is NOT detected Alcohol is NOT detected
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

Lembre-se de que, se o status do LED ficar sempre aceso ou sempre apagado, ajuste o potenciômetro para regular a sensibilidade do sensor e obter uma detecção precisa.

Código do Arduino Nano ESP32 - Leitura da Saída Analógica

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-mq3-alcohol-sensor */ #define PIN_AO A5 // The Arduino Nano ESP32's pin connected to the AO pin of the MQ3 sensor void setup() { // Initialize serial communication Serial.begin(9600); // Set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); // Warm-up message Serial.println("Warming up the MQ3 sensor"); delay(20000); // 20 seconds warm-up time for recently used sensor } void loop() { int gasValue = analogRead(PIN_AO); Serial.print("MQ3 sensor AO value: "); Serial.println(gasValue); delay(1000); }

Passos Rápidos

  • Copie o código acima para o Arduino IDE
  • Clique no botão Upload para programar o Arduino Nano ESP32
  • Aproxime vapor de álcool do sensor (álcool em gel ou vapores de álcool isopropílico)
  • Acompanhe os valores no Serial Monitor
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
MQ3 sensor AO value: 120 MQ3 sensor AO value: 125 MQ3 sensor AO value: 128 MQ3 sensor AO value: 450 MQ3 sensor AO value: 620 MQ3 sensor AO value: 850 MQ3 sensor AO value: 920 MQ3 sensor AO value: 980 MQ3 sensor AO value: 950 MQ3 sensor AO value: 680 MQ3 sensor AO value: 420
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

Usando a saída digital ou a analógica, você pode criar uma lógica baseada em limites para disparar alarmes, controlar indicadores de alerta ou capturar dados para aplicações de bafômetro.

Código do Arduino Nano ESP32 - Bafômetro com Detecção por Limites

Este código mostra como interpretar a saída analógica com limites calibrados para avaliar os níveis de consumo de álcool.

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-mq3-alcohol-sensor */ #define PIN_AO A5 // The Arduino Nano ESP32's pin connected to the AO pin of the MQ3 sensor // Threshold values - REPLACE THESE with your calibrated values! // Run calibration first to find these values for your sensor #define SOBER_THRESHOLD 120 // Below this = sober #define DRUNK_THRESHOLD 400 // Above this = drunk, between = drinking but within limits void setup() { // Initialize serial communication Serial.begin(9600); // Set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); // Warm-up message Serial.println("MQ3 Alcohol Sensor - Breathalyzer"); Serial.println("Warming up sensor..."); delay(20000); // 20 second warm-up for recently used sensor Serial.println("Sensor ready!"); Serial.println(); } void loop() { int gasLevel = analogRead(PIN_AO); // Read the analog value from sensor // Print sensor value Serial.print("Sensor Value: "); Serial.print(gasLevel); Serial.print(" | Status: "); // Determine status based on thresholds if (gasLevel < SOBER_THRESHOLD) { Serial.println("Stone Cold Sober"); } else if (gasLevel >= SOBER_THRESHOLD && gasLevel < DRUNK_THRESHOLD) { Serial.println("Drinking but within limits"); } else { Serial.println("DRUNK"); } delay(1000); // Wait 1 second between readings }

Passos Rápidos

  • Essencial: Primeiro calibre o seu sensor específico usando o exemplo de leitura analógica para encontrar os valores de limite adequados.
  • Substitua as constantes SOBER_THRESHOLD e DRUNK_THRESHOLD no código pelos seus valores calibrados.
  • Faça o upload do código modificado para o Arduino Nano ESP32
  • Teste expondo o sensor a vapor de álcool (álcool isopropílico ou vapor de álcool em gel)
  • Observe as mensagens de status no Serial Monitor
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
Sensor Value: 115 | Status: Stone Cold Sober Sensor Value: 118 | Status: Stone Cold Sober Sensor Value: 350 | Status: Drinking but within limits Sensor Value: 480 | Status: DRUNK Sensor Value: 520 | Status: DRUNK Sensor Value: 290 | Status: Drinking but within limits Sensor Value: 125 | Status: Stone Cold Sober
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

Aviso: Este é estritamente um projeto educacional. Nunca use este dispositivo como bafômetro legal nem para avaliar a segurança ao dirigir.

※ Nota:

Este tutorial usa a função analogRead() para ler valores de um ADC (Conversor Analógico-Digital) conectado a um sensor ou componente. O ADC do Arduino Nano ESP32 é adequado para projetos que não exigem alta precisão. No entanto, para projetos que precisam de medições precisas, tenha em mente o seguinte:

  • O ADC do Arduino Nano ESP32 não é perfeitamente preciso e pode precisar de calibração para obter resultados corretos. Cada placa Arduino Nano ESP32 pode variar um pouco, então a calibração é necessária para cada placa individualmente.
  • A calibração pode ser difícil, especialmente para iniciantes, e nem sempre dá os resultados exatos que você quer.

Para projetos que exigem alta precisão, considere usar um ADC externo (ex.: ADS1115) com o Arduino Nano ESP32 ou usar outro Arduino, como o Arduino Uno R4 WiFi, que tem um ADC mais confiável. Se você ainda quiser calibrar o ADC do Arduino Nano ESP32, consulte o ESP32 ADC Calibration Driver.

Vídeo

Referências de Funções

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!