ESP8266 - Sensor de Álcool MQ3

Este tutorial explica como conectar o ESP8266 ao sensor de álcool MQ3 para medir etanol e vapor de álcool no ambiente. O sensor MQ3 é valioso em dispositivos de teste de hálito, alarmes de detecção de álcool e aplicações de monitoramento da qualidade do ar.

Neste guia, vamos cobrir:

ESP8266 NodeMCU com módulo sensor de gás de álcool MQ3

Hardware Necessário

1×ESP8266 NodeMCU ESP-12F
1×Alternatively, ESP8266 D1 Mini NodeMCU ESP-12F
1×Alternatively, ESP8266 NodeMCU ESP-12E (Uno-form)
1×Micro USB Cable
1×Alternatively, ESP8266 NodeMCU ESP-12F (SMD-form)
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×Fios Jumper
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para ESP8266

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

Projetado como um Quimiorresistor de Semicondutor de Óxido Metálico (MOS), o MQ3 detecta álcool por meio de variações de resistência dentro do seu material ativo. Este sensor é especializado na detecção de vapor de etanol, com sensibilidade confiável em toda a sua faixa de medição.

Seu componente de detecção possui uma camada de Dióxido de Estanho (SnO2) sobre uma base cerâmica de Óxido de Alumínio. O aquecimento ativa o SnO2 para responder às moléculas de álcool presentes no ar. Uma malha protetora de aço inoxidável envolve o elemento, protegendo-o e ao mesmo tempo permitindo o acesso do gás à zona de detecção.

Implementações comuns incluem a construção de bafômetros caseiros, sistemas de detecção de comprometimento, dispositivos de aviso de vapor de álcool e medição de álcool na atmosfera.

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? A medida ppm (partes por milhão) indica a proporção da concentração. Com 500 ppm, você tem 500 moléculas de álcool para cada 1.000.000 de moléculas de gás no total, sendo que as 999.500 restantes são gases atmosféricos.

Pinagem

Há quatro pinos no módulo sensor MQ3:

  • Pino VCC: Forneça aqui a alimentação de +5V.
  • Pino GND: Conecte ao terra (0V).
  • Pino DO: A saída digital vai para LOW quando o álcool ultrapassa o limite e para HIGH quando está abaixo dele. Ajuste o limite com o potenciômetro da placa.
  • Pino AO: A tensão da saída analógica varia conforme a concentração de álcool. Mais álcool gera mais tensão.
diagrama de pinagem do módulo sensor de álcool MQ3

Dois LEDs indicadores fornecem retorno visual:

  • PWR-LED: Acende quando o módulo está alimentado.
  • DO-LED: Reflete a saída digital — acende durante a detecção e fica apagado nos demais casos.

Como Funciona

O mecanismo de detecção do MQ3 depende da variação da resistência do Dióxido de Estanho (SnO2):

Em ar não contaminado: O SnO2 aquecido liga moléculas de oxigênio à sua superfície, capturando elétrons em uma camada de depleção. Esses elétrons capturados formam uma barreira de condução, produzindo alta resistência.

Com álcool presente: As moléculas de álcool interagem com o oxigênio da superfície, liberando os elétrons capturados na matriz de dióxido de estanho. Os elétrons liberados aumentam a condutividade — mais álcool significa menos resistência.

São oferecidos dois modos de saída:

Saída Digital (pino DO):

  • O potenciômetro da placa define o nível do limite.
  • Álcool acima do limite leva o DO para LOW e ativa o LED.
  • Álcool abaixo do limite mantém o DO em HIGH com o LED apagado.

Saída Analógica (pino AO):

  • A tensão de saída acompanha a concentração de álcool.
  • Mais álcool = tensão elevada.
  • Menos álcool = tensão reduzida.
  • Observação: O potenciômetro afeta somente o limite digital, não a tensão analógica.

Aquecimento e Calibração

Requisitos de Pré-aquecimento

O funcionamento correto do sensor MQ3 exige um aquecimento adequado:

  • Primeira utilização ou armazenamento prolongado (30+ dias): Mantenha o aquecimento contínuo por 24-48 horas para estabilizar o sensor e obter medições precisas.
  • Uso regular: Um aquecimento rápido de 5-10 minutos é suficiente. As leituras iniciais podem estar elevadas, mas se normalizam rapidamente.

Aqueça o sensor conectando VCC e GND a 5V e ao terra — use uma fonte de alimentação ou os pinos de alimentação do ESP8266.

Encontrando Seus Valores de Limite

Sensores aquecidos como o MQ3 podem sofrer deriva durante o armazenamento. Para usos como bafômetro, estabeleça os limites com este procedimento de calibração:

  1. Registre a linha de base em ar limpo: Opere o sensor em ar fresco e registre a saída analógica (normalmente 100-150).
  2. Introduza vapor de álcool: Posicione álcool isopropílico ou álcool em gel perto do sensor (sem encostar nele), deixando o vapor chegar até ele. Anote as leituras elevadas (geralmente 400-900, dependendo da densidade do vapor).
  3. Estabeleça as faixas de detecção: A partir das suas medições, defina as zonas de limite:
  • Sem álcool presente: Abaixo da linha de base + 20 (exemplo: < 120)
  • Álcool moderado: Valores de faixa intermediária (exemplo: 120-400)
  • Álcool alto: Acima da faixa moderada (exemplo: > 400)

Crítico: Sensores e ambientes individuais geram valores diferentes. Sempre calibre o seu hardware específico antes da implementação.

Definindo o Limite Digital

Ajuste o nível de disparo 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 ativar.
  3. Gire lentamente no sentido anti-horário até o LED desativar por pouco.
  4. O limite está configurado.

Diagrama de Ligação

Como o módulo do sensor de álcool MQ3 tem duas saídas, você pode escolher usar uma ou as duas, dependendo do que precisa.

diagrama de ligação do sensor de álcool MQ3 com ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Para mais informações, veja Pinagem do ESP8266 e como alimentar o ESP8266 e outros componentes.

Código ESP8266 - Leitura da Saída Digital

/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp8266/esp8266-mq3-alcohol-sensor */ /* * This ESP8266 NodeMCU code was developed by newbiely.com * * This ESP8266 NodeMCU code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/esp8266/esp8266-mq3-alcohol-sensor */ #define PIN_DO D7 // The ESP8266 pin D7 connected to the DO pin of the MQ3 sensor void setup() { // Initialize serial communication Serial.begin(9600); // Initialize the ESP8266 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

Para começar com o ESP8266 na Arduino IDE, siga estes passos:

  • Confira o tutorial como configurar o ambiente para ESP8266 na Arduino IDE se esta for a sua primeira vez usando o ESP8266.
  • Faça a ligação dos componentes como mostrado no diagrama.
  • Conecte a placa ESP8266 ao seu computador usando um cabo USB.
  • Abra a Arduino IDE no seu computador.
  • Escolha a placa ESP8266 correta, como (por exemplo, NodeMCU 1.0 (ESP-12E Module)), e a respectiva porta COM.
  • Copie o código acima e abra na Arduino IDE
  • Clique no botão Upload na Arduino IDE para fazer o upload do código para o ESP8266
  • Coloque uma fonte de vapor de álcool perto do sensor MQ3 (álcool em gel ou álcool comum em algodão funciona bem)
  • Confira o resultado no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' 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
Nodemcu 1.0 (ESP-12E Module) on COM15
2

Lembre-se de que, se você notar que o estado do LED permanece sempre ligado ou desligado, você pode ajustar o potenciômetro para regular a sensibilidade do sensor.

Código ESP8266 - Leitura da Saída Analógica

/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp8266/esp8266-mq3-alcohol-sensor */ /* * This ESP8266 NodeMCU code was developed by newbiely.com * * This ESP8266 NodeMCU code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/esp8266/esp8266-mq3-alcohol-sensor */ #define PIN_AO A0 // The ESP8266 pin connected to the AO pin of the MQ3 sensor void setup() { // Initialize serial communication Serial.begin(9600); // 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 e abra na Arduino IDE
  • Clique no botão Upload na Arduino IDE para fazer o upload do código para o ESP8266
  • Leve vapor de álcool até o sensor (álcool em gel ou vapores de álcool isopropílico)
  • Confira o resultado no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' 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
Nodemcu 1.0 (ESP-12E Module) on COM15
2

A partir dos valores lidos do DO ou do AO, você pode criar uma lógica baseada em limites para acionar alarmes, controlar indicadores de aviso ou registrar dados para a função de bafômetro.

Código ESP8266 - Bafômetro com Detecção por Limite

Este exemplo demonstra o uso da saída analógica com limites calibrados para estimar os níveis de intoxicação.

/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp8266/esp8266-mq3-alcohol-sensor */ /* * This ESP8266 NodeMCU code was developed by newbiely.com * * This ESP8266 NodeMCU code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/esp8266/esp8266-mq3-alcohol-sensor */ #define PIN_AO A0 // The ESP8266 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); // 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

  • Crítico: Primeiro calibre o seu sensor usando o exemplo de leitura analógica para determinar valores de limite apropriados para o seu ambiente.
  • Atualize as constantes SOBER_THRESHOLD e DRUNK_THRESHOLD no código com os seus números calibrados.
  • Copie o código acima e abra na Arduino IDE
  • Clique no botão Upload na Arduino IDE para fazer o upload do código para o ESP8266
  • Teste com vapor de álcool (vapor de álcool isopropílico ou de álcool em gel)
  • Confira o resultado no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' 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
Nodemcu 1.0 (ESP-12E Module) on COM15
2

Aviso: Este projeto tem fins exclusivamente educacionais. Nunca confie neste dispositivo para funções legais de bafômetro nem para avaliações de segurança ao dirigir.

※ Nota:

Este tutorial usa a função analogRead() para obter dados de um ADC (Conversor Analógico-Digital) conectado a um sensor ou a outro componente. O ADC do ESP8266 funciona bem em projetos que não exigem leituras muito precisas. Mas lembre-se de que o ADC do ESP8266 não é muito preciso para medições detalhadas. Se o seu projeto precisa ser muito preciso, você pode querer usar um ADC separado, como o ADS1115, com o ESP8266, ou usar um Arduino como o Arduino Uno R4 WiFi, que tem um ADC mais confiável.

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!